gpt4 book ai didi

c++ - C/C++ Windows - ExtractIcon() 不检索所有可执行文件的图标

转载 作者:可可西里 更新时间:2023-11-01 11:36:28 24 4
gpt4 key购买 nike

这只是我正在做的事情的片段:

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() 从文件中加载),则您无法使用 ExtractIcon() 检索它。

这很容易解释为什么您无法获取 Chrome 选项卡的图标,因为它们通常从网站下载图标然后显示它。我还怀疑任何支持自定义皮肤的应用程序都不太可能允许您提取其图标,或者充其量只为您提供默认图标。

关于c++ - C/C++ Windows - ExtractIcon() 不检索所有可执行文件的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10261906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com