SEE_MASK_NOCLOSEPROCESS = 64
SEE_MASK_INVOKEIDLIST = 12


class SHELLEXECUTEINFO(ctypes.Structure):
    _fields_ = ('cbSize', ctypes.wintypes.DWORD), ('fMask', ctypes.c_ulong), (
        'hwnd', ctypes.wintypes.HANDLE), ('lpVerb', ctypes.c_char_p), ('lpFile'
        , ctypes.c_char_p), ('lpParameters', ctypes.c_char_p), ('lpDirectory',
        ctypes.c_char_p), ('nShow', ctypes.c_int), ('hInstApp', ctypes.
        wintypes.HINSTANCE), ('lpIDList', ctypes.c_void_p), ('lpClass',
        ctypes.c_char_p), ('hKeyClass', ctypes.wintypes.HKEY), ('dwHotKey',
        ctypes.wintypes.DWORD), ('hIconOrMonitor', ctypes.wintypes.HANDLE), (
        'hProcess', ctypes.wintypes.HANDLE)
ShellExecuteEx = ctypes.windll.shell32.ShellExecuteEx
ShellExecuteEx.restype = ctypes.wintypes.BOOL
sei = SHELLEXECUTEINFO()
sei.cbSize = ctypes.sizeof(sei)
sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_INVOKEIDLIST
sei.lpVerb = 'properties'
sei.lpFile = 'C:\\Desktop\\test.txt'
sei.nShow = 1
ShellExecuteEx(ctypes.byref(sei))
time.sleep(5)
Показать диалоговое окно свойств проводника для файла в Windows