C/C++ Windows - ExtractIcon() 未检索所有可执行文件的图标
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()
从文件中加载),则无法使用 ExtractIcon()
检索它。
这很容易解释为什么您无法获取Chrome标签页的图标,因为他们通常从网站下载图标然后显示它。 我还怀疑任何支持自定义皮肤的应用程序都不太可能允许您提取其图标,或者充其量只为您提供默认图标。
相关文章:
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何更改使用 CPack 安装的可执行文件的名称?
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 如何将图像传入C++可执行文件并将输出图像存储在新目录中?
- 共享库 (.so) 没有扩展名的 Linux 可执行文件之间的区别?
- 如何在 linux 可执行文件中使用静态库
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 编译的C可执行文件被Windows defender检测为病毒
- Linux 可执行文件通过 dlopen 在emplace_back崩溃打开共享库
- 是否可以在命令行中将输入参数传递给可执行文件
- 如何在可执行文件中存储常量数组?
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- C 检索可执行文件的图标,用于Windows注册表图标路径
- 如何从C中的可执行文件中检索平面二进制文件
- C/C++ Windows - ExtractIcon() 未检索所有可执行文件的图标