CGEEVENTTAP blockiert Anwendungseingabe
-
15-11-2019 - |
Frage
Ich versuche, CGCREATEEVENTTAP zu verwenden, um globale Mausklicks zu überwachen, aber wenn ich dies tue, scheint die Interaktion mit meiner eigenen App zu blockieren.Mausklicks in anderen laufenden Apps funktionieren gut, aber meine eigene App (dh die DemoAppdelegate-App) reagiert nicht vollständig.Ich kann das Hauptfenster für die App ziehen, aber die roten / gelb / grünen Fensterschaltflächen sind ausgegraut.Und das DEMOAPP-Menü ist auch nicht so gut.
Das scheint mir wirklich seltsam zu sein, und ich konnte es nicht herausfinden.Beispiele für die Verwendung von Ereignishähnen sind wenige und weit dazwischen, so dass jeder Rat sehr geschätzt wird. generasacodicetagpre.
Lösung
When you create a Cocoa application, -[NSApplication run]
is responsible for running the event loop — it runs the run loop, and dispatches events. This means that you should remove that
CFRunLoopRun();
call at the bottom of your -applicationDidFinishLaunching:
method implementation, since it prevents -applicationDidFinishLaunching:
from returning and also prevents NSApplication
from dispatching events.