Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows资源管理器刷新PostMessage_Python_Windows_Winapi_Refresh_Windows Explorer - Fatal编程技术网

Python Windows资源管理器刷新PostMessage

Python Windows资源管理器刷新PostMessage,python,windows,winapi,refresh,windows-explorer,Python,Windows,Winapi,Refresh,Windows Explorer,我正在编写一个Python脚本来切换Windows资源管理器的“隐藏项”状态。它会更改计算机\HKEY\U当前\U用户\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden的值,但要使更改生效,必须刷新浏览器的所有实例 几个月前,我用AutoHotkey实现了同样的想法,在那里,我可以通过在AutoHotkey论坛上找到的以下命令来解决刷新问题: WinGetClass, CabinetWClass PostMess

我正在编写一个Python脚本来切换Windows资源管理器的“隐藏项”状态。它会更改
计算机\HKEY\U当前\U用户\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden的值,但要使更改生效,必须刷新浏览器的所有实例

几个月前,我用AutoHotkey实现了同样的想法,在那里,我可以通过在AutoHotkey论坛上找到的以下命令来解决刷新问题:

WinGetClass, CabinetWClass
PostMessage, 0x111, 28931, , , A
PostMessage, 0x111, 41504, , , A
我尝试了不同的方法来翻译它,但无法让它与Python一起工作。在寻找答案的过程中,我还发现了一个使用C#()的解决方案,它比自动热键版本复杂得多。我可以让Python脚本调用C#脚本,但我更喜欢没有辅助文件的解决方案

如何使用Python实现这种行为?

使用模块:


Windows API(WINAPI)有Python绑定。查看pywin32。非常感谢,这正是我需要的:)
import win32con
import win32gui

# List for handles:
handles = []

def collect_handles(h, _):
    ' Get window class name and add it to list '
    if win32gui.GetClassName(h) == 'CabinetWClass':
        handles.append(h)

def refresh_window(h):
    ' Send messages to window '
    win32gui.PostMessage(h, win32con.WM_COMMAND, 28931, None)
    win32gui.PostMessage(h, win32con.WM_COMMAND, 41504, None)

# Fill our list:
win32gui.EnumWindows(collect_handles, None)

# Perform action on our handles:
list(map(refresh_window, handles))