我有一個正在編譯爲DLL的項目,以及手動添加的資源文件。 我正在尋找Win32 API,它可以幫助我找到資源文件並從中獲取信息和數據(使用C++)。用於打開和從資源文件獲取數據的Win32 api
例如 - 讓公司名稱或版本..
誰能幫助我呢?
謝謝。
我有一個正在編譯爲DLL的項目,以及手動添加的資源文件。 我正在尋找Win32 API,它可以幫助我找到資源文件並從中獲取信息和數據(使用C++)。用於打開和從資源文件獲取數據的Win32 api
例如 - 讓公司名稱或版本..
誰能幫助我呢?
謝謝。
呼叫下面通過TEXT( 「公司名稱」)的功能lpszVersionType '
#pragma comment(lib, "version.lib")
BOOL GetVersionString(LPCTSTR lpszModuleFileName, LPCTSTR lpszVersionType, LPTSTR lpszVersionString)
{ int i, j;
unsigned long u;
LPTSTR pBlock, pTmpVersion;
TCHAR buf[_MAX_PATH];
BOOL bRet = FALSE;
struct LANGANDCODEPAGE
{ WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
if ((i = GetFileVersionInfoSize(lpszModuleFileName, &u)) == 0) // !!
return FALSE;
i++;
pBlock = (LPTSTR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, i * sizeof(TCHAR));
if (pBlock == NULL) // !!
return FALSE;
if (GetFileVersionInfo(lpszModuleFileName, u, i, pBlock))
{ VerQueryValue(pBlock, TEXT ("\\VarFileInfo\\Translation"), (LPVOID*)&lpTranslate, (UINT *)&u); // // Read the list of languages and code pages
j = (int)(u/sizeof(struct LANGANDCODEPAGE));
for (i = 0; i < j; i++)
{ wsprintf(buf, TEXT ("\\StringFileInfo\\%04x%04x\\%s"), lpTranslate[i].wLanguage, lpTranslate[i].wCodePage, lpszVersionType);
VerQueryValue(pBlock, buf, (void **)&pTmpVersion, (UINT *)&u);
if (u > 0)
{ lstrcpy(lpszVersionString, pTmpVersion);
bRet = TRUE;
break;
}
}
}
HeapFree(GetProcessHeap(), 0, pBlock);
return bRet;
}
`
謝謝,我應該把什麼放在裏面:lpszVersionString?並且第一個參數是DLL的路徑> – user1386966
lpszVersionString是輸出參數 例如 char szCompanyName [_MAX_PATH]; GetVersionString(lpszModuleFileName,TEXT(「CompanyName」),szCompanyName); –
我總是得到:在函數「struct_ver * _cdecl ...」中引用的錯誤LNK2019Lun解析的外部符號_GetFileVersionInfo @ 16是什麼意思?難道我做錯了什麼? – user1386966
試圖扭轉?你能解釋一下嗎?! –
FindResource,LoadResource,SizeofResource,LockResource,UnlockResource FreeResource。 [[「WIN32 DLL資源加載」](https://www.google.com/search?client=safari&rls=zh-CN&q=WIN32+DLL+Resource+Loading&ie=UTF-8&oe=UTF-8)上約有一百萬次網頁點擊) – WhozCraig
是的,當我在VS2010中右鍵單擊項目時,我添加了:add-> resource-> Version。然後我得到了公司名稱,版本,產品名稱和更多的窗口...我想寫一個功能,爲檢驗可以給我的公司名稱..但我不明白我如何可以輸入資源文件並獲取它..我認爲這是一個winapi ..但我只是無法找到它 – user1386966