如何在objective-c中向活动应用程序发送“Cmd-C”击键,或者告诉应用程序进行复制操作?

时间:2009-10-01 19:21:57

标签: objective-c cocoa appleevents

获取活动应用程序不是问题,我已经实现了这一点。

我想知道的是如何将“Cmd-C”组合键发送到活动应用程序,以便将所选文本放入剪贴板(常规粘贴板)。

甚至更好:如何告诉活动应用程序在不发送击键的情况下执行复制操作,或者在触发复制操作时不突出显示“编辑”菜单。

我无法使用NSAppleScript(10.2),因为此特定类必须尽可能向后兼容(理想情况下低至10.0)。

我已经看过NSAppleEvents(这似乎是要走的路),但似乎找不到办法做到这一点。非常欢迎具体的答案!

提前致谢!

更新

Rob的NSAppleScript解决方案可以工作,但我仍然有兴趣在不需要NSAppleScript的情况下这样做。我已经尝试使用CGPostKeyboardEvent(使用最后一个布尔值将键设置为“向上”或“向下”状态)但我似乎无法找到键代码或任何字符代码表。有人可以准确地用CGPostKeyboardEvent来键入“c”吗? (CGCharCode和CGKeyCode表将是完美的。)

2 个答案:

答案 0 :(得分:5)

请参阅GCPostKeyboardEvent

答案 1 :(得分:2)

如果您可以在计算机上启用系统事件(辅助设备访问),则可以使用NSAppleEvent [编辑:实际上是NSAppleScript] initWithSource发送此脚本:

tell application "System Events" to keystroke "c" using command down

我不知道什么时候引入系统事件。