понимая разницу между CGPostKeyboardEvent и CGEventCreateKeyboardEvent - PullRequest
3 голосов
/ 03 марта 2011

Мне нужно отправить нажатие клавиши в целевое приложение, и мои первые поиски привели меня к CGEventCreateKeyboardEvent :

CGEventRef eventA = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, true);
CFRelease(eventA);

Это скомпилировано, но ничего не делало, но впытаясь понять это, я нашел это ...

CGPostKeyboardEvent( (CGCharCode)'a', (CGKeyCode)0, true);

... и это сработало.Зачем?Из того, что я читал об этом, они должны выполнять то же самое, но CGPostKeyboardEvent устарело.

(Простите, если я игнорирую детали, которые я, очевидно, должен включить- Я работаю над своей обычной глубиной, пытаюсь помочь коллегам во внеклассном проекте и просто пытаюсь выучить несколько вещей на этом пути.)

1 Ответ

3 голосов
/ 14 мая 2011

Ваша проблема в том, что вы не публикуете событие после того, как создали его.Таким образом, следующий код будет нажимать стрелку влево и затем отпустить его:

CGEventRef a = CGEventCreateKeyboardEvent(NULL, 123, true);
CGEventRef b = CGEventCreateKeyboardEvent(NULL, 123, false);
CGEventPost(kCGHIDEventTap, a);
CGEventPost(kCGHIDEventTap, b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...