summaryrefslogtreecommitdiff
path: root/Checklist/Checklist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Checklist/Checklist.cpp')
-rw-r--r--Checklist/Checklist.cpp121
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;
+}