问题描述
我想用 win32gui 检测对任何窗口最小化按钮的点击。 我有一个使用 WM.NCHITTEST 的想法,但我不知道如何使用它。
解决方法
我想通了。
以下代码段首先等待右键单击,然后获取单击位置(x 轴和 y 轴),然后执行命中测试以了解执行单击的区域类型:
import win32gui,win32api
previous_state = win32api.GetKeyState(0x02)
while True:
a = win32api.GetKeyState(0x02)
if a != previous_state:
previous_state = a
if a < 0:
Clickx,Clicky = win32gui.GetCursorPos()
window = win32gui.GetForegroundWindow()
win32gui.SetForegroundWindow(window)
WM_NCHITTEST_result = win32gui.SendMessage(window,0x0084,"",Clickx)
if WM_NCHITTEST_result == 8: # check if click is on the minimize btn
# Do something here
官方的hittest是通过以下方式进行的:
Clickx,Clicky = win32gui.GetCursorPos()
WM_NCHITTEST_result = win32gui.SendMessage(window,Clickx)
并检查结果是否是最小化点击:
if WM_NCHITTEST_result == 8: