我特别希望为LaunchBar设计自定义操作,以便可以从该实用程序启动推文。由于Notification Center具有“单击鸣叫”按钮,因此我想知道Notification Center是否具有任何挂钩,这些挂钩可让我编写脚本而无需等待程序开发人员添加执行该操作的功能。
我特别希望为LaunchBar设计自定义操作,以便可以从该实用程序启动推文。由于Notification Center具有“单击鸣叫”按钮,因此我想知道Notification Center是否具有任何挂钩,这些挂钩可让我编写脚本而无需等待程序开发人员添加执行该操作的功能。
Answers:
应用程序可以使用新的NSSharingService API 进入共享选项。这听起来像自定义启动栏动作可以与任何UNIX可执行文件进行,所以你很可能写一个小的命令行工具(或者您可能需要建立一个实际的应用程序-你必须对它进行测试)激活这个API(使用NSSharingServiceNamePostOnTwitter
),然后应显示tweet对话框。
更新:要从AppleScript启动推文,您可以执行以下操作:
tell application "System Events"
tell process "Notification Center"
-- activate notification center
if (count of UI elements) is 1 then click first menu bar's first menu bar item
-- click the tweet button
click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "Window"
end tell
end tell
此外,您可以切换“显示警报和横幅” /“请勿打扰”模式:
tell application "System Events"
tell process "Notification Center"
key down option
click first menu bar's first menu bar item
key up option
end tell
end tell
(这都是非常特定于Notification Center当前窗口布局的,很可能会随将来的OS X更新而中断-但可能会有简单的修复程序。)
keystroke
命令就可以开始鸣叫了文本。现在以编程方式完成Tweet…
我所不知道的(事实上,我认为在通知区域内有一个Twitter / Facebook 快速发布区域实际上是愚蠢的(确实应该是一个小部件),并且我已将其关闭),但是您可以使用命令行来都发送了一条读取的推文,如本网页所述,摘录如下:
要显示推文列表(用您选择的Twitter用户名替换osxdaily):
curl -s http://twitter.com/osxdaily | grep '' | cut -d">" -f2 | cut -d"<" -f1
要更新您的Twitter状态:
curl -u your_user:your_password -d status='This is My update' https://twitter.com/statuses/update.xml
curl
。无论如何,它们不应该如此。
更进一步,将我们到目前为止所学的内容汇总在一起,这是一条完全程序化的推文:
tell application "System Events"
tell process "Notification Center"
click menu bar item 1 of menu bar 1
click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
keystroke "Content of the tweet"
keystroke "D" using {command down, shift down}
end tell
end tell
当然这是脆弱的,但是现在可以了。我很想找到一个真正的钩子,但是UI脚本是一种解决方法。
出色的命令切换D。
新增:
display dialog "Tweet?" default answer "" buttons {"OK"} default button 1
set mytweet to text returned of result
tell application "System Events"
tell process "Notification Center"
click menu bar item 1 of menu bar 1
click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
keystroke mytweet
keystroke "D" using {command down, shift down}
keystroke space
end tell
end tell
我写了另一个脚本来解决Ewwis发布的脚本中的某些问题:
但是,当“通知中心”侧边栏处于打开状态时,它不起作用。
set answer to text returned of (display dialog "" default answer "")
try
set old to the clipboard as record
end try
try
set text item delimiters to linefeed
set the clipboard to paragraphs of answer as text
tell application "System Events"
tell process "Notification Center"
click menu bar item 1 of menu bar 1
try
windows
on error
click menu bar item 1 of menu bar 1
click menu bar item 1 of menu bar 1
end try
click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window 1
delay 0.1
keystroke "av" using command down
keystroke "d" using {shift down, command down}
repeat 100 times
try
delay 0.1
click menu bar item 1 of menu bar 1
exit repeat
end try
end repeat
end tell
end tell
end try
try
set the clipboard to old
end try
仅使用API会更容易。
太棒了!感谢您以另一种方式向世界展示。
我的解决方案适用于我,但您的也适用。
我不是FAR的Applescript专家,但我喜欢摆弄它。
谢谢!
使用我从您那里学到的知识,这是对我有用的另一种方法。这不能解决您对备用键盘或错误的某些担忧,但也许可以为涉足AS的人提供帮助。
display dialog "Tweet?" default answer "" buttons {"OK"} default button 1 with icon 2
set mytweet to text returned of result
tell application "System Events"
tell process "Notification Center"
click menu bar item 1 of menu bar 1
click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window "window"
keystroke mytweet
keystroke "D" using {command down, shift down}
repeat 100 times
try
delay 0.1
click menu bar item 1 of menu bar 1
exit repeat
end try
end repeat
end tell
end tell