📄 getfilever.cpp
字号:
BOOL GetLastWriteTime(HANDLE hFile, char * lpszString)
{
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC, stLocal;
// Retrieve the file times for the file.
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
return FALSE;
// Convert the last-write time to local time.
FileTimeToSystemTime(&ftWrite, &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
// Build a string showing the date and time.
_stprintf(lpszString, _T("%d-%02d-%02d %02d:%02d:%02d"),
stLocal.wYear, stLocal.wMonth, stLocal.wDay,
stLocal.wHour, stLocal.wMinute, stLocal.wSecond);
return TRUE;
}
TCHAR * GetFileLastModify(TCHAR * szFileName, TCHAR * szLastModify)
{
HANDLE hFile = CreateFile(szFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING,0,NULL);
if (hFile == INVALID_HANDLE_VALUE)
return _T("");
if( !GetLastWriteTime( hFile, szLastModify))
{
CloseHandle(hFile);
return _T("");
}
CloseHandle(hFile);
return szLastModify;
}
TCHAR * GetFileVer(TCHAR * szFileName, TCHAR * szSubBlock, TCHAR * szVerInfo)
{
LANGANDCODEPAGE * lpTranslate;
DWORD dwHandle,InfoSize;
CString strVersion;
//首先获得版本信息资源的长度
InfoSize = GetFileVersionInfoSize(szFileName, &dwHandle);
//将版本信息资源读入缓冲区
if(InfoSize == 0)
return _T("");
TCHAR * InfoBuf = new char[InfoSize];
if(!GetFileVersionInfo(szFileName, 0, InfoSize, InfoBuf))
{
delete [] InfoBuf;
return _T("");
}
//获得生成文件使用的代码页及文件版本
unsigned int cbTranslate = 0;
VerQueryValue(InfoBuf, _T("\\VarFileInfo\\Translation"), (LPVOID*)&lpTranslate, &cbTranslate);
TCHAR SubBlock[256];
_stprintf( SubBlock, _T("\\StringFileInfo\\%04x%04x\\%s"),
lpTranslate[0].wLanguage,
lpTranslate[0].wCodePage,
szSubBlock);
void * lpBuffer = NULL;
unsigned int dwBytes = 0;
VerQueryValue(InfoBuf, SubBlock, &lpBuffer, &dwBytes);
_tcscpy(szVerInfo, (TCHAR *)lpBuffer);
delete [] InfoBuf;
return (TCHAR *)szVerInfo;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -