CGEventTapCreate returns 在 macOS Mojave 中为空
CGEventTapCreate returns null in macOS Mojave
我完全坚持多年来一直有效的逻辑。当应用程序处于后台时,我正在使用它来收听键盘事件(热键)。
CFMachPortRef eventTap = CGEventTapCreate(kCGSessionEventTap,
kCGHeadInsertEventTap,
kCGEventTapOptionDefault,
CGEventMaskBit(kCGEventKeyDown) | CGEventMaskBit(kCGEventFlagsChanged),
myCGEventCallback,
nil);
if (!eventTap) {
printf("error: event tap register failed\n");
return false;
}
代码没变,一直用了很长时间,直到mojave最新更新。我该如何解决这个问题的原因?谁知道我怎样才能让它重新工作?
经过一番努力,终于成功了。将此添加到您的 info.plist:
<key>NSAppleEventsUsageDescription</key>
<string></string>
然后转到您的系统首选项 -> 安全 -> 隐私 -> 辅助功能,并确保您的应用程序在那里并经过检查。
如果它已经存在并且这种情况不断发生,请将其删除并重新添加。每次重建我的应用程序时我都必须这样做...
我完全坚持多年来一直有效的逻辑。当应用程序处于后台时,我正在使用它来收听键盘事件(热键)。
CFMachPortRef eventTap = CGEventTapCreate(kCGSessionEventTap,
kCGHeadInsertEventTap,
kCGEventTapOptionDefault,
CGEventMaskBit(kCGEventKeyDown) | CGEventMaskBit(kCGEventFlagsChanged),
myCGEventCallback,
nil);
if (!eventTap) {
printf("error: event tap register failed\n");
return false;
}
代码没变,一直用了很长时间,直到mojave最新更新。我该如何解决这个问题的原因?谁知道我怎样才能让它重新工作?
经过一番努力,终于成功了。将此添加到您的 info.plist:
<key>NSAppleEventsUsageDescription</key>
<string></string>
然后转到您的系统首选项 -> 安全 -> 隐私 -> 辅助功能,并确保您的应用程序在那里并经过检查。
如果它已经存在并且这种情况不断发生,请将其删除并重新添加。每次重建我的应用程序时我都必须这样做...