在Windows中显示文件的属性对话框

有没有一种简单的方法来显示Windows中使用Python的文件的属性对话框?

我试图显示相同的窗口,当您在资源pipe理器中右键单击文件时popup,并select属性。

执行此操作的方法是调用传递properties动词的Windows ShellExecuteEx() API。 这里有各种高级的Python包装,但是我没有成功地让它们中的任何一个使用properties动词。 相反,我会用很好的ctypes

 import time import ctypes import ctypes.wintypes SEE_MASK_NOCLOSEPROCESS = 0x00000040 SEE_MASK_INVOKEIDLIST = 0x0000000C 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) 

我打电话sleep的原因是,在调用过程中,属性对话框显示为一个窗口。 如果Python可执行文件在对ShellExecuteEx的调用之后立即终止,那么没有任何东西可以为对话提供服务,并且不会显示。