有没有办法从OSX应用程序中检测当前选中/突出显示的文本并将其存储在字符串中?
例如,如果我进入Safari并从随机网站突出显示一个段落,然后启动我的应用程序,有没有办法获取我在Safari中突出显示的文本?
我还没有听说过这个,但我不是一个例子,所以我不确定它是否可能。
谢谢!
答案 0 :(得分:0)
通常,要从其他应用获取所选文本,您需要启用辅助功能。也就是说,它需要被授权来控制系统。 在代码中,您可以使用AX辅助功能API,也可以将AppleScript与#34;系统事件"
一起使用使用Safari,您可以拥有自定义扩展,但这将同样复杂且投资回报率更低。
答案 1 :(得分:0)
这适用于使用Command C进行复制的任何应用程序,即几乎所有应用程序。以下示例适用于Safari。在运行之前,请确保用户在Safari中突出显示文本,并且随后不会更改选项卡或窗口。如果用户专注于另一个应用程序,则可以。延误至关重要。你可以用更少的时间逃脱,但这一切都取决于运行时用户系统的状态,因此延迟越长,过程越健壮。
tell application "System Events"
tell application "Safari" to activate -- focus on Safari's current tab
delay 0.25 --critical
keystroke "c" using command down -- copy clipboard contents
delay 0.25 --critical
end tell
set highlightedText to the clipboard as Unicode text
display dialog highlightedText -- just to see the results, otherwise delete
set the clipboard to "" -- return clipboard to blank state
如果您打算使用Safari进行此操作,那么以下是您最好的选择,通常不需要延迟。否则,与上述相同的附带条件。
tell application "Safari"
set highlightedText to (do JavaScript "(''+getSelection())" in document 1) as string
end tell