我正在尝试模拟键盘输入 Ctrl + Up 以打开任务控制,并在此处引用了代码:
https://stackoverflow.com/a/10745616/8556692
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Open Mission Control");
CGEventSourceRef src =
CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef ctrld = CGEventCreateKeyboardEvent(src, 0x3B, true);
CGEventRef ctrlu = CGEventCreateKeyboardEvent(src, 0x3B, false);
CGEventRef upd = CGEventCreateKeyboardEvent(src, 0x7E, true);
CGEventRef upu = CGEventCreateKeyboardEvent(src, 0x7E, false);
CGEventSetFlags(upd, kCGEventFlagMaskControl);
CGEventSetFlags(upu, kCGEventFlagMaskControl);
CGEventTapLocation loc = kCGHIDEventTap; // kCGSessionEventTap also works
CGEventPost(loc, ctrld);
CGEventPost(loc, upd);
usleep(20000);
CGEventPost(loc, upu);
CGEventPost(loc, ctrlu);
CFRelease(ctrld);
CFRelease(ctrlu);
CFRelease(upd);
CFRelease(upu);
CFRelease(src);
}
NSLog(@"Done");
return 0;//NSApplicationMain(argc, argv);
}
但是失败了。
我尝试用这段代码模拟Cmd+Space(0x38 + 0x31 + Command Mask),成功了一次,我想我的代码一定有问题......