【发布时间】:2013-08-23 18:47:34
【问题描述】:
这是我对 stackoverflow 的第一个问题。过去,每当我遇到困难时,都会给我很多帮助。无论如何,这是问题所在:
我在我的 PC 中使用 Java Robot。一切都很好,就像我可以在其他应用程序(如游戏等)中输入记事本移动鼠标。但只有这一款游戏 Java 机器人无法运行。在这个游戏中没有检测到任何东西,甚至没有鼠标移动。我试图对此进行一些研究并得出结论,也许该游戏具有某种反机器人系统。请记住,这是在我的 Windows 7 64 位电脑中。然后我想在我的笔记本电脑(也是windows 7 64bit)上在同一个游戏上使用相同的代码,它成功了!
所以我的问题是为什么会发生这种情况?为什么它可以在我的笔记本电脑上运行,而不是在我的 PC 上运行?
代码如下:
package test_bot1;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class test_BOT1 {
public static void main(String[] args) {
try{
Robot bot = new Robot();
bot.delay(3000);
bot.mouseMove(500, 0);
for(int i = 0; i < 10; i++){
bot.keyPress(KeyEvent.VK_A);
}
bot.delay(100);
bot.keyRelease(KeyEvent.VK_A);
bot.delay(100);
bot.keyPress(KeyEvent.VK_TAB);
bot.delay(200);
bot.keyRelease(KeyEvent.VK_TAB);
bot.delay(159);
bot.keyPress(KeyEvent.VK_1);
bot.delay(179);
bot.keyRelease(KeyEvent.VK_1);
}catch(Exception e){
}
}
}
K 出局!
【问题讨论】:
-
一个空的 catch 块是一个非常糟糕的主意。
-
他们使用相同版本的Java吗?
-
@mabbas 我这样做只是为了测试机器人的工作原理。
-
是的,他们使用相同版本的 java
-
“我只是为了测试做了这个” 如果代码忽略了输出,这不是一个好的测试。将
catch (Exception e) { ..形式的代码更改为catch (Exception e) { e.printStackTrace(); // very informative! ..