当某些软件正在运行时,Java Robot密钥活动似乎停止工作

当某些软件正在运行时,Java Robot密钥活动似乎停止工作,java,mouseevent,keyboard-events,awtrobot,Java,Mouseevent,Keyboard Events,Awtrobot,我正在编写一个Java应用程序,在一夜之间自动执行在线游戏中的角色动作(特别是,它在最终幻想XI中捕捉到鱼)。该应用程序大量使用java的Robot类来模拟用户键盘输入和检测屏幕某些部分的颜色变化。它还使用多线程和swing GUI 当我在不运行游戏的情况下测试应用程序时,它似乎工作得很好,只是使用屏幕截图将应用程序的响应触发到记事本中。但出于某种原因,当我真正启动FFXI并启动程序时,我所有的键盘和鼠标操作都停止了。程序仍在运行,Robot类仍然能够读取像素颜色。但是Robot.keyPres

我正在编写一个Java应用程序,在一夜之间自动执行在线游戏中的角色动作(特别是,它在最终幻想XI中捕捉到鱼)。该应用程序大量使用java的Robot类来模拟用户键盘输入和检测屏幕某些部分的颜色变化。它还使用多线程和swing GUI

当我在不运行游戏的情况下测试应用程序时,它似乎工作得很好,只是使用屏幕截图将应用程序的响应触发到记事本中。但出于某种原因,当我真正启动FFXI并启动程序时,我所有的键盘和鼠标操作都停止了。程序仍在运行,Robot类仍然能够读取像素颜色。但是Robot.keyPress、Robot.keyRelease、Robot.mouseMove、Robot.mousePress和Robot.MOUSERRELEASE都不做任何事情。这是最奇怪的事情——为了测试它,我写了一个简单的循环,它只保持输入字母,并聚焦在记事本上。然后我开始游戏,重新聚焦记事本,它什么也做不了。然后我退出游戏,它会立即重新开始工作

有没有其他人遇到过这样的情况,特定的软件会阻止java的某些功能工作

另外,为了让这更有趣——去年我编写了一个非常类似的程序,使用相同的类和编程技术,在游戏中自动治疗一方的战斗。去年,这项计划运作良好。遇到这些问题后,我找到了那个旧程序,运行它时没有做任何更改,发现它也有同样的问题。现在和它工作时的唯一区别是:我运行的是WindowsVista,现在运行的是Windows7,并且发布了几个新的Java版本以及FFXI版本


到底怎么回事?(如果有人需要查看我的源代码,请发电子邮件至mikejturley@gmail.com.我尽量不让别人知道。)

FFXI有防止作弊的代码。这似乎相当有效。

如果可能的话,在WinXP中尝试一下。我自己也为一个在线游戏编写了一个机器人,它使用了许多相同的概念(即使用Java Robot读取像素颜色,模拟按键和鼠标点击)

在WinXP下: Bot在所有情况下均按预期工作

在Win7下:
在游戏之外,bot按预期工作。Ingame,模拟输入失败(我想像素读取是可以的)。

我可以尝试一下他们是如何做到这一点的,但我不确定我是否愿意帮助规避反作弊保护。是gameguard提供了保护吗?