当另一个应用程序处于活动状态时使用java Robot

时间:2017-08-27 18:58:56

标签: java swing awtrobot

我想使用一个简单的java Robot,当我单击Ctrl + Q时键入文本。但即使我专注于另一个应用程序(例如游戏),也必须这样做。我的代码工作正常,但只有当我的JFrame处于焦点时它才会运行。

    public override void WillEnterForeground(UIApplication uiApplication)
    {
    }

1 个答案:

答案 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文件中