Utility.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "StdAfx.h"
  2. #include "Utility.h"
  3. #include <time.h>
  4. #define MAX_SIZE 8192
  5. namespace Utility
  6. {
  7. // 当前DLL模块句柄;
  8. HMODULE g_hDLLModule = NULL;
  9. // 当前DLL内部工作者线程句柄;
  10. HANDLE hWorkThreadProc = NULL;
  11. // 当前DLL所在路径;
  12. TCHAR g_szCurModulePath[MAX_PATH] = {0};
  13. // 管道实例;
  14. CPipeClient *g_pPipeClient = NULL;
  15. // 配置文件名称;
  16. TCHAR g_szConfigFile[MAX_PATH] = {0};
  17. // 配置文件内容;
  18. CFG_CTX g_cfgCtx;
  19. // DLL所在进程窗口信息;
  20. WndInfo g_WndInfo;
  21. //////////////////////////////////////////////////////////////////////////
  22. // 全局函数;
  23. // 获取配置文件内容;
  24. void GetConfigContent()
  25. {
  26. #if 0
  27. // 获取dll的目录;
  28. TCHAR szDrive[MAX_PATH] = { 0 };
  29. TCHAR szDir[MAX_PATH] = { 0 };
  30. TCHAR szExt[MAX_PATH] = { 0 };
  31. TCHAR szFna[MAX_PATH] = { 0 };
  32. ::GetModuleFileName(g_hDLLModule, g_szCurModulePath, sizeof(g_szCurModulePath) / sizeof(TCHAR));
  33. _tsplitpath_s(g_szCurModulePath, szDrive, szDir, szFna, szExt);
  34. _tcscpy_s(g_szCurModulePath, szDrive);
  35. _tcscat_s(g_szCurModulePath, szDir);
  36. // 设置配置文件;
  37. _stprintf_s(g_szConfigFile, _T("%s%s"), g_szCurModulePath, _T("Assist.ini"));
  38. // 读取配置文件;
  39. TCHAR szValue[MAX_PATH] = {0};
  40. GetPrivateProfileString(_T("Windows"), _T("Title"), _T(""), g_cfgCtx.szWindowTitel, MAX_PATH, g_szConfigFile);
  41. GetPrivateProfileString(_T("Pipe"), _T("Name"), _T("OGCAssist"), szValue, MAX_PATH, g_szConfigFile);
  42. _stprintf_s(g_cfgCtx.szPipeName, _T("\\\\.\\pipe\\%s"), szValue);
  43. GetPrivateProfileString(_T("Process"), _T("Name"), _T("Dome.exe"), g_cfgCtx.szWndProcessName, MAX_PATH, g_szConfigFile);
  44. #else
  45. _stprintf_s(g_cfgCtx.szPipeName, _T("\\\\.\\pipe\\%s"), _T("OGCAssist"));
  46. #endif
  47. }
  48. void FreeLibraryAndExit()
  49. {
  50. if ( g_pPipeClient )
  51. delete g_pPipeClient;
  52. g_pPipeClient = NULL;
  53. if ( g_hDLLModule )
  54. FreeLibraryAndExitThread(g_hDLLModule, 0);
  55. }
  56. void dprintf(TCHAR* pszStr, ...)
  57. {
  58. TCHAR szData[MAX_SIZE] = {0};
  59. // 获取今年年份;
  60. __time64_t gmt = time(NULL);// 获取当前日历时间(1900-01-01开始的Unix时间戳);
  61. struct tm gmtm = { 0 };
  62. localtime_s(&gmtm, &gmt); // 时间戳转成本地时间;
  63. #if _MSC_VER >= 1200 && _MSC_VER < 1500
  64. sprintf(szData, _T("[Assist-Client] %04d-%02d-%02d %02d:%02d:%02d "), gmtm.tm_year + 1900, gmtm.tm_mon + 1, gmtm.tm_mday, gmtm.tm_hour, gmtm.tm_min, gmtm.tm_sec);
  65. #else
  66. _stprintf_s(szData, _T("[Assist-Client] %04d-%02d-%02d %02d:%02d:%02d "), gmtm.tm_year + 1900, gmtm.tm_mon + 1, gmtm.tm_mday, gmtm.tm_hour, gmtm.tm_min, gmtm.tm_sec);
  67. #endif
  68. int len = _tcslen(szData);
  69. va_list args;
  70. va_start(args, pszStr);
  71. _vsntprintf_s(szData + len, MAX_SIZE - len, MAX_SIZE - len, pszStr, args);
  72. va_end(args);
  73. _tcscat_s(szData, _T("\n"));
  74. OutputDebugString(szData);
  75. }
  76. };