概述
我搜索了很多directx游戏的模拟鼠标点击和移动。我找到了一个很好的按键来源,但没有找到鼠标。实际上有一个关于直接输入的按键(Simulate Python keypresses for controlling a game)的很好的stackoverflow主题。但我没有足够的经验让它在特定的位置点击鼠标。在
我试过很多python模块,比如pyautogui,win32等等,但都不起作用。甚至我试着用发送参数到“.ahk”文件的autohotkey上点击它,但它不稳定,不是一个好方法。我会感谢你的每一条评论。我只做了两天的点击,我完全迷路了。谢谢!在
我从reddit找到了这个代码,用于在游戏中点击,但它也不起作用。在import ctypes
PUL = ctypes.POINTER(ctypes.c_ulong)
class KeyBdInput(ctypes.Structure):
_fields_ = [("wVk", ctypes.c_ushort),
("wScan", ctypes.c_ushort),
("dwFlags", ctypes.c_ulong),
("time", ctypes.c_ulong),
("dwExtraInfo", PUL)]
class HardwareInput(ctypes.Structure):
_fields_ = [("uMsg", ctypes.c_ulong),
("wParamL", ctypes.c_short),
("wParamH", ctypes.c_ushort)]
class MouseInput(ctypes.Structure):
_fields_ = [("dx", ctypes.c_long),
("dy", ctypes.c_long),
("mouseData", ctypes.c_ulong),
("dwFlags", ctypes.c_ulong),
("time", ctypes.c_ulong),
("dwExtraInfo", PUL)]
class Input_I(ctypes.Union):
_fields_ = [("ki", KeyBdInput),
("mi", MouseInput),
("hi", HardwareInput)]
class Input(ctypes.Structure):
_fields_ = [("type", ctypes.c_ulong),
("ii", Input_I)]
def set_pos(x, y):
x = 1 + int(x * 65536./1920.)
y = 1 + int(y * 65536./1080.)
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.mi = MouseInput(x, y, 0, (0x0001 | 0x8000), 0, ctypes.pointer(extra))
command = Input(ctypes.c_ulong(0), ii_)
ctypes.windll.user32.SendInput(1, ctypes.pointer(command), ctypes.sizeof(command))
def left_click():
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.mi = MouseInput(0, 0, 0, 0x0002, 0, ctypes.pointer(extra))
x = Input(ctypes.c_ulong(0), ii_)
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.mi = MouseInput(0, 0, 0, 0x0004, 0, ctypes.pointer(extra))
x = Input(ctypes.c_ulong(0), ii_)
ctypes.windll.user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))
left_click()函数正在工作,但click适用于所有模块,我需要的是设置_pos()来工作,但不幸的是,它没有工作。在
最后
以上就是羞涩乐曲为你收集整理的python点击按钮打开游戏_Python鼠标点击游戏(直接输入)的全部内容,希望文章能够帮你解决python点击按钮打开游戏_Python鼠标点击游戏(直接输入)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复