どうやら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 が含まれていることです。ctypes で使用できる通常の PIDL に PyIDL をキャストする方法はありますか? または、PyIDL を完全に使用せずにこれを行う方法はありますか?
最悪の場合、これらすべて ( SHGetDesktopFolder
andを含むEnumObjects
) に ctypes を使用できますが、それは非常に長く、車輪の再発明のように感じます。
ありがとうございました!