Global.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #include "StdAfx.h"
  2. #include "Global.h"
  3. #include "CritSection.h"
  4. #include <locale.h>
  5. int g_bMsgRoad=0;
  6. int g_bMsgRoadtemp=0;
  7. int g_bDebug=0;
  8. int g_bSend=1;
  9. int g_iLeft=0; // Jeff.通过查询短信服务商获得的短信可用的余额;
  10. int g_iUsed=0;
  11. int g_nQuery=-1;
  12. namespace Global
  13. {
  14. TCHAR g_szModulePath[MAX_PATH] = _T(""); // 软件目录;
  15. TCHAR g_szModuleFileName[MAX_PATH] = _T(""); // 软件名称;
  16. TCHAR g_szConnectString[MAX_PATH] = _T(""); // DB连接串;
  17. // 服务器信息;
  18. TCHAR g_szDBSource[MAX_PATH] = _T(""); // 数据库源(服务所在IP或计算机名);
  19. TCHAR g_szDBSourcePort[MAX_PATH] = _T(""); // 数据库源端口;
  20. DWORD g_dwDBServerPort = 0; // 数据库源端口;
  21. TCHAR g_szDBAccount[MAX_PATH] = _T(""); // 数据库登录用户;
  22. TCHAR g_szDBPassWord[MAX_PATH] = _T(""); // 数据库登录密码;
  23. TCHAR g_szDBName[MAX_PATH] = _T(""); // 数据库名称;
  24. DWORD g_dwSvrPort = 0;
  25. DWORD g_dwDBPoolMaxCount = 1; // 数据库连接池最大对象数;
  26. DWORD g_dwDBPoolDef = 1; // 数据库连接池默认对象数;
  27. TCHAR g_szSMSAccount[MAX_PATH] = _T("");
  28. TCHAR g_szSMSPassword[MAX_PATH] = _T("");
  29. /************************************************************************/
  30. /* 函数:[5/20/2016 IT];
  31. /* 描述:;
  32. /* 参数:;
  33. /* [IN] :;
  34. /* [OUT] :;
  35. /* [IN/OUT] :;
  36. /* 返回:void;
  37. /* 注意:;
  38. /* 示例:;
  39. /*
  40. /* 修改:;
  41. /* 日期:;
  42. /* 内容:;
  43. /************************************************************************/
  44. int GetIniInfo(const TCHAR *szPath, const TCHAR *szIniName)
  45. {
  46. TCHAR szDrive[_MAX_DRIVE] = {0};
  47. TCHAR szDir[_MAX_DIR] = {0};
  48. TCHAR szFName[_MAX_FNAME] = {0};
  49. TCHAR szExt[_MAX_EXT] = {0};
  50. ::GetModuleFileName(NULL, g_szModulePath, sizeof(g_szModulePath) / sizeof(TCHAR));
  51. _stprintf_s(g_szModulePath, MAX_PATH, _T("%s"), g_szModulePath);
  52. _tsplitpath_s(g_szModulePath, szDrive, szDir, szFName, szExt);
  53. _tcscpy_s(g_szModulePath, szDrive);
  54. _tcscat_s(g_szModulePath, szDir);
  55. // -----------------------------------------------------//
  56. TCHAR szIniPath[MAX_PATH] = {0};
  57. if (szPath != NULL && szIniName != NULL)
  58. _stprintf_s(szIniPath, _T("%s%s"), szPath, szIniName);
  59. else
  60. _stprintf_s(szIniPath, _T("%sServiceInfo.ini"), g_szModulePath);
  61. HANDLE hFile = CreateFile(szIniPath, 0/*GENERIC_READ*/, 0, NULL, OPEN_EXISTING, 0, NULL);
  62. if (ERROR_FILE_NOT_FOUND == GetLastError())
  63. return -1;
  64. CloseHandle(hFile);
  65. // 获取服务器端信息;
  66. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbSource"), _T(""), g_szDBSource, MAX_PATH, szIniPath);
  67. g_dwDBServerPort = GetPrivateProfileInt(_T("DatabaseInfo"), _T("dbServerPort"), 0, szIniPath);
  68. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbAccount"), _T(""), g_szDBAccount, MAX_PATH, szIniPath);
  69. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbPassWord"), _T(""), g_szDBPassWord, MAX_PATH, szIniPath);
  70. GetPrivateProfileString(_T("DatabaseInfo"), _T("dbName"), _T(""), g_szDBName, MAX_PATH, szIniPath);
  71. g_dwDBPoolMaxCount = GetPrivateProfileInt(_T("DatabaseInfo"), _T("dbpoolMaxObj"), 1, szIniPath);
  72. g_dwDBPoolDef = GetPrivateProfileInt(_T("DatabaseInfo"), _T("dbpoolDef"), 1, szIniPath);
  73. g_dwSvrPort = GetPrivateProfileInt(_T("NetWorkInfo"), _T("TCPChatPort"), 0, szIniPath);
  74. if (g_dwDBServerPort != 0)
  75. {
  76. if ( _tcscmp(g_szDBAccount, _T("")) == 0 )
  77. _stprintf_s(g_szConnectString, DB_SW_CONN_WITH_PORT, g_szDBSource, g_dwDBServerPort,g_szDBName);
  78. else
  79. _stprintf_s(g_szConnectString, DB_SS_CONN_WITH_PORT,g_szDBSource, g_dwDBServerPort, g_szDBName, g_szDBAccount, g_szDBPassWord);
  80. }
  81. else
  82. {
  83. if ( _tcscmp(g_szDBAccount, _T("")) == 0 )
  84. _stprintf_s(g_szConnectString, DB_SW_CONN_WITHOUT_PORT, g_szDBSource, g_szDBName);
  85. else
  86. _stprintf_s(g_szConnectString, DB_SS_CONN_WITHOUT_PORT,g_szDBSource, g_szDBName, g_szDBAccount, g_szDBPassWord);
  87. }
  88. // 云盘账号;
  89. GetPrivateProfileString(_T("SMSInfo"), _T("SMSAccount"), _T(""), g_szSMSAccount, MAX_PATH, szIniPath);
  90. // 云盘密码;
  91. GetPrivateProfileString(_T("SMSInfo"), _T("SMSPassword"), _T(""), g_szSMSPassword, MAX_PATH, szIniPath);
  92. // 解密云盘密码;
  93. //CString strResult;
  94. //des_crypt((CString)g_szSMSPassword, strResult, DES_DECRYPT);
  95. //_stprintf_s(g_szSMSPassword, MAX_PATH, _T("%s"), strResult.GetString());
  96. return 0;
  97. }
  98. /************************************************************************/
  99. /* 函数:WriteTextLog[7/28/2016 IT];
  100. /* 描述:写文本日志;
  101. /* 参数:;
  102. /* [IN] :;
  103. /* 返回:void;
  104. /* 注意:;
  105. /* 示例:;
  106. /*
  107. /* 修改:;
  108. /* 日期:;
  109. /* 内容:;
  110. /************************************************************************/
  111. void WriteTextLog(const TCHAR *format, ...)
  112. {
  113. try
  114. {
  115. static ThreadSection _critSection;
  116. AutoThreadSection aSection(&_critSection);
  117. // 解析出日志路径;
  118. TCHAR szlogpath[MAX_PATH] = {0};
  119. static TCHAR szModulePath[MAX_PATH] = {0};
  120. static TCHAR szFna[_MAX_DIR] = { 0 };
  121. if ( szModulePath[0] == _T('\0') )
  122. {
  123. TCHAR szDrive[_MAX_DRIVE] = { 0 };
  124. TCHAR szDir[_MAX_DIR] = { 0 };
  125. TCHAR szExt[_MAX_DIR] = { 0 };
  126. ::GetModuleFileName(NULL, szModulePath, sizeof(szModulePath) / sizeof(TCHAR));
  127. _tsplitpath_s(szModulePath, szDrive, szDir, szFna, szExt);
  128. _tcscpy_s(szModulePath, szDrive);
  129. _tcscat_s(szModulePath, szDir);
  130. }
  131. _stprintf_s(szlogpath, _T("%s日志\\%s%s.txt"), szModulePath, szFna, CTime::GetCurrentTime().Format("[%Y-%m-%d]").GetString());
  132. // 打开或创建文件;
  133. CStdioFile fp;
  134. if (PathFileExists(szlogpath))
  135. {
  136. if (fp.Open(szlogpath, CFile::modeWrite) == FALSE)
  137. {
  138. return;
  139. }
  140. fp.SeekToEnd();
  141. }
  142. else
  143. {
  144. if ( !fp.Open(szlogpath, CFile::modeCreate | CFile::modeWrite) )
  145. return;
  146. }
  147. // 格式化前设置语言区域;
  148. TCHAR* old_locale = _tcsdup(_tsetlocale(LC_CTYPE, NULL));
  149. _tsetlocale(LC_CTYPE, _T("chs"));//设定中文;
  150. // 格式化日志内容;
  151. va_list args = NULL;
  152. int len = 0;
  153. TCHAR *buffer = NULL;
  154. va_start( args, format );
  155. // _vscprintf doesn't count. terminating '\0'
  156. len = _vsctprintf_p( format, args );
  157. if ( len == -1 )
  158. {
  159. goto clear;
  160. }
  161. len++;
  162. buffer = (TCHAR*)malloc( len * sizeof(TCHAR) );
  163. _vstprintf_s( buffer, len, format, args ); // C4996
  164. // Note: vsprintf is deprecated; consider using vsprintf_s instead
  165. // 将日志内容输入到文件中;
  166. fp.WriteString( CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S ")) );
  167. fp.WriteString(buffer);
  168. fp.WriteString(_T("\n"));
  169. // 关闭文件,释放资源并设置回原语言区域;
  170. free( buffer );
  171. clear:
  172. _tsetlocale(LC_CTYPE, old_locale);
  173. free(old_locale);//还原区域设定;
  174. fp.Close();
  175. }
  176. catch (CException *e)
  177. {
  178. e->ReportError();
  179. e->Delete();
  180. }
  181. }
  182. };