TSPlug.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
  35. {
  36. HRESULT hr = E_FAIL;
  37. static const wchar_t szUserSwitch[] = _T("user");
  38. if (pszCmdLine != NULL)
  39. {
  40. if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
  41. {
  42. AtlSetPerUserRegistration(true);
  43. }
  44. }
  45. if (bInstall)
  46. {
  47. hr = DllRegisterServer();
  48. if (FAILED(hr))
  49. {
  50. DllUnregisterServer();
  51. }
  52. }
  53. else
  54. {
  55. hr = DllUnregisterServer();
  56. }
  57. return hr;
  58. }