Как перенести событие keydown в окно ниже - PullRequest
0 голосов
/ 05 июля 2018

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

например:

когда мое окно находится перед окном "Chrome", то когда я фокусируюсь на своем окне, строка меню по-прежнему показывает меню "Chrome". Теперь я хочу передать событие быстрого вызова в Chrome, когда мое окно активировано, я попытался ввести «команда + Q», но оно не имеет действия. Так как я могу сделать это прагматично?

 monitor = NSEvent.addGlobalMonitorForEvents(matching: mask, handler: handler)

1 Ответ

0 голосов
/ 06 июля 2018

Я вижу это как угрозу безопасности для пользователя, использующего ваше приложение. Вы можете контролировать любой ввод ключа (пароли), не сообщая пользователю. В изолированном приложении это будет сложно заархивировать, но я знаю, как будет работать пересылка событий с помощью Apple Script, как показано в примере ниже. Это также может работать с ScriptingBridge или Accessibility Framework, но я не использовал это сам. Конечно, вы должны сначала спросить сервер окна, какое приложение (окно) в данный момент отображается на экране под вашим приложением (индекс окна, фрейм).

Отправить нажатия клавиш с помощью Apple Script:

 tell application "Firefox" 
   activate 
 end tell 
 delay 1 
 tell application "System Events" 
   keystroke "l" using {command down} 
   set the clipboard to ("[@URL]") 
   keystroke "v" using {command down} 
   keystroke return 
 end tell 

Получение списка окон:

let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly)
    let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
    let infoList = windowListInfo as NSArray? as? [[String: AnyObject]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...