1、准備第三方包:
py -3.6 -m pip install win32gui
py -3.6 -m pip install Pywin32
py -3.6 -m pip install pyHook-1.5.1-cp36-cp36m-win_amd64.whl (這個文件是在https://www.lfd.uci.edu/~gohlke/pythonlibs/#genshi 下可找到)請使用這種方式安裝,就不用去安裝那些依賴環境了,比較方便
注意安裝時,如果遇到
是因為版本有問題
py -3.6 -m pip install PyUserInput
按照以上的順序進行安裝
2、代碼
# encodding = utf-8 import os import time import win32gui import win32api import win32con from pykeyboard import PyKeyboard from ctypes import * def QQ(qq, pwd): # 運行QQ os.system('"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"') # 注意這里的寫法,當路徑有空格的時候,system會默認為多個參數,所以要用雙引號,代表這個路徑僅僅代表一個參數 time.sleep(3) # 獲取QQ的窗口句柄 # 參數1是類名,參數2是QQ軟件的標題 a = win32gui.FindWindow(None, "QQ") # 獲取QQ登錄窗口的位置 loginid = win32gui.GetWindowPlacement(a) # 定義一個鍵盤對象 k = PyKeyboard() # 把鼠標放置到登陸框的輸入處 print(loginid[4][0]) # 這是窗口的橫坐標 712 print(loginid[4][1]) # 這是窗口的縱坐標 305 windll.user32.SetCursorPos(loginid[4][0] + 238, loginid[4][1] + 247) # 讓鼠標能找到登錄的輸入框,這是相當坐標, # windll.user32.SetCursorPos(950, 552) # 這個方法是寫死的,這是實際的坐標:950 = 712+238(橫) 552 = 305+247(縱) # 按下鼠標再釋放 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) # press mouse win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) # release mouse time.sleep(2) # 輸入用戶名 k.type_string(qq) time.sleep(0.2) # 按下tab,切換到輸入密碼的地方 win32api.keybd_event(9, 0, 0, 0) win32api.keybd_event(9, 0, win32con.KEYEVENTF_KEYUP, 0) # 輸入密碼 k.type_string(pwd) # 按下回車 win32api.keybd_event(13, 0, 0, 0) win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0) if __name__ == "__main__": QQ('xxxxxx', 'xxxxxxx')
3、獲取當前鼠標的坐標
首先需要安裝:py -3.6 -m pip install Pyautogui
然后寫一個腳本,代碼如下
import os,time import pyautogui as pag try: while True: print("Press Ctrl-C to end") x,y = pag.position() # 返回鼠標的坐標 posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4) print (posStr) # 打印坐標 time.sleep(0.2) os.system('cls') # 清楚屏幕 except KeyboardInterrupt: print('end....')
最后開啟服務,就可以實時獲取當前鼠標的坐標了
通過這個就可以找到登錄QQ的輸入框,上邊的950(橫坐標) 552(縱坐標)也就是這樣來的,通過計算既可以獲得相對坐標 238,247