summaryrefslogtreecommitdiff
path: root/win32/droplet/dropletmain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'win32/droplet/dropletmain.cpp')
-rw-r--r--win32/droplet/dropletmain.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/win32/droplet/dropletmain.cpp b/win32/droplet/dropletmain.cpp
new file mode 100644
index 0000000..9610ce2
--- /dev/null
+++ b/win32/droplet/dropletmain.cpp
@@ -0,0 +1,76 @@
+/*
+ * AUTHOR
+ * N. Nielsen
+ *
+ * LICENSE
+ * This software is in the public domain.
+ *
+ * The software is provided "as is", without warranty of any kind,
+ * express or implied, including but not limited to the warranties
+ * of merchantability, fitness for a particular purpose, and
+ * noninfringement. In no event shall the author(s) be liable for any
+ * claim, damages, or other liability, whether in an action of
+ * contract, tort, or otherwise, arising from, out of, or in connection
+ * with the software or the use or other dealings in the software.
+ *
+ * SUPPORT
+ * Send bug reports to: <nielsen@memberwebs.com>
+ */
+
+#include "stdafx.h"
+#include "resource.h"
+#include <initguid.h>
+#include "replace.h"
+
+// ATL Support
+CComModule _Module;
+
+BEGIN_OBJECT_MAP(ObjectMap)
+END_OBJECT_MAP()
+
+
+// _tWinMain: -------------------------------------------------------------
+// Our starting point. Silly name
+
+extern "C" int WINAPI _tWinMain(HINSTANCE hInstance,
+ HINSTANCE /*hPrevInstance*/, LPTSTR /* lpCmdLine */, int /*nShowCmd*/)
+{
+ // ATL support
+ HRESULT hRes = CoInitialize(NULL);
+ _ASSERTE(SUCCEEDED(hRes));
+ _Module.Init(ObjectMap, hInstance, NULL);
+ HRESULT hr = S_OK;
+
+ // Make sure we have something to process
+ if(__argc <= 1)
+ {
+ MessageBox(NULL, _T("Drag and drop files onto this droplet to process them."), _T("Rep Droplet"), MB_OK | MB_ICONINFORMATION);
+ hr = E_FAIL;
+ }
+
+ else
+ {
+ Replace replace;
+ if(SUCCEEDED(replace.initialize()))
+ {
+ for(int i = 1; i < __argc; i++)
+ {
+ // Process arguments appropriately
+ DWORD attrs = GetFileAttributes(__argv[i]);
+ if(attrs != 0xFFFFFFFF && attrs & FILE_ATTRIBUTE_DIRECTORY)
+ hr = replace.replaceFolder(__argv[i]);
+ else
+ hr = replace.replaceSingleFile(__argv[i]);
+
+ if(FAILED(hr))
+ break;
+ }
+
+ replace.terminate();
+ }
+ }
+
+ _Module.Term();
+ CoUninitialize();
+ return SUCCEEDED(hr) ? 0 : 1;
+}