在Java中使用密钥仿真器的问题
我正在编写一些Java代码,以便在代码中,当事件发生时,它会从程序中打开Microsoft PowerPoint,然后模拟代码中定义的一些按键。我的问题是,当我要求它模拟一个按键,并传入我希望它模拟的按键的十进制值时,它会出错。代码如下:在Java中使用密钥仿真器的问题,java,powerpoint,Java,Powerpoint,我正在编写一些Java代码,以便在代码中,当事件发生时,它会从程序中打开Microsoft PowerPoint,然后模拟代码中定义的一些按键。我的问题是,当我要求它模拟一个按键,并传入我希望它模拟的按键的十进制值时,它会出错。代码如下: public void test(String key) throws Exception { int value = (int)key.charAt(0); Controller c = new Controller(); Exe
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。 奇怪的是,如果我用“KeyEvent.VK___A”替换“97”(这是同一个整数,即“97”,因为“KeyEvent.VK__A”返回一个整数),那么它会在PowerPoint中打印字母“A”。 我之所以要使用整数,是因为它是从程序的另一部分传入的,也是因为我希望能够模拟除字母/数字等以外的按键(还有箭头等) 我不确定问题是否出在代码中,或者是否与PowerPoint 2007有关,但如果有任何帮助,我将不胜感激
谢谢你的回答 这适用于a到z,但我仍然无法使其适用于其他值,例如?等等。根据:
VK_A
thruVK_Z
与ASCII“A”thru“Z”(0x41-0x5A)相同
字母键的KeyEvent
常量的整数值是大写字母而不是小写字母的ASCII值
这意味着您希望使用65和66,而不是97和98。VK_A的值是
ox41=65
。因此,如果将代码修改为:
c.emulateKeyTyped(65);
c.emulateKeyTyped(66);
那么它应该可以正常工作。
请注意,这只是您在上面所写内容的逻辑结论,我对
控制器
或执行器
是什么一无所知 那么,如果我真的想向屏幕发送大写字母“a”,或者如果我想发送不同的字符,例如“?”(其ascii值为63?),你在模拟键盘上的按键,那么如果你想发送大写字母a,你将模拟Shift和a(假设CapsLock关闭)。我不熟悉你正在使用的控制器类,所以我不知道你会怎么做。我们在哪里可以找到那些控制器和执行器类?