SHGetFileInfo

Thomas Heller theller at python.net
Tue May 27 00:41:59 EDT 2003


"Jamie" <jamie at nospam.net> writes:

> Hi all,
> 
> Does anyone have an example of how to make this call using either the ctypes
> module or the win32 python extensions?

I don't find it in the win32 extensions, so here is the ctypes version,
which prints this (WinXP pro german):

    1
    0x40400177L
    'python.exe'
    'Anwendung'

Thomas
-----
from ctypes import *

MAX_PATH = 260
HICON = c_int

class SHFILEINFO(Structure):
    _fields_ = [("hIcon", HICON),
                ("iIcon", c_int),
                ("dwAttributes", c_uint),
                ("szDisplayName", c_char * MAX_PATH),
                ("szTypeName", c_char * 80)]

SHGFI_ICON              = 0x000000100
SHGFI_DISPLAYNAME       = 0x000000200
SHGFI_TYPENAME          = 0x000000400
SHGFI_ATTRIBUTES        = 0x000000800
SHGFI_ICONLOCATION      = 0x000001000
SHGFI_EXETYPE           = 0x000002000
SHGFI_SYSICONINDEX      = 0x000004000
SHGFI_LINKOVERLAY       = 0x000008000
SHGFI_SELECTED          = 0x000010000
SHGFI_ATTR_SPECIFIED    = 0x000020000
SHGFI_LARGEICON         = 0x000000000
SHGFI_SMALLICON         = 0x000000001
SHGFI_OPENICON          = 0x000000002
SHGFI_SHELLICONSIZE     = 0x000000004
SHGFI_PIDL              = 0x000000008
SHGFI_USEFILEATTRIBUTES = 0x000000010


shfileinfo = SHFILEINFO()

import sys

flags = SHGFI_DISPLAYNAME | SHGFI_TYPENAME | SHGFI_ATTRIBUTES
print windll.shell32.SHGetFileInfo(sys.executable,
                                   0,
                                   byref(shfileinfo),
                                   sizeof(shfileinfo),
                                   flags)

print hex(shfileinfo.dwAttributes)
print repr(shfileinfo.szDisplayName)
print repr(shfileinfo.szTypeName)
-----




More information about the Python-list mailing list