我想使用一个简单的java Robot,当我单击Ctrl + Q时键入文本。但即使我专注于另一个应用程序(例如游戏),也必须这样做。我的代码工作正常,但只有当我的JFrame处于焦点时它才会运行。
public override void WillEnterForeground(UIApplication uiApplication)
{
}
答案 0 :(得分:2)
你应该试试jnativehook
示例用法
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
import java.util.logging.*;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
public class Example implements NativeKeyListener
{
public void nativeKeyPressed(NativeKeyEvent e)
{
if(NativeKeyEvent.getKeyText(e.getKeyCode()).equals("A"))
{
Robot bot = new Robot();
bot.keyPress(KeyEvent.VK_A);
}
}
public void nativeKeyReleased(NativeKeyEvent e)
{
}
public void nativeKeyTyped(NativeKeyEvent e)
{
}
public static void main(String[] args)
{
Example ex = new Example();
try
{
GlobalScreen.registerNativeHook();
Logger logger =
Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.OFF);
}
catch(NativeHookException eb)
{
System.out.println(eb.getMessage());
}
GlobalScreen.addNativeKeyListener(ex);
}
}
这段代码使用windows的本机方法,但好处是,它很容易被java程序员读取,而不是ac#,c ++,c等程序员。这个类库会听取任何应用程序上按下的键(它是一个全局键盘监听器),如果按某个键然后执行Robot类方法(例如mousePress()等)。
P.S。所使用的类的文档位于您要下载的jnativehook文件中