轉 Python使用win32api系統鉤子

   有這樣一個需求:客戶的測試程序掃描一個產品的條形碼,可是它沒有和系統驗證的功能(就是從系統裏面檢查是否能夠在此測試位進行測試。好比說有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

相關文章
相關標籤/搜索