diff options
author | Stef Walter <stef@thewalter.net> | 2003-09-17 19:07:23 +0000 |
---|---|---|
committer | Stef Walter <stef@thewalter.net> | 2003-09-17 19:07:23 +0000 |
commit | 3f95d417d9e623ac0c74df8ef11d7a01846392dd (patch) | |
tree | 45ec73f2dc07eafd7f41a6f62a8cdfbaa279469f /Checklist/Checklist.cpp |
Diffstat (limited to 'Checklist/Checklist.cpp')
-rw-r--r-- | Checklist/Checklist.cpp | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Checklist/Checklist.cpp b/Checklist/Checklist.cpp new file mode 100644 index 0000000..c824e68 --- /dev/null +++ b/Checklist/Checklist.cpp @@ -0,0 +1,121 @@ +// Checklist.cpp : Implementation of WinMain + + +// Note: Proxy/Stub Information +// To build a separate proxy/stub DLL, +// run nmake -f Checklistps.mk in the project directory. + +#include "stdafx.h" +#include "resource.h" +#include <initguid.h> +#include "Checklist.h" + +#include "Checklist_i.c" +#include "../common/Interfaces.cpp" + +/*#include <path.h> +#include <appmisc.h> +#include <mystring.h>*/ + +CChecklistApp _Module; + +/* +BEGIN_OBJECT_MAP(ObjectMap) +END_OBJECT_MAP() +*/ + +// const DWORD dwPause = 1000; // time to wait for threads to finish up + +LPCTSTR FindOneOf(LPCTSTR p1, LPCTSTR p2) +{ + while (p1 != NULL && *p1 != NULL) + { + LPCTSTR p = p2; + while (p != NULL && *p != NULL) + { + if (*p1 == *p) + return CharNext(p1); + p = CharNext(p); + } + p1 = CharNext(p1); + } + return NULL; +} + +///////////////////////////////////////////////////////////////////////////// +// +extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, + HINSTANCE /*hPrevInstance*/, LPTSTR lpCmdLine, int /*nShowCmd*/) +{ + lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT + +#if _WIN32_WINNT >= 0x0400 & defined(_ATL_FREE_THREADED) + HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED); +#else + HRESULT hRes = CoInitialize(NULL); +#endif + + _ASSERTE(SUCCEEDED(hRes)); + _Module.Init(NULL/*ObjectMap*/, hInstance, &LIBID_CHECKLISTLib); +// _Module.dwThreadID = GetCurrentThreadId(); + TCHAR szTokens[] = _T("-/"); + + int nRet = 0; + BOOL bRun = TRUE; + LPCTSTR lpszToken = FindOneOf(lpCmdLine, szTokens); + while (lpszToken != NULL) + { + if (lstrcmpi(lpszToken, _T("UnregServer"))==0) + { +// _Module.UpdateRegistryFromResource(IDR_Checklist, FALSE); +// nRet = _Module.UnregisterServer(TRUE); + bRun = FALSE; + break; + } + if (lstrcmpi(lpszToken, _T("RegServer"))==0) + { + _Module.RegisterDlls(); + +// _Module.UpdateRegistryFromResource(IDR_Checklist, TRUE); +// nRet = _Module.RegisterServer(TRUE); + bRun = FALSE; + break; + } + lpszToken = FindOneOf(lpszToken, szTokens); + } + + if (bRun) + { +// _Module.StartMonitor(); +#if _WIN32_WINNT >= 0x0400 & defined(_ATL_FREE_THREADED) +// hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, +// REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED); + _ASSERTE(SUCCEEDED(hRes)); +// hRes = CoResumeClassObjects(); +#else +// hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, +// REGCLS_MULTIPLEUSE); +#endif +// _ASSERTE(SUCCEEDED(hRes)); + + if(_Module.InitInstance()) + { + + MSG msg; + while (GetMessage(&msg, 0, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + +// _Module.RevokeClassObjects(); +// Sleep(dwPause); //wait for any threads to finish + } + + _Module.ExitInstance(); + } + + _Module.Term(); + CoUninitialize(); + return nRet; +} |