写入键盘缓冲区,以便在自己的应用程序之外使用

时间:2012-08-14 22:02:10

标签: java operating-system awtrobot keystroke

我正在写一个获取Apple Remote信号的应用程序,我已经读完了遥控器上的硬件输入。现在我必须在遥控器上复制这些输入,例如键盘缓冲区或其他任何东西。我注意到java.awt.Robot中有一个Java类,但命令只是发送到Java应用程序本身而不是系统范围(!),如果我错了,请纠正我。

但是我需要一个解决方案让我的程序虚拟地按下系统范围的键盘,例如在MS Powerpoint等同步启动的程序中使用箭头键支持页面翻转。

有什么建议吗?

我的机器人“罗伯特”(因为我来自德国)没有工作的例子,它将通过系统范围内的按钮而不是应用程序范围。

switch(line) {
        case LEFT: System.out.println("left");
                   robert.keyPress(37);
                   robert.keyRelease(37);
                   break;
        case RIGHT: System.out.println("right");
                    robert.keyPress(39);
                    robert.keyRelease(39);
                    break;
        case UP: System.out.println("up");
                    robert.keyPress(38);
                    robert.keyRelease(38);
                    break;
        case DOWN: System.out.println("down");
                    robert.keyPress(38);
                    robert.keyRelease(38);
                    break;
        case PLAYPAUSE: System.out.println("play pause");
                    robert.keyPress(516); // dollar sign
                    robert.keyRelease(516);
                    break;
        case MENU: System.out.println("menu");
                    robert.keyPress(515); // euro sign
                    robert.keyRelease(515);
                    break;
    }

1 个答案:

答案 0 :(得分:0)

实际上,Robot类将能够控制你的鼠标和键盘“系统范围”,也就是说你可以使用它来模拟另一个应用程序的键盘输入。但是,对于此应用程序来接收“击键”,它实际上必须具有焦点(“活动”)。