2017-08-31 2 views

Antwort

4

Sieht so aus, als ob die "doppelte" Marke entfernt wurde, aber auch die Antwort, die ich in den Kommentarbereich geklickt habe. Also, für die Nachwelt:

Der Grund, warum dies nicht funktioniert, ist, weil globale Monitore für .keyDown-Ereignisse mehr Berechtigungen als einige der anderen Event-Handler, einschließlich derjenigen, die jemand dachte, dass es ein Duplikat war. Dies liegt hauptsächlich daran, dass globale .keyDown-Monitore für schändliche Zwecke wie Keylogger verwendet werden können. Daher gibt es zusätzliche Sicherheitsmaßnahmen, um sicherzustellen, dass wir legitim sind:

1) Ihre App muss mit Code signiert werden.

2) Ihre App muss nicht die App Sandbox aktiviert ist, und:

3) Ihre App muss in der Sicherheits- und Datenschutzeinstellungsfenster registriert werden, unter Barrierefreiheit.

Der dritte dieser Dinge muss vom Benutzer aktiviert werden, aber man kann sie in dieser Richtung mit diesem Code Schubs:

let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeUnretainedValue() as String : true] 
let accessEnabled = AXIsProcessTrustedWithOptions(options) 

if !accessEnabled { 
    print("Access Not Enabled") 
} 

Dies wird den Benutzer auffordern, was ihm/ihr die Möglichkeit, Öffnen Sie automatisch den entsprechenden Einstellungsbereich, in dem der Benutzer Ihrer App erlauben kann, den Computer über die Accessibility API zu steuern. Wenn Ihre App signiert und nicht sandboxiert ist, kann Ihr globaler .keyDown-Monitor funktionieren.

+0

Vielen Dank sooo !!! –

+0

Danke dafür! –