getfilever.cpp

来自「获取文件版本号及最后修改时间的几个函数」· C++ 代码 · 共 75 行

CPP
75
字号
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 + =
减小字号Ctrl + -
显示快捷键?