【问题标题】:Program prevents mouse movement程序防止鼠标移动
【发布时间】:2014-11-29 00:20:35
【问题描述】:

我有一个用于游戏的点击机器人,但有一段时间没有使用它。 我安装了它(也许有一个新版本),我的机器人不再工作了。游戏启动时似乎以某种方式阻止了该事件。

我用这个激活游戏:

shell=win32com.client.Dispatch("Wscript.Shell")
success = shell.AppActivate("Game)

我尝试了两种移动鼠标的方法:

win32api.SetCursorPos((x,y)) 

这给了我这个错误。

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

另一种方法是:

nx = int(x*65535/win32api.GetSystemMetrics(0))
ny = int(y*65535/win32api.GetSystemMetrics(1))
win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny)

这不起作用并且不会给我错误消息。

当游戏窗口未激活时,光标移动没有问题。

有人知道解决方法吗?

编辑:我使用的是 Microsoft Windows 8.1

【问题讨论】:

  • 也许游戏使用了 DirectX? SetCursorPos 不行,你可以试试SendInput
  • 所以,游戏可能已经切换到使用 DirectX 并进行了更新?当我在家时,我会进一步研究它。您知道提供此 SendInput 功能的 python 包吗?快速的谷歌搜索让使用 SendInput 看起来有点复杂。
  • 你能举个例子吗,@Phillip

标签: python winapi python-3.x


【解决方案1】:

我尝试了 ctypes 并且有效:

ctypes.windll.user32.SetCursorPos(x, y)

【讨论】:

    【解决方案2】:

    不要坟墓挖掘旧线程,但我遇到了这个。尝试以管理员身份运行脚本,因此如果您在 CMD 中运行,请确保以管理员身份打开它。它对我有用,非常简单。我使用的是 python 和 windows 10。

    【讨论】:

    • 您需要更多信息吗?就像您使用的 Python 版本一样,为什么您需要成为管理员才能运行标准用户程序(可能是一些系统范围的配置提示)?干杯-
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多