Отправить нажатие клавиши в определенное окно на Mac - PullRequest
0 голосов
/ 24 января 2019

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

Для Windows я использую следующую встроенную функцию из WinAPI:

SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );

hWnd является дескриптором целевого окна, Msg установлен на код события нажатия клавиши вниз / вверх, а wParam используется для указания кода клавиши.

Есть ли эквивалент в этом в API Mac OS?или любой другой способ достижения того же эффекта без необходимости выводить целевое окно на передний план?Я ищу решения, которые могут быть реализованы на одном из следующих языков: Java, C ++, C, AppleScript.

Обновление прогресса:

Я нашел функцию CGEventTapCreateForPSN (...) в API CoreGraphics и согласно документации он должен делать именно то, что я хочу.НО я не знаю, как получить к нему доступ из программы на Java.Насколько я знаю, API-интерфейс CoreGraphics доступен только из Objective-C и Swift, которые я не знаю, как интегрировать в Java-программу.Я могу выполнить код C и C ++, используя JNI, и AppleScript, выполнив процесс osascript.Я не очень знаком с этими тремя языками, поэтому я не знаю, есть ли способ каким-либо образом выполнить код Objective-C или Swift из них (или из Java), любая помощь с этим очень ценится.

Я рассматриваю возможность создания программы Swift или Objective-C, компиляции и сохранения ее в файле .jar программы Java, а затем извлечения ее во временную папку и выполнения при необходимости отправки событий нажатия клавиши.Думаю, это сработает, но мне бы очень понравилось, если бы существовало более элегантное решение, которое не требует выполнения второй программы каждый раз, когда я хочу отправить нажатие клавиши.

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