当前位置:   article > 正文

Python使用win32api系统钩子

win32gui.findwindowex找到指定服务

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/137695
推荐阅读
相关标签
  

闽ICP备14008679号