[python-win32] Strange behaviour of SHGetFileInfo
Piotr Wilk
piotrwilkla at gmail.com
Wed Dec 28 05:37:52 EST 2022
Hello everyone,
I'm trying to get the information about the current overlay icon for a file
on Windows. To get this information I use the SHGetFileInfo function. Here
is my function code:
def get_system_overlay_index_fo_file(path: Path) -> int:
> flags = shellcon.SHGFI_ICON | 0x000000040 # SHGFI_OVERLAYINDEX
> file_info = shell.SHGetFileInfo(str(path), 0, flags)
> return file_info[1][1] >> 24
>
Docs for reference:
> SHGFI_OVERLAYINDEX (0x000000040)
>
> Version 5.0
> <https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb776779(v=vs.85)>.
> Return the index of the overlay icon. The value of the overlay index is
> returned in the *upper eight bits* of the *iIcon* member of the structure
> specified by *psfi*. This flag requires that the *SHGFI_ICON* be set as
> well.
>
The problem is, this function behaves differently in different
environments.
1. In my sandbox project it returns correct icon index.
- The whole structure returned by SHGetFileInfo: (1, (15535299, 83886083,
403490781, '', ''))
- Index: 83886083 >> 24 = 5
2. However, In the project I'm working on the same function returns
different results. Even if I run them at the same time, for the same file.
- The whole structure returned by SHGetFileInfo: (1, (15535299, 0,
403490781, '', ''))
- Index: 0
After trying to figure it out for a couple of days, I have no more ideas.
Has anyone encountered such behaviour? Why does the same function return
different values for the same input? I would appreciate any feedback or
ideas (or redirection to correct the place where I could ask this question
:)).
Cheers,
Piotr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/python-win32/attachments/20221228/3ff72ed5/attachment.html>
More information about the python-win32
mailing list