【问题标题】:Sending a 'copy' command in cocoa在可可中发送“复制”命令
【发布时间】:2010-05-22 21:43:54
【问题描述】:

有没有办法在不使用 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(与预期的 ZZZZZZZZZ 相比)。

我还能如何向活动窗口发送复制命令?

【问题讨论】:

    标签: cocoa events keystroke


    【解决方案1】:

    与其发布原始键事件,不如使用辅助功能 API 来触发其他应用的编辑菜单中的复制项。这可能会更可靠。

    【讨论】:

    • 除了不是每个人都启用了辅助功能 API。您可以通过转到“系统偏好设置”>“通用访问”>“为辅助设备启用访问”来启用/禁用它们
    • 没有骰子 - 我试图从中复制的应用程序没有实现任何可访问性数据(故意)。而且它没有编辑菜单,只响应 command-c 或右键>复制。
    【解决方案2】:

    我不确定我是否理解您的代码和应用程​​序代码之间的关系。你是打针还是什么?有没有你做不到的原因:[[window firstResponder] copy:nil]

    请多描述一下你在做什么。

    【讨论】:

    • 他正在尝试远程告诉另一个应用程序将所选内容复制到剪贴板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-03-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2017-06-14
    相关资源
    最近更新 更多