pid が指定されたプロセスに仮想キープレスを送信する次のコードがあります。
NSRunningApplication* app = [NSRunningApplication
runningApplicationWithProcessIdentifier: pid];
[app activateWithOptions: (NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)];
event1 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)cg_key_code, true);
event2 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)cg_key_code, false);
CGEventPost(kCGHIDEventTap, event1);
CGEventPost(kCGHIDEventTap, event2);
キープレスを送信したいプロセスは、予想どおり、すぐに前面に出てきます。しかし問題は、最初のキープレスが、私のアプリケーションが前面に出る前に前面にあったアプリケーションに行くことです。テスト[app isActive]
すると、初めて false が返されます。最初のキーの後、すべてがうまくいきます。
なぜこうなった?プロセスを前面に出した後、キーイベントを投稿していますが。