diff options
Diffstat (limited to 'win32/droplet/dropletmain.cpp')
-rw-r--r-- | win32/droplet/dropletmain.cpp | 76 |
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; +} |