通过这个小小的过程来学习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)