我读过关于NSPasteBoard
在Apple文档中,以及它如何允许应用程序写入PasteBoard
并允许其他应用程序读取该文本并使用它。
有人可以告诉我如何将应用程序(位于状态栏中)的文本粘贴到NSTextField
那是在不同的应用程序内。
我想做的是类似的事情Snippet and 片段应用程序 do.
如果我完全愚蠢并且错过了 Apple Docs 中明显的内容,您能否指出我正确的路径:)
Thanks!
有人可以告诉我如何将应用程序(位于状态栏中)的文本粘贴到另一个应用程序内的 NSTextField 中。
粘贴是在接收应用程序中发生的事情。写入粘贴板就是复制。
此外,您不能假设用户想要粘贴到 NSTextField 中。它可能是 NSTextView、WebView 中的文本区域、Carbon EditText 或 MLTE 控件,或者其他一些文本编辑器,例如 Qt 或 wxWidgets 文本编辑器。他们甚至可能使用带有列表视图的应用程序,让他们可以将文本直接粘贴到其中。
因此,没有任何编程方式可以直接告诉应用程序“这里有一些文本 - 请粘贴它”。您必须将其复制到通用粘贴板,然后伪造一个通常会导致最前面的应用程序粘贴的事件。 Charlie 对 ⌘V 的建议是一种方法,尽管很棘手; Dvorak 布局将 V 放在另一个键上,而“Dvorak QWERTY ⌘”布局将 V-with-⌘(而不是 V-without-⌘)放在与 QWERTY 的 V 相同的键上。
要伪造 ⌘V 事件,请查看CG事件点击。你需要使用the CGEventCreateKeyboardEvent功能要创建事件本身,并且由于该函数需要一个键代码,因此您需要查找 ⌘V 组合的 V 部分的正确键代码,这需要通过文本输入源服务 or 键盘布局服务,取决于布局。
此时,您可能会考虑使用辅助功能在“编辑”菜单中找到“粘贴”菜单项并向其发送一条 AXPress 消息,但“粘贴”和“编辑”只是这些概念的英文单词;如果您这样做,您的应用程序将无法以任何其他语言运行。您可以按顺序(第三个菜单,第六个菜单项)进行操作,但是您的应用程序将无法在没有“文件”菜单、没有“重做”菜单项或有两个“撤消”菜单项 (Photoshop) 的应用程序中运行。打造 ⌘V 活动确实是一条出路。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)