Python 实现键鼠操作
- 前言
- 需要的库
- 直接上代码
- 小结
前言
前几天玩的按键精灵由于版本太老,不兼容UTF8编码,就用python来封装了一些键鼠操作。
需要的库
- time
- pyautogui
- OpenCV
- aircv #Aircv是基于OpenCV的所以需要安装OpenCV和numpy
- os
- win32
直接上代码
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,ydef 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,yreturn None
5.其他
def getword(提示=""): #可以输入的消息弹窗word=pyautogui.prompt(提示)return worddef getscreensize(): #屏幕分辨率x,y=pyautogui.size()return x,ydef windows_findhwnd(cls=None,title=None):#获取顶层窗口句柄 class_类,title_标题hwnd = win32gui.FindWindow(cls, title) return hwnddef 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)
小结
该方法可以设置成为一个模块,方便使用。
本人小白一个,如有错误还望指出。
技术不足,导致一些操作只能取巧,如果大家有更好的方法也能告诉我。
如果大家觉得有用,希望大家多多点赞!