【问题标题】:Java Robot class working in laptop but not pcJava Robot 类在笔记本电脑上工作,但不是在电脑上工作
【发布时间】: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! ..

标签: java awt awtrobot


【解决方案1】:

这个问题的简单答案肯定不是在游戏中作弊吗?

尝试将 e.printStackTrace() 添加到您的 catch 块中,并查看 PC 版本上是否有错误,而不是笔记本电脑上。

【讨论】:

  • 好吧,我不同意你的简单回答。我认为,如果您编写一些程序来帮助您在游戏中获得帮助,那么首先学习新的编程知识是一件好事,而且对您自己也有好处,因为您可以用鼠标完成自动化操作。例如,在 EVE Online 中,有一个内置的自动驾驶仪,这不是很好。自己飞就更好了。我已经编写了一个自动驾驶仪来模拟我用鼠标完成的飞行。我每次跳跃节省了 1.2 分钟。我学到了东西。
  • @Glen Lamb:我在我的 PC 中尝试了 e.printStackTrace(),但没有出现错误,我没有在游戏中作弊。只是想通过弄乱它来正确理解它。
  • @Loki:我同意你关于自动化的看法。我刚刚发现了 Java Robot 并为之疯狂。我正在尽可能多地弄乱它以正确理解它。所以我遇到了这个问题。
  • 嗯,也许你需要试试 System.out.println(e.getStackTrace());作为标准错误可能不会进入您的终端。你是从我假设的终端运行的?
  • 我正在使用 NetBeans。试过 System.out.println(e.getStackTrace());但仍然没有错误。
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多