python pywin32钩子_Python使用win32api系统钩子

本文介绍了如何使用Python的pywin32库来创建系统钩子,监控并交互Windows应用程序的文本框。通过FindWindow和FindWindowEx函数查找目标窗口和编辑框,并使用SendMessage和PostMessage发送文本和模拟按键事件,实现自动化测试中的验证流程。
摘要由CSDN通过智能技术生成

有这样一个需求:客户的测试程序扫描一个产品的条形码,但是它没有和系统验证的功能(就是从系统里面检查是否可以在此测试位进行测试。比如说有10个测试位,这是第4个,那么就必须前面的3个测试位全部pass后,第4个测试位才能测试,这就是所说的验证。当然还有其他的情况,比如每个产品同一测试位只能测2次,再测第3次系统就应该提示要去维修了)。

我们碰到的问题是客户给的程序没有验证这一块,让客户改程序也不是很好办。唉,谁让现在的客户那么牛。

于是我们看看能不能自己搞定。思路是:我们添加一个程序先接收产品的条码,和系统验证之后如果能继续测试,就把条码再写到客户程序的条码文本框里,如果流程错误,提示错误,让操作员修正。

难点是我们怎么找到客户程序的条码文本框。于是从网上搜索(我们用的是Python,需要先安装pywin32模块)win32api的用法,还好找到了一点,下面给个例子说明一下(在python shell里):

一, 首先import win32gui, win32con

二, 使用win32gui.FindWindow找到目标程序:

win = win32gui.FindWindow(None, 'User Login')

三, 使用win32gui.FindWindowEx找到目标文本框:

tid = win32gui.FindWindowEx(win, None, 'Edit', None)

四, 使用win32gui.SendMessage发送文本到目标文本框:

win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, 'hello')

当然了,可以继续找到下一个文本框:

username = win32gui.FindWindowEx(win, tid, 'Edit', None)

只是还没找到给字符串加回车的功能,在记事本里可以实现,不知道为什么在这里不行。如果各位大侠有知道的希望不吝赐教。

目前先研究到这里。以防忘记所以记在这里,以备以后使用。

更新:已经找到发送回车的方法:

win32gui.SendMessage(tid, win32con.WM_SETTEXT, None, ‘hello')

win32gui.PostMessage(tid, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

win32gui.PostMessage(tid, win32con.WM_KEYUP, win32con.VK_RETURN, 0)

3eb1b76480394fb6689b3a1fc93324f7.png

大小: 24.8 KB

3caa6f833c6939e6743725f41723143e.png

大小: 28.1 KB

2cc8a6714ad4bf9c9b7bb7563c92642e.png

大小: 30.1 KB

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-06-29 20:45

浏览 17245

评论

1 楼

hamo2008

2009-07-02

字符串中的回车时 换行+回车 (\r\n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值