相关疑难解决方法(0)

获取Shell使用的文件图标

在.Net(C#或VB:不关心)中,给定真实文件的文件路径字符串,FileInfo结构或FileSystemInfo结构,如何确定shell(资源管理器)使用的图标文件?

我目前没有计划将它用于任何事情,但是当我看到这个问题时,我对如何做到这一点感到好奇,我认为在SO上存档是有用的.

.net c# vb.net winforms shell-icons

46
推荐指数
5
解决办法
4万
查看次数

ExtractIcon和ExtractAssociatedIcon之间的区别?需要提取特定大小的图标

比方说,如果我想从一个库存的Windows可执行文件中提取一个图标.我可以通过在Visual Studio中打开它来获取该图标ID:

在此输入图像描述

然后我会对48x48大小的图标感兴趣:

在此输入图像描述

所以我的假设是:

HICON hIcons[4];
::ExtractIconEx(L"mstsc.exe", -13011, hIcons, NULL, 4);
hIconLogo = hIcons[3];
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,该方法只返回3个图标:

在此输入图像描述

其中只有一个是我需要的32x32版本.

然后我找到了我称之为ExtractAssociatedIconEx的 API:

WORD wIcnId = -13011;
WORD wIcnInd = 3;
hIconLogo = ::ExtractAssociatedIconEx(hInst, L"mstsc.exe", &wIcnInd, &wIcnId);
Run Code Online (Sandbox Code Playgroud)

但这也给了我一些我没想到的其他图标.

那么这两个API有什么区别?我做错了什么?

c++ windows winapi icons windows-shell

1
推荐指数
1
解决办法
2257
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

icons ×1

shell-icons ×1

vb.net ×1

winapi ×1

windows ×1

windows-shell ×1

winforms ×1