OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / contrib / issue-tracker-plugins / ExampleAtlPlugin / ExampleAtlPlugin.cpp
1 // ExampleAtlPlugin.cpp : Implementation of DLL Exports.\r
2 \r
3 \r
4 #include "stdafx.h"\r
5 #include "resource.h"\r
6 #include "ExampleAtlPlugin_i.h"\r
7 #include "dllmain.h"\r
8 \r
9 // Used to determine whether the DLL can be unloaded by OLE\r
10 STDAPI DllCanUnloadNow(void)\r
11 {\r
12     return _AtlModule.DllCanUnloadNow();\r
13 }\r
14 \r
15 \r
16 // Returns a class factory to create an object of the requested type\r
17 STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)\r
18 {\r
19     return _AtlModule.DllGetClassObject(rclsid, riid, ppv);\r
20 }\r
21 \r
22 \r
23 // DllRegisterServer - Adds entries to the system registry\r
24 STDAPI DllRegisterServer(void)\r
25 {\r
26     // registers object, typelib and all interfaces in typelib\r
27     HRESULT hr = _AtlModule.DllRegisterServer();\r
28         return hr;\r
29 }\r
30 \r
31 \r
32 // DllUnregisterServer - Removes entries from the system registry\r
33 STDAPI DllUnregisterServer(void)\r
34 {\r
35         HRESULT hr = _AtlModule.DllUnregisterServer();\r
36         return hr;\r
37 }\r
38 \r
39 // DllInstall - Adds/Removes entries to the system registry per user\r
40 //              per machine.    \r
41 STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)\r
42 {\r
43     HRESULT hr = E_FAIL;\r
44     static const wchar_t szUserSwitch[] = _T("user");\r
45 \r
46     if (pszCmdLine != NULL)\r
47     {\r
48         if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)\r
49         {\r
50                 AtlSetPerUserRegistration(true);\r
51         }\r
52     }\r
53 \r
54     if (bInstall)\r
55     {   \r
56         hr = DllRegisterServer();\r
57         if (FAILED(hr))\r
58         {       \r
59                 DllUnregisterServer();\r
60         }\r
61     }\r
62     else\r
63     {\r
64         hr = DllUnregisterServer();\r
65     }\r
66 \r
67     return hr;\r
68 }\r
69 \r
70 \r