我最近需要获得任何文件类型的图标,我想要一个大的,所以我使用的是SHImageList,作为this C# answer suggested。在
我做任何事都有困难。我使用的是SHGetFileInfo,但它只返回32x32px图标,我更喜欢256x256个图标。在
基于the reference我可以计算出前两个参数,但是我还没有弄清楚第三个参数是什么。我是不是应该把None
?虽然基于this blog post的第三个参数是HImageList
,但是我还没有找到任何{
SHIL_JUMBO = 0x000000004
iidImageList=GUID("{46EB5926-582E-4017-9FDF-E8998DAA0950}")
hico=??
hres=ctypes.windll.shell32.SHGetImageList(SHIL_JUMBO,byref(iidImageList),hico)
hdc.DrawIcon( (0,0), hico )
hbmp.SaveBitmapFile( hdc, tempDirectory + "\Icontemp.bmp")
我应该如何初始化hico和什么类型的??在
另外,为了避免XY问题,这个问题的答案可以提供一种获取任何文件类型图标的替代方法。(最好使用枕头或PyQt)
编辑:嗯,我想我不清楚我需要什么。我需要启动一个HImageList类型。我改了标题,以反映编辑。还有,XY问题。一个要求是程序是用Python编写的(除非可以证明这是不可能的)。在
^{} 返回图像列表,而不是图标。在
您需要将其与^{} 结合使用:
SHGetFileInfo
提供系统映像列表中的图标索引(使用SHGFI_SYSICONINDEX
标志)SHGetImageList
提供了jumbo图像列表(使用SHIL_JUMBO
)。在然后可以使用^{} 绘制图标,或者使用^{} 宏或调用^{} 从图标列表中将其提取为} interface ,指向这些的指针可以自由转换为
HICON
。注意,尽管SHGetImageList
返回一个^{HIMAGELIST
。在Psuedo代码:
相关问题 更多 >
编程相关推荐