win32模拟鼠标操作

打印 上一主题 下一主题

主题 966|帖子 966|积分 2898

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
win32模拟鼠标操作

使用了pywin32库来模拟Windows环境下的鼠标和键盘操作。导入了须要的库,包括time用于停息执行,win32gui、win32api、win32con用于Windows GUI和API操作,以及ctypes中的windll用于调用Windows动态链接库。


  • • 获取鼠标位置:get_mouse_pos 获取当前鼠标的坐标。
  • • 移动鼠标:mouse_move 将鼠标光标移动到这个位置。
  • • 鼠标点击:mouse_click 可以指定点击左键、右键或中键。
  • • 键盘模拟:keyboard_send 模拟键盘按键的按下和开释。它可以处理惩罚单个按键的模拟,也可以处理惩罚组合键(如Ctrl+C)的模拟。
这个脚本可以用于主动化测试、游戏作弊、主动化任务等场景。
  1. import timeimport win32guiimport win32apiimport win32confrom ctypes import windllclassWindowHandle:def__init__(self):        self.keys_dict ={'BACKSPACE':8,'TAB':9,'ENTER':13,'SHIFT':16,'CONTROL':17,'ALT':18,'PAUSE':19,'CAPSLOCK':20,'ESCAPE':27,'SPACE':32,'PAGEUP':33,'PAGEDOWN':34,'END':35,'HOME':36,'LEFT':37,'UP':38,'RIGHT':39,'DOWN':40,'PRINT':42,'INSERT':45,'DELETE':46,')':48,'!':49,'@':50,'#':51,'$':52,'%':53,'^':54,'&':55,'(':57,';':59,":":59,'=':61,'A':65,'B':66,'C':67,'D':68,'E':69,'F':70,'G':71,'H':72,'I':73,'J':74,'K':75,'L':76,'M':77,'N':78,'O':79,'P':80,'Q':81,'R':82,'S':83,'T':84,'U':85,'V':86,'W':87,'X':88,'Y':89,'Z':90,'WIN':91,'CONTEXTMENU':93,'0':96,'1':97,'2':98,'3':99,'4':100,'5':101,'6':102,'7':103,'8':104,'9':105,'*':106,'+':107,'-':109,'.':110,'/':111,'F1':112,'F2':113,'F3':114,'F4':115,'F5':116,'F6':117,'F7':118,'F8':119,'F9':120,'F10':121,'F11':122,'F12':123,'NUMLOCK':144,'SCROLLLOCK':145,'_':173,',':188,'<':188,'>':190,'?':191,'`':192,'~':192,'[':219,'{':219,'\\':220,'|':220,']':221,'}':221,"'":222,'"':222}        self.win_wide = win32print.GetDeviceCaps(win32gui.GetDC(0), win32con.DESKTOPHORZRES)        self.win_high = win32print.GetDeviceCaps(win32gui.GetDC(0), win32con.DESKTOPVERTRES)    @staticmethoddefget_mouse_pos():"""        获取当前鼠标坐标        """return win32api.GetCursorPos()    @staticmethoddefmouse_move(coordinates):"""        鼠标移动到制定坐标        :param coordinates: 坐标元组(x, y)        """(x, y)= coordinates        windll.user32.SetCursorPos(x, y)    @staticmethoddefmouse_click(button='left'):"""        点击鼠标        :param button: left(左键)、right(右键)、middle(中间键)        """        down_action = up_action =Noneif button =='left':            down_action = win32con.MOUSEEVENTF_LEFTDOWN            up_action = win32con.MOUSEEVENTF_LEFTUPelif button =='right':            down_action = win32con.MOUSEEVENTF_RIGHTDOWN            up_action = win32con.MOUSEEVENTF_RIGHTUPelif button =='middle':            down_action = win32con.MOUSEEVENTF_MIDDLEDOWN            up_action = win32con.MOUSEEVENTF_MIDDLEUPif down_action isnotNoneand up_action isnotNone:            win32api.mouse_event(down_action,0,0,0,0)            time.sleep(0.1)            win32api.mouse_event(up_action,0,0,0,0)defkeyboard_send(self, key_list, combine=False):"""        使用键盘模拟        :param key_list: 按键列表        :param combine: 是否组合键(True使用组合按键)        """if combine isFalse:for key_str in key_list:                key_num = self.keys_dict[key_str.upper()]                win32api.keybd_event(key_num,0,0,0)# 按下键                win32api.keybd_event(key_num,0, win32con.KEYEVENTF_KEYUP,0)# 松开键if combine isTrue:for key_str in key_list:                key_num = self.keys_dict[key_str.upper()]                win32api.keybd_event(key_num,0,0,0)# 按下键for key_str in key_list:                key_num = self.keys_dict[key_str.upper()]                win32api.keybd_event(key_num,0, win32con.KEYEVENTF_KEYUP,0)  # 松开键
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表