首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JNA或JNI模拟Windows中的按键

问使用JNA或JNI模拟Windows中的按键
EN

Stack Overflow用户
提问于 2012-03-26 10:56:51
回答 2查看 1.7K关注 0票数 4

我想在Java中模拟一个按键。其他人也尝试过使用Robot。这只允许原子按键,在这里我想模拟按键(比如说一秒钟)然后松开。因此,我需要使用JNA或JNI。

我研究了JNative,但这似乎是为了在操作系统级别消费关键事件,而不是在操作系统级别生成它们。如何从Java生成这样的事件?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-03-26 11:04:56

在JavaDoc中:

代码语言:javascript
复制
void java.awt.Robot.keyPress(int keycode)

Presses a given key. The key should be released using the keyRelease method. 

编辑:添加示例:

代码语言:javascript
复制
    Robot robot = new Robot();
    System.out.println("You have 2 seconds to jump to the target window...");
    Thread.sleep(2000);
    robot.keyPress( KeyEvent.VK_A);
    robot.keyRelease( KeyEvent.VK_A);
    robot.keyPress( KeyEvent.VK_SHIFT);
    robot.keyPress( KeyEvent.VK_A);
    robot.keyRelease( KeyEvent.VK_SHIFT);
    robot.keyRelease( KeyEvent.VK_A);
    Thread.sleep(2000);

目标窗口上的输出:

代码语言:javascript
复制
    aA

(我知道这不是您想要的,但我将其添加给未来的读者作为参考,这样他们就不会认为JavaDoc或机器人中存在错误)

票数 2
EN

Stack Overflow用户

发布于 2012-03-26 11:09:55

实际上,使用Robot时,你可以按住一个键不放。

代码语言:javascript
复制
Robot r = ...
r.keyPress(KeyEvent.VK_A);
Thread.sleep(1000);
r.keyRelease(KeyEvent.VK_A);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9866071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档