通過這個小小的過程來學習python中鼠標鍵盤以及win32的使用
代碼1:自動化登陸單個QQ。登陸後最小化QQ界面。
import win32gui
import subprocess
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard
m = PyMouse() #創建鼠標實例
k = PyKeyboard() #創建鍵盤實例
def qq_load():
#用subprocess模塊打開qq程序
qq_exe = 'D:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe'
subprocess.Popen([qq_exe])
#給qq留點啓動時間
time.sleep(0.2)
#獲取窗口的句柄,參數1:類名,參數2:標題
handle = win32gui.FindWindow('TXGuiFoundation','QQ')
print(handle)
#獲取窗口左上角和右下角座標
left,top,right,bottom = win32gui.GetWindowRect(handle)
print(left,top,right,bottom)
#將鼠標移動到賬號輸入框位置
# m.move(885,580)
time.sleep(1)
#移動鼠標到賬號輸入框並按下鼠標
m.click(885,580,1,1)
xy = m.position()
print(xy)
#模擬鍵盤輸入字符串
k.type_string('1731980000')
#點擊tab鍵,鍵盤對應的kyecode碼0
k.tap_key(9)
#模擬鍵盤輸入字符串
k.type_string('asdf@#aaaa')
#點擊tab鍵
k.tap_key(9)
#點擊回車
k.tap_key(13)
#獲取打開的qq窗口的句柄
time.sleep(2)
w = win32gui.FindWindow('TXGuiFoundation','QQ')
#最小化窗口
win32gui.CloseWindow(w)
if __name__ =='__main__':
qq_load()
練習2:批量登陸QQ
目前只能登陸成果約70%的號碼,中途會出錯,顯示一部分號碼已經登陸而沒有輸入正確的號碼去登陸
'''
步驟:
1 / 打開QQ軟件
2 / 移動鼠標到QQ號碼輸入處
3 / 在輸入框點擊鼠標,輸入賬號
4 / 模擬按下tab鍵,切換到密碼框,輸入密碼
5 / 模擬點回車登陸
6 / 每登陸10個就殺死騰訊QQ多客戶端管理服務
'''
import win32gui
import subprocess
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard
import os
m = PyMouse() #創建鼠標實例
k = PyKeyboard() #創建鍵盤實例
def qq_load(account,password):
qq_exe = 'D:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe'
subprocess.Popen([qq_exe])#用subprocess模塊打開qq程序
time.sleep(0.5)#給qq留點啓動時間
handle = win32gui.FindWindow(None,'QQ')#獲取窗口的句柄,參數1:類名,參數2:標題
left,top,right,bottom = win32gui.GetWindowRect(handle)
print(left,top,right,bottom)
time.sleep(0.5)
new_x = int(left+(right-left)/2)-70 #賬號輸入框座標
new_y = int(top+(bottom-top)/2)+40 #賬號輸入框座標
m.click(new_x,new_y,1,2)#移動鼠標到賬號輸入框並按下鼠標
k.type_string(account)#模擬鍵盤輸入字符串
print('%s 正在登陸……'%account)
time.sleep(0.5)
k.tap_key(9)#點擊tab鍵,鍵盤對應的kyecode碼
k.type_string(password)#模擬鍵盤輸入字符串
time.sleep(1.5)
window = win32gui.FindWindow(None,'QQ')#獲取打開的qq窗口的句柄
# print(w)
win32gui.CloseWindow(window)#最小化窗口
def qq_data(f):
with open(f,'r') as f:
# f = f.readline() #單條測試用代碼
# account = f.split('----')[0]
# password = f.split('----')[1]
# print(account,password)
# qq_load(account,password)
i = 1
for f in f.readlines():
if i%10==0:
os.system('taskkill /f /im TXPlatform.exe') #殺死騰訊QQ多客戶端管理服務
account = f.split('----')[0]
password = f.split('----')[1]
qq_load(account,password)
time.sleep(2.5)
i +=1
continue
else:
account = f.split('----')[0]
password = f.split('----')[1]
qq_load(account,password)
time.sleep(2.5)
i +=1
print(i)
if __name__ =='__main__':
f = 'E:\\賬號資料\\QQdata.txt'
qq_data(f)