了解CGPostKeyboardEvent和CGEventCreateKeyboardEvent之间的区别

时间:2011-03-02 21:12:31

标签: xcode macos

我需要向重点突出的应用程序发送按键,我的第一次搜索引导我CGEventCreateKeyboardEvent

CGEventRef eventA = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, true);
CFRelease(eventA);

这已编译但没有做任何事情,但在试图找出它的过程中我找到了这个......

CGPostKeyboardEvent( (CGCharCode)'a', (CGKeyCode)0, true);

......它奏效了。为什么?从我到目前为止所读到的内容来看,它们应该完成相同的事情,但CGPostKeyboardEvent已被弃用。

(请原谅我,如果我忽略了我应该明确包含的细节 - 我正在努力解决我的常规问题,试图帮助同事开展课外项目,并试图学习一些事情。 )

1 个答案:

答案 0 :(得分:3)

您的问题是,您在创建活动后并未发布活动。因此,以下代码将按左箭头然后将其释放:

CGEventRef a = CGEventCreateKeyboardEvent(NULL, 123, true);
CGEventRef b = CGEventCreateKeyboardEvent(NULL, 123, false);
CGEventPost(kCGHIDEventTap, a);
CGEventPost(kCGHIDEventTap, b);