1

どうやら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 を使用する際の問題は、enumpywin32 に固有の PyIDL が含まれていることです。ctypes で使用できる通常の PIDL に PyIDL をキャストする方法はありますか? または、PyIDL を完全に使用せずにこれを行う方法はありますか?

最悪の場合、これらすべて ( SHGetDesktopFolderandを含むEnumObjects) に ctypes を使用できますが、それは非常に長く、車輪の再発明のように感じます。

ありがとうございました!

4

0 に答える 0