StdAfx.cpp
上传用户:zhuzhu0204
上传日期:2020-07-13
资源大小:13165k
文件大小:4k
开发平台:

Visual C++

  1. // stdafx.cpp : source file that includes just the standard includes
  2. // MyFireWall.pch will be the pre-compiled header
  3. // stdafx.obj will contain the pre-compiled type information
  4. #include "stdafx.h"
  5. FILE        *g_pLogFile = NULL; // 日志文件
  6. CPIOControl *g_pIoControl = NULL; // 管理DLL共享数据
  7. CPRuleFile g_RuleFile; // 规则文件
  8. HWND        g_hMainWnd; // 用于保存主对话框句柄
  9. CString strCurrentPath; // 保存防火墙当前路径
  10. void SaveLogFile(char *szContent)
  11. {
  12. char szOutput[256];
  13. CTime CurrentTime = CTime::GetCurrentTime();
  14. sprintf(szOutput, "%02d-%02d-%02d %02d:%02d:%02d  %sn", 
  15. CurrentTime.GetYear(), CurrentTime.GetMonth(), CurrentTime.GetDay(),
  16. CurrentTime.GetHour(), CurrentTime.GetMinute(), CurrentTime.GetSecond(), szContent);
  17. fprintf(g_pLogFile, szOutput);
  18. }
  19. CString GetFilePath(TCHAR *sFilename) 
  20. {
  21. TCHAR sDrive[_MAX_DRIVE];
  22. TCHAR sDir[_MAX_DIR];
  23. TCHAR sFname[_MAX_FNAME];
  24. TCHAR sExt[_MAX_EXT];
  25. _tsplitpath(sFilename, sDrive, sDir, sFname, sExt);
  26. CString rVal(CString(sDrive) + CString(sDir));
  27. int nLen = rVal.GetLength();
  28. if (rVal.GetAt(nLen-1) != _T('\'))
  29. rVal += _T("\");
  30. return rVal;
  31. }  
  32. CString GetFileName(TCHAR *sFilename) 
  33. {
  34. TCHAR sDrive[_MAX_DRIVE];
  35. TCHAR sDir[_MAX_DIR];
  36. TCHAR sFname[_MAX_FNAME];
  37. TCHAR sExt[_MAX_EXT];
  38. _tsplitpath(sFilename, sDrive, sDir, sFname, sExt);
  39. CString rVal;
  40. rVal.Format(_T("%s%s"), sFname, sExt);
  41. return rVal;
  42. }  
  43. BOOL GetVersionFromPath(LPTSTR szPath, PFileVersion pFileVersion)
  44. {
  45. DWORD dwLen = 0;
  46.     char  *pInfo = NULL;
  47. CString strRet = "";
  48.     dwLen = GetFileVersionInfoSize(szPath, 0);
  49.     if (0 == dwLen)
  50. {
  51. return FALSE;
  52. }
  53.     pInfo =new char [dwLen+1]; 
  54.     if(!GetFileVersionInfo(szPath, 0, dwLen, pInfo))
  55.     {
  56. delete pInfo;
  57. return FALSE;
  58.     }
  59. // 为了方便访问,定义结构体 LANGANDCODEPAGE
  60. struct LANGANDCODEPAGE
  61. {   
  62. WORD   wLanguage;   
  63. WORD   wCodePage;   
  64. }*lpTranslate;   
  65.     
  66. // Read the list of languages and code pages.   
  67. UINT cbTranslate;   
  68. ::VerQueryValue(pInfo, L"\VarFileInfo\Translation", (LPVOID*)&lpTranslate, &cbTranslate   );   
  69.     
  70. /* Read the file description for each language and code page.   
  71. // 资源的各种名称   
  72. CHAR*   szVersion[]   =   {     
  73. "Comments",   "InternalName",   "ProductName",   
  74. "CompanyName",   "LegalCopyright",   "ProductVersion",   
  75. "FileDescription",   "LegalTrademarks",   "PrivateBuild",   
  76. "FileVersion",   "OriginalFilename",   "SpecialBuild"     
  77. };
  78. */
  79. // dwBytes最大值应该是301.   
  80. // 应用仅仅允许输入最多300个字符  
  81. UINT dwBytes;   
  82. TCHAR *lpBuffer;   
  83. TCHAR szSubBlock[256];
  84. // 填充公司名称
  85. wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\CompanyName", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
  86. if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))   
  87. {
  88. pFileVersion->CompanyName.Format(L"%s",lpBuffer);
  89. }
  90. // 填充文件描述
  91. wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\FileDescription", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
  92. if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))   
  93. {
  94. pFileVersion->FileDescription.Format(L"%s",lpBuffer);
  95. }
  96. // 填充法律版权
  97. wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\LegalCopyright", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
  98. if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))   
  99. {
  100. pFileVersion->LegalCopyright.Format(L"%s",lpBuffer);
  101. }
  102. // 填充产品版本
  103. wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\ProductName", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
  104. if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))   
  105. {
  106. pFileVersion->ProductVersion.Format(L"%s",lpBuffer);
  107. }
  108.     delete [] pInfo;
  109. return TRUE;
  110. }