有人发布了一段代码,用于以编程方式按键:
- (void)postCommandAndKey:(CGKeyCode)key {
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef keyDown = CGEventCreateKeyboardEvent(source, key, TRUE);
CGEventSetFlags(keyDown, kCGEventFlagMaskCommand);
CGEventRef keyUp = CGEventCreateKeyboardEvent(source, key, FALSE);
CGEventPost(kCGAnnotatedSessionEventTap, keyDown);
CGEventPost(kCGAnnotatedSessionEventTap, keyUp);
CFRelease(keyUp);
CFRelease(keyDown);
CFRelease(source);
}
这不是同步的。什么是确保按键处理的正确方法?
我想过使用随后的虚拟按键,但我猜想所有按键组合都可以使用。我的目标是以编程方式在当前活动的应用程序中复制/粘贴数据,而无需使用辅助功能编程。