Проблемы с использованием эмулятора ключей в Java - PullRequest
0 голосов
/ 13 ноября 2009

Я пишу некоторый код 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, но любая помощь будет высоко ценится.


Спасибо за ответы, пока

Это работает для перехода к z, но я все еще не могу заставить его работать для других значений, таких как? и т.д.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2009

Значение VK_A составляет ox41 = 65. Следовательно, если вы измените свой код как:

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

тогда должно работать нормально. Обратите внимание, это просто логический вывод из того, что вы написали выше, я не знаю ни йоты о том, что такое Controller или Executor !!

0 голосов
/ 13 ноября 2009

Согласно документации :

VK_A через VK_Z совпадают с ASCII 'A' через 'Z' (0x41 - 0x5A)

Целочисленные значения для KeyEvent констант для буквенных ключей являются значениями ASCII для букв в верхнем регистре , а не в нижнем.

Это означает, что вы хотите использовать 65 и 66, а не 97 и 98.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...