Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用密钥仿真器的问题_Java_Powerpoint - Fatal编程技术网

在Java中使用密钥仿真器的问题

在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

我正在编写一些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。 奇怪的是,如果我用“KeyEvent.VK___A”替换“97”(这是同一个整数,即“97”,因为“KeyEvent.VK__A”返回一个整数),那么它会在PowerPoint中打印字母“A”。 我之所以要使用整数,是因为它是从程序的另一部分传入的,也是因为我希望能够模拟除字母/数字等以外的按键(还有箭头等)

我不确定问题是否出在代码中,或者是否与PowerPoint 2007有关,但如果有任何帮助,我将不胜感激


谢谢你的回答

这适用于a到z,但我仍然无法使其适用于其他值,例如?等等。

根据:

VK_A
thru
VK_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关闭)。我不熟悉你正在使用的控制器类,所以我不知道你会怎么做。我们在哪里可以找到那些控制器和执行器类?