Я создал кран с:
guard let eventTap = CGEvent.tapCreate(tap: .cgSessionEventTap,
place: .headInsertEventTap,
options: .defaultTap,
eventsOfInterest: CGEventMask(eventMask),
callback: myCGEventCallback,
userInfo: nil) else {
logger.info("failed to create event tap")
exit(1)
}
И мое приложение работает, как и ожидалось.Мое приложение может также заблокировать компьютер в любой момент после tapCreate()
, например:
let task = Process()
task.arguments = ["-suspend"]
task.launchPath = "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession"
task.launch()
. После перехода на экран входа с вышеуказанным кодом и повторного входа в систему, созданный выше кран закрываетсяthis exit .
Мне не удалось найти хук входа в систему или способ воссоздания моего tap
после того, как пользователь снова вошел в систему. Как я могу перезапустить tap
вэтот сценарий?