Отправка команды «копировать» в какао - PullRequest
2 голосов
/ 11 января 2010

Есть ли способ отправить инструкцию copy (command-c) без использования cgEvent для имитации нажатий клавиш? У меня нет доступа к текстовому полю в приложении, из которого я хочу получить текст, поэтому необходимо выполнить репликацию вручную, копируя в буфер обмена, и, похоже, в сообщении cgevent есть ошибка.

Согласно документации по Кварцу, для ввода заглавной буквы Z я должен использовать:

CGEventRef event1, event2, event3, event4;
event1 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)56, true);
event2 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, true);
event3 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, false);
event4 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)56, false);

Однако, если я присоединяю этот набор инструкций к NSTimer, он работает только при первом запуске. пример вывода:

ZzzZzzzzZZzzZ (vs expected ZZZZZZZZZ).

Как еще можно отправить команду копирования в активное окно?

Ответы [ 3 ]

1 голос
/ 12 января 2010

Вместо публикации событий необработанных ключей лучше использовать API-интерфейсы специальных возможностей, чтобы вызвать пункт «Копировать» в меню «Правка» другого приложения.Это, вероятно, будет более надежным.

1 голос
/ 22 мая 2010
0 голосов
/ 11 января 2010

Я не уверен, что понимаю связь между вашим кодом и кодом приложения. Вы делаете инъекцию или что-то? Есть ли причина, по которой вы не можете сделать: [[window firstResponder] copy:nil]?

Опиши еще немного, что ты делаешь, пожалуйста.

...