gpt4 book ai didi

python - 在 Windows 中显示资源管理器的文件属性对话框

转载 作者:太空狗 更新时间:2023-10-29 21:50:47 28 4
gpt4 key购买 nike

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

我正在尝试显示当您在资源管理器中右键单击文件并选择“属性”时弹出的同一窗口。

最佳答案

执行此操作的方法是调用 Windows ShellExecuteEx() API 传递 properties 动词。有各种高级 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 后立即终止,则没有任何内容可以为对话框提供服务并且它不会显示。

关于python - 在 Windows 中显示资源管理器的文件属性对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985122/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com