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

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

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

下载LOFTER我的照片书  |

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)

时间: 2024-08-04 23:00:10

转 python通过win32api轻松获取控件的属性值的相关文章

封装Js库从获取控件的value值开始

<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" > function show() { var _value = document.getElementById("text_1").value

Delphi中如何获取TDateTimePicker控件的属性值

参考资料:http://www.delphipages.com/forum/showthread.php?t=103412 var dtpDate: TDateTimePicker; begin dtpDate.Format := 'yyyy-MM-dd'; ShowMessage('时间:' + FormatDateTime('yyyy-MM-dd', dtpDate.Date)); //'yyyy-MM-dd'是时间显示的格式,更多格式请参照别的资料 end; dtpDate.Format

C#控件事件属性大全

C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 6.Button 控件... 7 7.GroupBox 控件... 7 8.RadioButton控件... 8 9.CheckBox 控件... 8 10.ListBox 控件... 9 11.ComboBox 控件... 10 12.CheckedListBox 控件... 10 13.Pict

在C#中使用属性控件添加属性窗口

转自原文 在C#中使用属性控件添加属性窗口 第一步,创建在应用程序中将要展现的字段属性为public公有属性.其中,所有的属性必须有get和set的方法(如果不设置get方法,则要显示的属性不会显示在属性控件中).为了设置相关的属性,必须设置下面的一些关于属性控件的属性值,如下表所示: 属性值 含义 CategoryAttribute 该属性对在Property控件中的属性按字母顺序进行归类 DescriptionAttribute 其值为对每个属性的具体文字描述,将会显示在property控件

WPF获取控件内部的ScrollViewer,并控制ScrollViewer操作

//获取内部  ScrollViewer方法 public static T FindVisualChild<T>(DependencyObject obj) where T : DependencyObject        {            if (obj != null)            {                for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)          

.net OCX 无法获取“****”控件的窗口句柄,不支持无窗口的ActiveX控 新解决方法

朋友找我帮原来的软件加一个小功能,程序是用VB.NET 写的. 软件需要与外部串口设备通信,一只带串口功能的压力表. 应该时间周期很急,所以串口部分我就直接用厂家提供的VB DEMO 写了个OCX控件给 .NET调用. OCX 的制作过程参考我的这篇文章 http://my.oschina.net/caomenglong/blog/380029 软件制作完成用用VS做了一个安装包给朋友,安装包内已经包含了OCX控件.安装过程中会自动注册. 朋友去给客户安装,发现提示 『 无法获取"****&qu

UiAutomator源码分析之获取控件信息

根据上一篇文章<UiAutomator源码分析之注入事件>开始时提到的计划,这一篇文章我们要分析的是第二点: 如何获取控件信息 我们在测试脚本中初始化一个UiObject的时候通常是像以下这个样子: UiObject appsTab = new UiObject(new UiSelector().text("Apps")); appsTab.click() 那么这个过程发生了什么呢?这就是我们接下来要说的事情了. 1. 获取控件信息顺序图 这里依然是一个手画的不规范的顺序图

android 下动态获取控件的id

有时候我们需要动态的取得一个一个控件的id,然后进行操作,经过在网上查找,找到了一下方法getResources().getIdentifier("textView01", "id", "cn.xxx.xxx"); 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名. 以下是从网上找到资料:主要由两种方法,个人建议第二种. 1. 不把图片放在res/drawable下,而是存放在src某个package中(如:com.

Appium根据xpath获取控件实例随笔

如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出. 1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是"note1"和"note2"添加到Notepad上面,我们要做的