Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern "C"
- BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
- {
- if (dwReason == DLL_PROCESS_ATTACH)
- {
- DWORD length = ::GetModuleFileName(hInstance, fullFilename, MAX_PATH);
- // ...
- }
- }
- CString modFilename;
- if(GetModuleFileName(AfxGetInstanceHandle(), modFilename.GetBuffer(MAX_PATH), MAX_PATH) > 0)
- {
- modFilename.ReleaseBuffer(MAX_PATH);
- DWORD dwHandle = 0;
- DWORD dwSize = GetFileVersionInfoSize(modFilename, &dwHandle);
- if(dwSize > 0)
- {
- LPBYTE lpInfo = new BYTE[dwSize];
- ZeroMemory(lpInfo, dwSize);
- if(GetFileVersionInfo(modFilename, 0, dwSize, lpInfo))
- {
- //// Use the version information block to obtain the FILEVERSION.
- //// This will extract language specific part of versio resources. 040904E4 is English(US) locale,
- //// it should match to your project
- //UINT valLen = MAX_PATH;
- //LPVOID valPtr = NULL;
- //if(::VerQueryValue(lpInfo,
- // TEXT("\StringFileInfo\040904E4\FileVersion"),
- // &valPtr,
- // &valLen))
- //{
- // CString valStr((LPCTSTR)valPtr);
- // AfxMessageBox(valStr);
- //}
- //// This will extract so called FIXED portion of the version info
- UINT valLen = MAX_PATH;
- LPVOID valPtr = NULL;
- if(::VerQueryValue(lpInfo,
- TEXT("\"),
- &valPtr,
- &valLen))
- {
- VS_FIXEDFILEINFO* pFinfo = (VS_FIXEDFILEINFO*)valPtr;
- // convert to text
- CString valStr;
- valStr.Format(_T("%d.%d.%d.%d"),
- (pFinfo->dwFileVersionMS >> 16) & 0xFFFF,
- (pFinfo->dwFileVersionMS) & 0xFFFF,
- (pFinfo->dwFileVersionLS >> 16) & 0xFFFF,
- (pFinfo->dwFileVersionLS) & 0xFFFF
- );
- AfxMessageBox(valStr);
- }
- }
- delete[] lpInfo;
- }
- }
Add Comment
Please, Sign In to add comment