首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新PostMessage

刷新PostMessage
EN

Stack Overflow用户
提问于 2020-11-23 09:07:20
回答 1查看 203关注 0票数 0

我正在编写Python脚本,以切换的“隐藏项”状态。它更改了Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden的值,但是要使更改生效,必须刷新资源管理器的所有实例。

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

代码语言:javascript
复制
WinGetClass, CabinetWClass
PostMessage, 0x111, 28931, , , A
PostMessage, 0x111, 41504, , , A

我尝试了不同的方法来翻译它,但是无法让它与Python一起工作。在搜索答案时,我还找到了C# (在Win7中刷新)的解决方案,这比AutoHotkey版本要复杂得多。我可以让Python调用C#脚本,但是我更喜欢没有辅助文件的解决方案。

我如何用Python实现这样的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-23 19:20:40

使用皮温模块:

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64965400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档