在cocoa中发送'copy'命令

时间:2010-01-11 16:36:20

标签: cocoa events keystroke

有没有办法在不使用cgEvent来模拟击键的情况下发送副本(command-c)指令?我无法访问我想要从中获取文本的应用程序中的文本字段,因此需要手动复制到剪贴板,并且似乎存在cgevent发布的错误。

根据Quartz文档,要键入大写 Z ,我应该使用:

CGEventRef event1, event2, event3, event4;
event1 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)56, true);
event2 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, true);
event3 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)6, false);
event4 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)56, false);

但是,如果我将这组指令附加到NSTimer,它只会在第一次触发时起作用。示例输出:

ZzzZzzzzZZzzZ (vs expected ZZZZZZZZZ).

我怎样才能将复制命令发送到活动窗口?

3 个答案:

答案 0 :(得分:1)

您可能最好使用辅助功能API在其他应用的“修改”菜单中触发“复制”项,而不是发布原始键事件。这可能会更可靠。

答案 1 :(得分:1)

答案 2 :(得分:0)

我不确定我是否理解您的代码与应用程序代码之间的关系。你注射什么的吗?有没有理由你做不到:[[window firstResponder] copy:nil]

请详细说明你正在做的事情。