Win32gui: Windows图形界面接口模块。主要负责操作窗口切换以及窗口中元素id标签的获取
Win32api: Windows开发接口模块。主要负责模拟键盘和鼠标操作,对win32gui获取的标签进行点击/获取值/修改值等操作
Win32con:全面的库函数,提供Win32gui和Win32api需要的操作参数
Win32gui 函数
FindWindow
hld=win32gui.FindWindow(ClassName,Title)
ClassName:窗口的类名
Title:窗口的标题名称,即左上角的文字描述信息
hld:返回结果为当前窗口的句柄信息,
以下是使用AutoItv3抓取的Windows【另存为】窗口信息:
hld=win32gui.FindWindow("#32770",u"另存为")
>>>> Window <<<<
Title: 另存为 #这里就是上面的Title
Class: #32770 #这里就是上面的ClassName
Position: 0, 0
Size: 680, 480
Style: 0x96CC02C4
ExStyle: 0x00010101
Handle: 0x001E03A0 #这里就是上面函数返回值
SetForegroundWindow
win32gui.SetForegroundWindow(hld)
hld:为上面获取到的窗口句柄信息
主要用于激活该窗口,此时窗口会是最前面一层
在找到窗口句柄后,需要先将窗口设置为最前面一层才能模拟鼠标键盘操作当前窗口上的元素。
FindWindowEx
win32gui. FindWindowEx(hld,Child, ClassName, Title)
hld:目标窗口的父窗口,也是上面获取到的窗口句柄信息。通过父向下找子
Child:目标窗口的子窗口。通过子向上找父,从而找到目标窗口
ClassName:目标窗口的类名
Title:目标窗口的标题名称,即文字描述信息
以下是使用AutoItv3抓取的Windows【另存为】窗口的【保存】按钮信息:
button=win32gui.FindWindowEx(hld,None, "Button",None)
>>>> Control <<<<
Class: Button #这里就是上面的ClassName
Instance: 1
ClassnameNN: Button1
Name:
Advanced (Class): [CLASS:Button; INSTANCE:1]
ID: 1
Text: 保存(&S) #这里就是上面的Title
Position: 459, 400
Size: 88, 30
ControlClick Coords: 45, 26
Style: 0x50030000
ExStyle: 0x00000004
Handle: 0x000C12A2 #这里就是上面函数返回值
GetDlgItem
button=win32gui.GetDlgItem(hld,ID)
hld:目标窗口的父窗口,也是上面获取到的窗口句柄信息。通过父向下找子
ID: 目标窗口ID
上面的例子,使用ID来抓取Windows【另存为】窗口的【保存】按钮信息为:
button=win32gui. GetDlgItem (hld,1)
注:需要确保,多次打开窗口时目标窗口ID是不变的,才能准确获取目标窗口句柄
SendMessage
SendMessage(hWnd, Msg, wParam, lParam)
hWnd:接收消息的窗体句柄
Msg:要发送的消息,这些消息都是wind