如何在Mac OSX中模拟ctrl + up?

问题描述 投票:0回答:1

我正在尝试模拟键盘输入Ctrl +向上以打开任务控件,并在此处引用了代码:

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 +命令掩码),它成功了一次,我认为我的代码一定有问题...

cocoa core-graphics keypress mission-control
1个回答
0
投票

啊,我已经知道了,开放任务控制并不那么复杂,只要std::system("open /System/Applications/Mission\\ Control.app");就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.