我正在编写一些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有关,但是我们非常感谢任何帮助。
感谢目前为止的答案,
这适用于从直到但我还是不能让它适用于其他值,如?等
答案 0 :(得分:0)
VK_A
到VK_Z
与ASCII'A'到'Z'(0x41 - 0x5A)相同
字母键的KeyEvent
常量的整数值是大写字母的ASCII值,而不是小写字母。
这意味着您要使用65和66而不是97和98。
答案 1 :(得分:0)
VK_A的值为ox41 = 65
。因此,如果您将代码修改为:
c.emulateKeyTyped(65);
c.emulateKeyTyped(66);
然后它应该工作正常。
请注意,这只是您上面所写内容的逻辑结论,我不知道Controller
或Executor
是什么!