前几天玩的按键精灵由于版本太老,不兼容UTF8编码,就用python来封装了一些键鼠操作。
1.导入库
import time
import pyautogui
import aircv as ac
import os
import win32gui
import win32con
import win32.win32clipboard as w
2.鼠标模拟
def getmouse(): #得到鼠标当前位置
x,y=pyautogui.position()
return x,y
def moveto(x,y,movetime=0): #鼠标移动 x,y_移动位置,movetime_移动时间
pyautogui.moveTo(x,y,duration=movetime)
def click_l(): #当前位置左键单击
x,y=pyautogui.position()
pyautogui.click(x,y,button="left")
def click_r(): #当前位置右键单击
x,y=pyautogui.position()
pyautogui.click(x,y,button="right")
def dbclick_l(): #左键双击
pyautogui.doubleClick(button="left")
def dbclick_r(): #右键双击
pyautogui.doubleClick(button="right")
def dbclick_m(): #中键双击
pyautogui.doubleClick(button="middle")
def mousedown(): #按下
pyautogui.mouseDown()
def mouseup(): #释放
pyautogui.mouseUp()
def scroll(sizes=0, x=None, y=None):#滑轮滑动 sizes_int类型,x,y_在x,y滑动位置
pyautogui.scroll(sizes, x , y)
3.键盘模拟
def keydown():#按下
pyautogui.keyDown()
def keyup(): #弹起
pyautogui.keyUp()
def hotkey(*key):#热键 如ctrl+v _ hotkey("ctrl","v")
pyautogui.hotkey(*key)
4.图像查找
##pyautogui自带的图像查找太慢了,识别准确率也不行,自己封装了一个。
def findpic(pic,areas,same=0.7): #图像查找 pic_识别图片,areas_识别区域,same_相似度 ##不兼容中文路径
fpic=ac.imread(pic) #读取图片
img=pyautogui.screenshot(region=areas) #截屏,可以换其他截屏方式,我电脑PIL不知怎么的用不了,可以试试。
img.save("jp.png")
jp=ac.imread("jp.png") #读取图片
result=ac.find_template(jp,fpic,same) #用aircv识别
os.remove("jp.png") #删除截屏
if(result!=None):
return result['result'][0],result['result'][1] #返回图片左上角x,y
return None
5.其他
def getword(提示=""): #可以输入的消息弹窗
word=pyautogui.prompt(提示)
return word
def getscreensize(): #屏幕分辨率
x,y=pyautogui.size()
return x,y
def windows_findhwnd(cls=None,title=None):#获取顶层窗口句柄 class_类,title_标题
hwnd = win32gui.FindWindow(cls, title)
return hwnd
def windows_Top(hwnd,key=0):##窗口置前 hwnd_窗口句柄,0_置前,1_置后
if key==0: #置前
win32gui.ShowWindow(hwnd, win32con.SW_SHOWNORMAL)
win32gui.SetForegroundWindow(hwnd)
elif key==1: #隐藏
win32gui.ShowWindow(hwnd, win32con.SW_HIDE)
def windows_moveto(x,y,hwnd):##窗口移动 hwnd_窗口句柄, x,y_移动位置
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
win32gui.MoveWindow(hwnd,x,y,right-left,bottom-top,True)
def hwnd_moveto(x,y,hwnd):##鼠标相对窗口移动 x,y_以窗口右上角为0,0移动位置,hwnd_句柄
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
pyautogui.moveTo(x+left,y+top)
def write(text=""): #写入文字 #原理:设置剪切板,粘贴
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_UNICODETEXT, text)
w.CloseClipboard() #设置剪切板
pyautogui.hotkey("ctrl","v") #粘贴
def windows_setsize(x,y,hwnd): #设置窗口大小 x,y_窗口大小,hwnd_句柄
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
win32gui.MoveWindow(hwnd,left,top,x,y,True)
该方法可以设置成为一个模块,方便使用。
本人小白一个,如有错误还望指出。
技术不足,导致一些操作只能取巧,如果大家有更好的方法也能告诉我。
如果大家觉得有用,希望大家多多点赞!