【发布时间】:2015-03-01 20:15:58
【问题描述】:
我有以下代码可以将虚拟按键发送到给定 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。在第一个键之后,一切都很好。
为什么会这样?尽管我在将我的流程推向前台之后发布了关键事件。
【问题讨论】:
标签: objective-c cocoa cgeventtap