pywin32 模拟鼠标 最小化窗口处理
无论窗口是否最小化,win32gui.FindWindow
都是可以正常获取句柄的,但是在模拟鼠标键盘操作时可能受影响。
以如下代码为例:
def find_flash_window(to_who):
hwnd = win32gui.FindWindow(None, to_who)
if (hwnd):
win32gui.SetForegroundWindow(hwnd)
rect = win32gui.GetWindowRect(hwnd)
return rect[0], rect[1]
return None
to_who = '窗口名'
x, y = find_flash_window(to_who)
print(x, y)
这段代码的问题在于待抓取窗口必须处在前台才能正确打印窗口坐标。如果窗口是最小化的,执行结果:
即便调用了win32gui.SetForegroundWindow
仍没有激活窗口至前台。
修改后的代码如下:
def find_flash_window(to_who):
hwnd = win32gui.FindWindow(None, to_who)
if (hwnd):
# 模拟将最小化窗口还原
win32gui.SendMessage(hwnd, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0)
win32gui.SetForegroundWindow(hwnd)
rect = win32gui.GetWindowRect(hwnd)
return rect[0], rect[1]
return None
此时的窗口处于最上层,可以正常模拟后续的鼠标操作。
参考博客
https://blog.csdn.net/weixin_30299539/article/details/96321161