转 python通过win32api轻松获取控件的属性值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转 python通过win32api轻松获取控件的属性值相关的知识,希望对你有一定的参考价值。

python通过win32api轻松获取控件的属性值  

2014-08-29 15:26:56|  分类: 自动化测试 |  标签:win32  |举报|字号 订阅

 
 

1.如何利用句柄操作windows窗体

首先,获得窗体的句柄  win32api.FindWindows()

第二,获得窗体中控件的id号,spy++

第三,根据控件的ID获得控件的句柄(hwnd)  GetDlgItem(hwnd,loginID)

最后,利用控件句柄进行操作

python可以通过win32api轻松获取控件的属性值

通过标签找到主窗口句柄,然后通过主句柄获取下属控件句柄

#-*- coding: utf-8 -*-  ##设置编码方式

import win32api,win32gui,win32con

label = ‘tt‘ #此处假设主窗口名为tt

hld = win32gui.FindWindow(None, label)

if hld > 0:

    dlg = win32api.FindWindowEx(hld, None, ‘Edit‘, None)#获取hld下第一个为edit控件的句柄

    buffer = ‘0‘ *50

    len = win32gui.SendMessage(dlg, win32con.WM_GETTEXTLENGTH)+1 #获取edit控件文本长度

    win32gui.SendMessage(dlg, win32con.WM_GETTEXT, len, buffer) #读取文本

    print buffer[:len-1]

    #虚拟鼠标点击按钮(或者回车)

    btnhld = win32api.FindWindowEx(hld, None,‘Button‘, None)

    # win32gui.PostMessage(btnhld, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

    # win32gui.PostMessage(btnhld, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

    win32gui.PostMessage(btnhld, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0)

    win32gui.PostMessage(btnhld, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)

    #获取显示器屏幕大小

    width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)

    height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)


#点击窗口button
w=win32ui.FindWindow(clsname,windowtitle)
b=w.GetDlgItem(窗口id)
b.postMessage(win32con.BM_CLICK)


#关闭窗体
import win32ui
import win32con
wnd=win32ui.FindWindow(classname,None)
wnd.SendMessage(win32con.WM_CLOSE)  成功!

import win32ui
w=win32ui.FindWindow(classname,窗体title)
print w.GetDlgItemText(0xFFFF)  # 获得弹窗里的消息文字

最小化窗体
w=win32gui.FindWindow()
win32gui.CloseWindow(w)



















以上是关于转 python通过win32api轻松获取控件的属性值的主要内容,如果未能解决你的问题,请参考以下文章

[转]python使用ctypes模块调用windowsapi获取系统版本

api 创建控件 (转)

转 Python使用win32api系统钩子

Win32Api - 窗口名称属性

如何在 win32 API 中向 Skins 添加控件

WPF 使用Win32API 让控件置于WebBrowser上方