所以显然我在 pywin32 中发现了一个错误。现在我不能使用win32com.shell.shell.SHGetFileInfo
带有win32com.shell.shellcon.SHGFI_PIDL
标志的功能。
我想做的是枚举桌面图标(所有这些,包括虚拟图标)并获取图标本身(图像)。我试图这样做(在我知道这个错误之前)使用类似的东西:
from win32com.shell import shell, shellcon
desktop = shell.SHGetDesktopFolder()
enum = desktop.EnumObjects(None, shellcon.SHCONTF_FOLDERS | shellcon.SHCONTF_NONFOLDERS)
for pidl in enum:
shell_info = shell.SHGetFileInfo(desktop_pidl, 0, shellcon.SHGFI_PIDL | shellcon.SHGFI_SYSICONINDEX | shellcon.SHGFI_ICON | shellcon.SHGFI_DISPLAYNAME)
shell.SHGetFileInfo
那么,如果没有PIDL,我怎么能做到这一点呢?使用 ctypes 的问题在于它enum
包含特定于 pywin32 的 PyIDL。有没有办法将 PyIDL 转换为我可以与 ctypes 一起使用的常规 PIDL?或者有没有办法在完全没有 PyIDL 的情况下做到这一点?
在最坏的情况下,我可以将 ctypes 用于所有这些(包括SHGetDesktopFolder
and EnumObjects
),但这真的很长,有点像重新发明轮子。
谢谢!