我可以单击窗口,但它不会移动我的角色,也不会与游戏中的任何内容进行交互。我尝试过移动鼠标,尝试过键盘输入、全屏、窗口化等。我也尝试过使用 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')
此代码不会引发错误,它会正常完成,而无需实际单击游戏窗口
最佳答案
首先,确保您以管理员身份运行脚本,有时如果不这样做,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 会执行得太快,游戏将不会注册它。
关于python - 无法使用 pyautogui/win32api/pydirectinput 在游戏窗口内单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72758727/