我正在尝试使用CGEventCreateKeyboardEvent
和CGEventPost
发送系统范围键盘快捷键(如control-f4)的击键,但没有成功。使用CGPostKeyboardEvent
发送这样的击键效果很好,但该方法已被弃用,我正在寻找替代方法。
CGPostKeyboardEvent((CGCharCode)0, (CGKeyCode)118/*F4*/, true); // worked
CGEventPost(kCGHIDEventTap, CGEventCreateKeyboardEvent(NULL, (CGKeyCode)118/*F4*/, true)); // doesn't work
有人能告诉我出了什么问题吗?或者我应该读懂些什么?恐怕这种
CGPostKeyboardEvent
发布系统范围快捷方式的能力是一个不赞成的理由。任何意见都将不胜感激! 最佳答案
我通过stackoverflow japanhttp://goo.gl/nACVPz得到了一个答案,并确认以下代码有效!
#import <Foundation/Foundation.h>
#import <Carbon/Carbon.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef f4 = CGEventCreateKeyboardEvent(source, kVK_F4, true);
CGEventSetFlags(f4, kCGEventFlagMaskControl);
CGEventTapLocation location = kCGHIDEventTap;
CGEventPost(location, f4);
CFRelease(f4);
CFRelease(source);
}
return 0;
}