当另一个应用程序处于活动状态时使用java Robot
我想使用一个简单的java机器人,当我点击Ctrl+Q时,它会键入一个文本。但是,即使我专注于另一个应用程序(例如游戏),也必须这样做。我的代码运行得很好,但它只有在JFrame处于焦点时才能运行当另一个应用程序处于活动状态时使用java Robot,java,swing,awtrobot,Java,Swing,Awtrobot,我想使用一个简单的java机器人,当我点击Ctrl+Q时,它会键入一个文本。但是,即使我专注于另一个应用程序(例如游戏),也必须这样做。我的代码运行得很好,但它只有在JFrame处于焦点时才能运行 button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Robot robot = null;
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
robot.mouseMove(350, 150);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_T);
// Solution for different keyboard layouts (ALT values)
try {
alt(KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD0, KeyEvent.VK_NUMPAD4, KeyEvent.VK_NUMPAD7);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_Q);
}
你应该试试这个
示例用法
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程序员容易读的,不是C++、C++、C等程序员的。这个类库将侦听任何应用程序上按下的键(它是一个全局键盘监听器),如果某个键被按下,然后执行机器人类方法(例如MouSpress())。
另外,你将要下载的jnativehook文件中包含了所使用的类的文档。参见这篇文章:“但即使我专注于另一个应用程序,也必须这样做”听起来像是一个键盘记录者的素质。为什么在其他应用程序中键入的文本与此(您的)应用程序有任何关系?@AndrewThompson听起来更像一个游戏助手。几年前,我编写了一个程序,使用
Robot
在黑暗时代的Camelot.FYI,>=JNativeHook-2.0.0也支持发回本地事件,因此您不需要转换为Robots类可以理解的内容。