请原谅我,如果这个问题被多次询问过,但在查找了许多问题后,我仍然无法找到明确的答案。我有一个机器人类,它发送键盘输入,就像在Eclipse中运行它的宏一样。
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class Macro
{
public static void main (String args[]) throws AWTException, InterruptedException
{
Robot r = new Robot();
while(true)
{
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_V);
r.delay(500);
r.keyPress(KeyEvent.VK_T);
r.KeyRelease(KeyEvent.VK_T);
r.delay(500);
}
}
}
假设这种情况下运行机器人,打开记事本,将焦点放入记事本,程序将正常工作键入记事本。但是,如果我要最小化记事本,打开谷歌,机器人将开始输入谷歌而不是记事本。 我想要的是机器人只能在我选择的程序中运行(例如记事本),并且当所选程序最小化时也运行。这样我的机器人可以在最小化的程序中运行,我可以在没有机器人影响我的情况下在我的电脑中做其他事情。
我听说过java中不可能出现的情况以及本机代码中我不得不这样做,但是其他人已经说过可以使用JNativeHook或某种类型的Actionlistener等扩展。我钻研了JNativeHook但它似乎没有解决我的确切问题。 JNativeHook能够在Ecipse最小化的同时进行键盘输入检测,而不是Eclipse检测我的键盘输入,我想要一个我选择的选定程序(例如记事本)来检测键盘输入。
第二个问题是,我不想要“GLOBAL”检测,而是将检测过滤到我的机器人类。因此,它能够将检测与我的打字和机器人打字区分开来。即使我能解决前两个问题。第三个问题是我希望机器人只在选定的应用程序中输入(例如记事本),而不会干扰我在做其他事情时输入的内容。
我想用Eclipse / java实现什么?还有其他选择吗?任何意见都非常感谢。