如何发送“Cmd-C”在 Objective-C 中对活动应用程序进行击键,或者告诉应用程序执行复制操作?
获取活动应用程序不是问题,我已经实现了这个。
我想知道的是如何将“Cmd-C”组合键发送到活动应用程序,以便将所选文本放入剪贴板(通用粘贴板)中。
或者甚至更好:如何告诉活动应用程序执行复制操作而不发送击键,或者在触发复制操作时不突出显示“编辑”菜单。
我无法使用 NSAppleScript (10.2),因为这个特定的类必须尽可能向后兼容(理想情况下低至 10.0)。
我看过 NSAppleEvents (这似乎是可行的方法),但似乎找不到一种方法来做到这一点。非常欢迎具体的答案!
提前致谢!
更新:
Rob 的 NSAppleScript 解决方案可以工作,但我仍然有兴趣在不需要 NSAppleScript 的情况下完成此操作。我尝试使用 CGPostKeyboardEvent (使用最后一个布尔值将键设置为其“向上”或“向下”状态),但我似乎找不到键代码或任何字符代码表。有人可以精确说明如何使用 CGPostKeyboardEvent 来输入“c”吗? (CGCharCode 和 CGKeyCode 表就完美了)。
Getting the active application is not a problem, I already have this implemented.
What I want to know is how to send a "Cmd-C" key combination to the active application so it puts the selected text in the clipboard (general pasteboard).
Or even better: how to tell the active application to do a copy operation without sending the keystroke, or without highlighting the "Edit" menu when the copy operation is triggered.
I can't use NSAppleScript (10.2) because this specific class must be as backwards-compatible as possible (down to 10.0 ideally).
I have looked at NSAppleEvents (which would seem the way to go) but can't seem to find a way to do this. A specific answer would be very welcome!
Thanks in advance!
UPDATE:
The NSAppleScript solution by Rob works but I'm still interested in doing this without the need for NSAppleScript. I've tried using CGPostKeyboardEvent (using the last boolean value to set the key to its "up" or "down" status) but I can't seem to find the key codes or any character code tables. Could someone precise how CGPostKeyboardEvent would be used to type a "c"? (a CGCharCode and CGKeyCode table would be perfect).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅 GCPostKeyboardEvent。
See GCPostKeyboardEvent.
如果您可以在计算机上启用系统事件(访问辅助设备),则可以使用 NSAppleEvent [编辑:实际上是 NSAppleScript] initWithSource 发送此脚本:
不过,我真的不知道何时引入系统事件。
If you can enable System Events (access for assistive devices) on the computer, you can send this script with an NSAppleEvent [EDIT: actually NSAppleScript] initWithSource:
I don't really have any idea when System Events was introduced, though.