TSPlug.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // TSPlug.cpp : DLL 导出的实现。
  2. /*
  3. 本源码由TC简单软件科技有限公司开源,功能可以自由修改、发布、
  4. 长沙简单软件科技有限公司对于源码不做后期维护,,请大家在使用过程中遵循开源协议
  5. */
  6. #include "stdafx.h"
  7. #include "resource.h"
  8. #include "TSPlug_i.h"
  9. #include "dllmain.h"
  10. // 用于确定 DLL 是否可由 OLE 卸载
  11. STDAPI DllCanUnloadNow(void)
  12. {
  13. return _AtlModule.DllCanUnloadNow();
  14. }
  15. // 返回一个类工厂以创建所请求类型的对象
  16. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
  17. {
  18. return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
  19. }
  20. // DllRegisterServer - 将项添加到系统注册表
  21. STDAPI DllRegisterServer(void)
  22. {
  23. // 注册对象、类型库和类型库中的所有接口
  24. HRESULT hr = _AtlModule.DllRegisterServer();
  25. return hr;
  26. }
  27. // DllUnregisterServer - 将项从系统注册表中移除
  28. STDAPI DllUnregisterServer(void)
  29. {
  30. HRESULT hr = _AtlModule.DllUnregisterServer();
  31. return hr;
  32. }
  33. // DllInstall - 按用户或者按计算机在系统注册表中添加/删除
  34. // 项。
  35. STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
  36. {
  37. HRESULT hr = E_FAIL;
  38. static const wchar_t szUserSwitch[] = _T("user");
  39. if (pszCmdLine != NULL)
  40. {
  41. if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
  42. {
  43. AtlSetPerUserRegistration(true);
  44. }
  45. }
  46. if (bInstall)
  47. {
  48. hr = DllRegisterServer();
  49. if (FAILED(hr))
  50. {
  51. DllUnregisterServer();
  52. }
  53. }
  54. else
  55. {
  56. hr = DllUnregisterServer();
  57. }
  58. return hr;
  59. }