StdAfx.cpp
上传用户:zhuzhu0204
上传日期:2020-07-13
资源大小:13165k
文件大小:4k
- // stdafx.cpp : source file that includes just the standard includes
- // MyFireWall.pch will be the pre-compiled header
- // stdafx.obj will contain the pre-compiled type information
- #include "stdafx.h"
- FILE *g_pLogFile = NULL; // 日志文件
- CPIOControl *g_pIoControl = NULL; // 管理DLL共享数据
- CPRuleFile g_RuleFile; // 规则文件
- HWND g_hMainWnd; // 用于保存主对话框句柄
- CString strCurrentPath; // 保存防火墙当前路径
- void SaveLogFile(char *szContent)
- {
- char szOutput[256];
- CTime CurrentTime = CTime::GetCurrentTime();
- sprintf(szOutput, "%02d-%02d-%02d %02d:%02d:%02d %sn",
- CurrentTime.GetYear(), CurrentTime.GetMonth(), CurrentTime.GetDay(),
- CurrentTime.GetHour(), CurrentTime.GetMinute(), CurrentTime.GetSecond(), szContent);
- fprintf(g_pLogFile, szOutput);
- }
- CString GetFilePath(TCHAR *sFilename)
- {
- TCHAR sDrive[_MAX_DRIVE];
- TCHAR sDir[_MAX_DIR];
- TCHAR sFname[_MAX_FNAME];
- TCHAR sExt[_MAX_EXT];
-
- _tsplitpath(sFilename, sDrive, sDir, sFname, sExt);
-
- CString rVal(CString(sDrive) + CString(sDir));
- int nLen = rVal.GetLength();
-
- if (rVal.GetAt(nLen-1) != _T('\'))
- rVal += _T("\");
-
- return rVal;
- }
- CString GetFileName(TCHAR *sFilename)
- {
- TCHAR sDrive[_MAX_DRIVE];
- TCHAR sDir[_MAX_DIR];
- TCHAR sFname[_MAX_FNAME];
- TCHAR sExt[_MAX_EXT];
-
- _tsplitpath(sFilename, sDrive, sDir, sFname, sExt);
-
- CString rVal;
- rVal.Format(_T("%s%s"), sFname, sExt);
-
- return rVal;
- }
- BOOL GetVersionFromPath(LPTSTR szPath, PFileVersion pFileVersion)
- {
- DWORD dwLen = 0;
- char *pInfo = NULL;
- CString strRet = "";
-
- dwLen = GetFileVersionInfoSize(szPath, 0);
- if (0 == dwLen)
- {
- return FALSE;
- }
-
- pInfo =new char [dwLen+1];
-
- if(!GetFileVersionInfo(szPath, 0, dwLen, pInfo))
- {
- delete pInfo;
- return FALSE;
- }
-
- // 为了方便访问,定义结构体 LANGANDCODEPAGE
- struct LANGANDCODEPAGE
- {
- WORD wLanguage;
- WORD wCodePage;
- }*lpTranslate;
-
- // Read the list of languages and code pages.
- UINT cbTranslate;
- ::VerQueryValue(pInfo, L"\VarFileInfo\Translation", (LPVOID*)&lpTranslate, &cbTranslate );
-
- /* Read the file description for each language and code page.
- // 资源的各种名称
- CHAR* szVersion[] = {
- "Comments", "InternalName", "ProductName",
- "CompanyName", "LegalCopyright", "ProductVersion",
- "FileDescription", "LegalTrademarks", "PrivateBuild",
- "FileVersion", "OriginalFilename", "SpecialBuild"
- };
- */
- // dwBytes最大值应该是301.
- // 应用仅仅允许输入最多300个字符
- UINT dwBytes;
- TCHAR *lpBuffer;
- TCHAR szSubBlock[256];
-
- // 填充公司名称
- wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\CompanyName", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
-
- if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))
- {
- pFileVersion->CompanyName.Format(L"%s",lpBuffer);
- }
-
- // 填充文件描述
- wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\FileDescription", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
-
- if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))
- {
- pFileVersion->FileDescription.Format(L"%s",lpBuffer);
- }
-
- // 填充法律版权
- wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\LegalCopyright", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
-
- if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))
- {
- pFileVersion->LegalCopyright.Format(L"%s",lpBuffer);
- }
-
- // 填充产品版本
- wsprintf(szSubBlock, L"\StringFileInfo\%04x%04x\ProductName", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage);
-
- if(::VerQueryValue(pInfo, szSubBlock, (LPVOID *)&lpBuffer, &dwBytes))
- {
- pFileVersion->ProductVersion.Format(L"%s",lpBuffer);
- }
-
- delete [] pInfo;
-
- return TRUE;
- }