python弹出窗口 闪烁_Python。得到闪烁/闪烁的窗口

首先,大多数程序通过调用^{}(或包装它的高级函数)来刷新窗口。但是,有一些应用程序主要来自微软,他们做一些定制的东西,在终端用户看来就像是在闪窗,但在封面下看起来可能不一样。希望你不在乎任何这样的定制应用。在

无论如何,捕获这些信息最简单的方法是安装一个带有^{}或{a3}的shell钩子。(您可以在user32.dll前面显式地注入代码…但是您不想从Python中尝试这样做。)当您这样做时,Windows将把您的窗口视为Explorer的一部分(“shell”),并向它发送有关其他程序正在做什么的特殊消息,WM_SHELLHOOKMESSAGE。在

正如forival所指出的,这可能更容易从AutoHotkey-this answer开始,在论坛中展示如何做到这一点。它也可以更容易从VB,甚至C++。是的,这些语言通常比Python困难,但是代码中的实际逻辑非常简单,唯一困难的部分是获取shell钩子消息,而这部分在这些语言中会更容易。另一种选择是使用IronPython并通过.NET实现。在

但是你问是否有可能从Python中实现它,而且……是的,是的。我相信相关函数不是由win32gui包装的,所以您必须使用^{}从Python中完成。请参阅SO question以获取可能的示例,并查看侧面的一些相关问题和ctypes文档中的其他示例,以获取使用ctypes调用不同函数的其他示例用户.dll. 在

如果您想设置一个windows钩子,key函数将如下所示(有关详细信息,请参见^{}):HSHELL_REDRAW=6

WM_SHELL=10

def my_callback(nCode, wParam, lParam):

if nCode == HSHELL_REDRAW and lParam:

got_flashing_window_with_hwnd(wParam)

hook = user32.SetWindowsHookEx(WM_SHELL, my_callback, None, 0)

但是您需要设置类型并通过ctypes推送回调。在

如果已经有一个从Python管理的窗口,那么将自己设置为shell钩子窗口可能更容易:

^{pr2}$

然后,在窗口过程中:

^{3}$

我不确定你是否需要这些特权,但我怀疑你需要。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值