在Java中使用密钥模拟器的问题

时间:2009-11-13 11:00:34

标签: java powerpoint

我正在编写一些Java代码,以便在代码中,当事件发生时,它会从程序中打开Microsoft PowerPoint,然后模拟代码中定义的一些按键操作。我的问题是,当我要求它模仿按键并传入我希望它模拟的键的十进制值时,它就错了。代码如下:

public void test(String key) throws Exception {

    int value = (int)key.charAt(0);

    Controller c = new Controller();
    Executer e = new Executer(c);

    e.exec(c,"POWERPNT");

    c.delay(5000);
    c.emulateKeyTyped(97);
    c.emulateKeyTyped(98);
}

上面的代码是打开Microsoft PowerPoint并模拟键'a'和'b'(其ASCII值为'97'和'98'),而是PowerPoint打印'1'和'2'而我不知道为什么会这样。这是使用PowerPoint 2007。 奇怪的是,如果我将'97'替换为“KeyEvent.VK__A”(它是相同的整数,即'97',因为“KeyEvent.VK_A”返回一个整数),那么它会打印字母'a'罚款在PowerPoint中。 我想使用整数的原因是因为它是从程序的另一部分传入的,也是因为我希望能够模拟按键而不仅仅是字母/数字等。(还有箭头等)。

我不确定代码中是否存在问题,或者它是否与PowerPoint 2007有关,但是我们非常感谢任何帮助。


感谢目前为止的答案,

这适用于从直到但我还是不能让它适用于其他值,如?等

2 个答案:

答案 0 :(得分:0)

根据the documentation

  

VK_AVK_Z与ASCII'A'到'Z'(0x41 - 0x5A)相同

字母键的KeyEvent常量的整数值是大写字母的ASCII值,而不是小写字母。

这意味着您要使用65和66而不是97和98。

答案 1 :(得分:0)

VK_A的值为ox41 = 65。因此,如果您将代码修改为:

c.emulateKeyTyped(65);
c.emulateKeyTyped(66);

然后它应该工作正常。 请注意,这只是您上面所写内容的逻辑结论,我不知道ControllerExecutor是什么!