Answers:
在OS X中没有内置的方法可以执行此操作。但是,使用Growl可以收到通知。这是一个示例脚本:
--Make sure Growl is running
tell application "System Events"
set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell
if isRunning then
tell application id "com.Growl.GrowlHelperApp"
set the allNotificationsList to ¬
{"Test Notification", "Another Test Notification"}
--Notifications can be enabled in System Preferences>Growl>Applications>Display Options
set the enabledNotificationsList to ¬
{"Test Notification"}
register as application ¬
"Growl AppleScript Sample" all notifications allNotificationsList ¬
default notifications enabledNotificationsList ¬
-- Set the icon. You can use any icon from any application
icon of application "AppleScript Editor"
notify with name ¬
"Test Notification" title ¬
"Test Notification" description ¬
"This is a test AppleScript notification." application name "Growl AppleScript Sample"
notify with name ¬
"Another Test Notification" title ¬
"Another Test Notification :) " description ¬
"Alas — you won't see me until you enable me..." application name "Growl AppleScript Sample"
end tell
end if
那应该显示如下:
并且如果您也启用了其他通知:
由于AppleScriptObjC是macOS的一部分,因此可以使用其“基础”框架(包括NSMenu的方法)来实现2012年可能无法实现的目标。
我找到了一个有趣的脚本,可以从AppleScript中创建自定义菜单。从中我提取了合适的代码以将文本放置在macOS的菜单栏中。实际上,它仅使用菜单的“标题”来插入某些内容。
为了演示这一点,我实现了一个非常基本的对话框脚本,该脚本要求用户输入文本(等待6秒),然后将其暂时显示在菜单栏中(5秒)。
这里是:
use framework "Foundation"
use framework "AppKit"
use scripting additions
property StatusItem : missing value
property newMenu : class "NSMenu"
display dialog "Write something:" default answer "" giving up after 6
set myText to text returned of the result
if myText is "" then set myText to "TOOOOO slow … try again !"
set myText to ">> " & myText & " <<"
set bar to current application's NSStatusBar's systemStatusBar
set StatusItem to bar's statusItemWithLength:-1.0
StatusItem's setTitle:myText
set newMenu to current application's NSMenu's alloc()'s initWithTitle:"Custom"
StatusItem's setMenu:newMenu
delay 5
current application's NSStatusBar's systemStatusBar()'s ¬
removeStatusItem:StatusItem
此AppleScript代码可以在您的任何脚本中使用。(其“对话框”部分是可选的…)
user3439894 帮助关闭了我的“菜单”,请参阅脚本的最后一行。非常感谢!
/programming/29168474/creating-a-simple-menubar-app-using-applescript
。。。。。但是,我担心我在其他地方找到并修改的我的最后一行(一半时间有效)是不正确的。。。。。。我不是程序员,所以我需要更多时间来理解代码。
StatusItem's dealloc()
它仅适用于AppleScriptObjC应用程序,而不适用于脚本编辑器,并会使其崩溃。
set myText to ...
行代码(即前一个display dialog
命令)实际上不会根据后续代码执行任何操作,因此完全不需要。换言之,唯一使用的值的myText
是,在此之后被分配display dialog
命令被运行,以及为什么其设置为任何东西的前display dialog
命令是未使用的编码和没有必要在的上下文代码当前呈现。
StatusItem's dealloc()
或StatusItem's setTitle:""
我将使用:current application's NSStatusBar's systemStatusBar()'s removeStatusItem:StatusItem