在Python做屏幕自动化的过程中,难免需要涉及对窗口的操作,理论上都可以用鼠标键盘+屏幕识别(对人的完全模拟)来实现,但具体做起来实在有点麻烦。如果不考虑跨平台的兼容性,那么引入win32gui库,可以省很多事。
获取当前窗口
import win32gui
# 获取窗口句柄
hwnd = win32gui.GetForegroundWindow()
# 获取窗口标题
win32gui.GetWindowText(hwnd)
查找窗口
import win32gui
# 根据标题查找窗口
title = '文档'
hwnd = win32gui.FindWindow(None, title)
设置当前窗口
import win32gui
# 根据句柄
hwnd = 5378992 #句柄应该是其他方法获取到的
win32gui.SetForegroundWindow(hwnd)
完整示例
import time
import win32gui
def get_current_window():
return win32gui.GetForegroundWindow()
def set_current_window(hwnd):
win32gui.SetForegroundWindow(hwnd)
def get_window_title(hwnd):
return win32gui.GetWindowText(hwnd)
def get_current_window_title():
return get_window_title(get_current_window())
def find_window_by_title(title):
try:
return win32gui.FindWindow(None, title)
except Exception as ex:
print('error calling win32gui.FindWindow ' + str(ex))
return -1
if __name__ == "__main__":
# 获取当前窗口句柄(是一个整数)
print(get_current_window())
# 获取当前窗口标题
print(get_current_window_title())
# 给定一个标题, 查找这个窗口, 如果找到就放到最前
hwnd = find_window_by_title('文档')
set_current_window(hwnd)
time.sleep(1)
# 打印刚刚切换到最前的窗口标题
print(get_current_window_title())
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。