无法使用 pyautogui/win32api/pydirectinput 在游戏窗口内单击

问题描述 投票:0回答:2

我可以单击窗口,但它不会移动我的角色,也不会与游戏中的任何内容进行交互。我尝试过移动鼠标,尝试过键盘输入、全屏、窗口化等。我也尝试过使用 pyautogui 的屏幕截图,但没有运气。我尝试使用它的游戏最初于 2000 年发布。非编码方面,我尝试过以管理员身份运行它、在 Windows XP SP 2-3 兼容模式下运行、禁用桌面组合等。

win32api代码:

import win32api, win32con
import time

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
# click(573, 841)
# time.sleep(1)
# click(289, 342)
# time.sleep(1)
time.sleep(5)
click(319, 399)
x = win32api.GetCursorPos()
print(x)

错误:

win32api.SetCursorPos((x,y)) pywintypes.error: (0, 'SetCursorPos', 'No error message is available')

pyautogui/pydirect 输入:

import pyautogui
import pydirectinput as p

import time

icon = pyautogui.locateCenterOnScreen('./icon.png', confidence=0.9)
p.click(icon[0], icon[1])
time.sleep(2)
p.press('enter')

此代码不会引发错误,它会正常完成,而无需实际单击游戏窗口

python pywin32 pyautogui
2个回答
2
投票

首先,确保您以管理员身份运行脚本,有时如果不这样做,Windows 会阻止鼠标移动。 另外,尝试这样做:

def click(x,y):
    win32api.SetCursorPos((x, y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
    time.sleep(.01)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0

你必须给它一点时间来点击,否则 Python 会太快,游戏不会注册它。


0
投票

我需要一些帮助。

我已经在主机上成功设置了所有内容,并且游戏运行完美 - 点击和键盘输入都运行良好。我能够使用 pyautoit 实现这一目标,这是唯一对我有用的工具。

但是,当我尝试在 VMware 计算机上运行相同的设置时,它不起作用。我不确定为什么它在虚拟机中的行为方式不同。

任何见解或建议将不胜感激!

© www.soinside.com 2019 - 2024. All rights reserved.