码迷,mamicode.com
首页 > 编程语言 > 详细

转 Python使用win32api系统钩子

时间:2016-12-22 14:12:27      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:python使用   find   api   title   imp   分类   wm_keyup   pyw   win32   

   有这样一个需求:客户的测试程序扫描一个产品的条形码,但是它没有和系统验证的功能(就是从系统里面检查是否可以在此测试位进行测试。比如说有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)

转 Python使用win32api系统钩子

标签:python使用   find   api   title   imp   分类   wm_keyup   pyw   win32   

原文地址:http://www.cnblogs.com/chengxuyuan326260/p/6210749.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!