15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 请问用Python能否做网页游戏的后台模拟鼠标类的脚本么?

请问用Python能否做网页游戏的后台模拟鼠标类的脚本么?

时间:2024-01-29 04:30:01 | 来源:网站运营

时间:2024-01-29 04:30:01 来源:网站运营

请问用Python能否做网页游戏的后台模拟鼠标类的脚本么?:后台模拟键盘的话需要修改内存,但是我做的是有关地下城的脚本,加上要图像识别的,所以只能在桌面模拟输入输出。

对于python来说,模拟键盘的方式据我了解有三种方式,其中有pyuserinput,win32api,以及winio。

其中第一种可以应用普通的程序或者桌面的键盘输入,第二和第三则是比较接近底层的模拟键盘,如果想做游戏的脚本便可以用第二和第三种,顺便一提第三种只使用圆孔的ps/2的键盘,第二种win32api亲测可以用于制作模拟dnf键盘移动的脚本。




Pyuserinput

要使用Pysuerinput之前需要一些准备,安装好相关的库,先安装pywin32,以及pyHook,然后再安装pyuserinput

import pymouse,pykeyboard,os,sysfrom pymouse import *from pykeyboard import PyKeyboardm = PyMouse()k = PyKeyboard()#鼠标操作:m.click(x,y,button,n) #鼠标点击#x,y –是坐标位置#buttong – 1表示左键,2表示点击右键#n – 点击次数,默认是1次,2表示双击m.move(x,y) #–鼠标移动到坐标(x,y)x_dim, y_dim = m.screen_size() #–获得屏幕尺寸#键盘操作:k.type_string(‘Hello, Python!’)# –模拟键盘输入字符串k.press_key(‘A’) #–模拟键盘按A键k.release_key(‘A’)# –模拟键盘松开A键k.tap_key(“B”) #–模拟点击B键k.tap_key(‘H’,n=2,interval=5)#–模拟点击H键,2次,每次间隔5秒k.tap_key(k.function_keys[5]) #–点击功能键F5k.tap_key(k.numpad_keys[5],3) #–点击小键盘5,3次#联合按键模拟#例如同时按alt+tab键盘k.press_key(k.alt_key)# –按住alt键k.tap_key(k.tab_key) #–点击tab键k.release_key(k.alt_key)# –松开alt键


以上便是有关Pysuerinput的相关操作,并不是很难理解,一些方法也相当方便我们使用。




win32api:

准备:安装好pywin32,pip insatall pywin32

然后使用时

import win32api

import win32con #导入这两个模块

import time #导入时间模块要有中断时间

import ctypes

以下是我自己的模拟按键按下抬起的方法:

def keydownup(num): MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA time.sleep(0.4) win32api.keybd_event(num, MapVirtualKey(num, 0), 0, 0) time.sleep(0.2) win32api.keybd_event(num, MapVirtualKey(num, 0), win32con.KEYEVENTF_KEYUP, 0)


其中MapVirtualkey是扫描码,一般不使用这个,如果要制作控制游戏人物的脚本时一定要填入扫描码才能在游戏中实现硬件级键盘模拟。

方法很简单

win32api.keybd_event(虚拟码,扫描码,0,0)

第一个参数是虚拟码有一些是不太一样的,需要自己根据自己的电脑测出相关的虚拟码,其中一些虚拟码,


left_arrow = 0x61up_arrow = 0x65right_arrow = 0x63down_arrow = 0x62a = 0x41d = 0x44x = 0x58


第二个参数是扫描码,如果一个一个去寻找扫描码会很麻烦,可以像我那样,在方法开始处或者程序起始处添加这么一句

MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA然后就可以传入虚拟码来寻找相应的扫描码




第三个是参数是作为判断按下与抬起的标识,按下时为0即可,因为键盘的全过程是按下与抬起,所有两个keybd_event才是一个完整的过程,其中一定要给其中添加一个时间暂停的,不然还是无法使用,即使在操作台或者pycharm上可以输入,在游戏中便没有效果了,时间自己可以传参数进去,也可以规定一个固定的值,这个时间便是你按住的时间




第四个参数直接为0即可

原文请关注微信公众号:孤独的s 来获取,欢迎关注

关键词:模拟,后台,脚本,游戏,请问

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭