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

标签 python pywin32 pyautogui

我可以单击窗口,但它不会移动我的角色,也不会与游戏中的任何内容进行交互。我尝试过移动鼠标,尝试过键盘输入、全屏、窗口化等。我也尝试过使用 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/

相关文章:

python - psycopg2 无法插入特定列

python - pywin32 和 pygui 错误找不到版本

python - 如何检查 PyWin 时间类型

python - 如何使用 hinstance 确定 win32api.ShellExecute 是否成功?

python 意外退出运行 pyautogui

python - 我的 Python 程序中的安全漏洞

python - 在 numpy 中通过数组嵌套 for 循环的更好替代方案?

java - 无法从 Python 服务器向 Java 客户端发送任何内容

node.js - 是否有类似于 NodeJS 的 PyAutoGUI 的东西可以尝试在屏幕捕获中定位图像?

python - 将 pyperclip 复制到剪贴板与 pyautogui 粘贴相结合?