[英]C/C++ Windows - ExtractIcon() not retrieving icon for all executables
這里只是我正在做的事情的片段:
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) return;
if(!Process32First( hProcessSnap, &pe32))
{
CloseHandle(hProcessSnap); // clean the snapshot object
return;
}
do
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
HICON icon = ExtractIcon((HINSTANCE)hProcess, pe32.szExeFile, 0);
}
while(Process32Next(hProcessSnap, &pe32));
為什么它適用於某些程序而不適用於其他程序? 它基本上只有那些,記事本和cmd提示它獲取圖標,沒有其他程序。
ExtractIcon()
函數用於提取嵌入在可執行文件/ DLL中的圖標作為資源(例如,圖標是.exe
或.dll
文件的一部分)。 如果應用程序動態加載圖標(例如,使用LoadImage()
從文件LoadImage()
),則無法使用ExtractIcon()
檢索它。
這很容易解釋為什么你無法獲取Chrome標簽的圖標,因為他們通常從網站下載圖標然后顯示它。 我還懷疑任何支持自定義皮膚的應用程序都不太可能允許您提取其圖標,或者最多只提供默認圖標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.