เนื่องจากAppleScriptObjCเป็นส่วนหนึ่งของ macOS จึงเป็นไปได้ที่จะใช้เฟรมเวิร์ก "พื้นฐาน" (รวมถึงวิธีการของ NSMenu) เพื่อให้บรรลุสิ่งที่อาจเป็นไปไม่ได้ในปี 2555
ฉันพบสคริปต์ที่น่าสนใจในการสร้างเมนูที่กำหนดเองจากภายใน 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 ช่วยด้วยการปิด "เมนู" ของฉันดูบรรทัดสุดท้ายของสคริปต์ ขอบคุณมาก!