2017-07-14 68 views
0

我想用AppleScript命令控制應用程序(Shady.app)。不幸的是,它沒有標準菜單欄文件,例如文件,編輯,視圖等。如何在AppleScript中發送菜單欄應用程序(不含菜單欄菜單項)命令?

我的目標是以某種方式通過AppleScript嚮應用程序發出命令,以便它將切換「打開黑幕」&「關閉黑幕關閉」命令:

Shady App

注:‘打開黑幕開’是關斷狀態,並將其變爲‘關閉黑幕關’黑幕時處於接通狀態。

如何創建一個腳本,基於它在AppleScript中的當前狀態切換這兩個方向?還是有比AppleScript更好的方式來以編程方式控制它?

回答

0

你可以通過Keyboard Maestro這樣做。這裏有一個形象展示你想要什麼行動:

enter image description here

爲了記錄在案,我也認爲這是如此真棒,我還包括一個方法來創建一個變暗/減輕全球快捷:

enter image description here

enter image description here

你還必須擁有「顯示停靠圖標」系統偏好設置中開啓這個工作!

請參閱this post在論壇上獲取更多信息。我會繼續和它貼在這裏,以及爲了方便起見,並規避鏈接腐:


sonicly:

我有一個運行只在菜單欄的應用程序的應用程序。它有一個簡單的命令,基本上是「打開應用程序」/「關閉應用程序」。有沒有辦法讓Keyboard Maestro設置一個全局熱鍵來啓動這個應用程序的命令?

我只是碰到這個話題既解決您的問題跑了:osx - How to send a menubar app (with no menubar menu items) a command in AppleScript? - Stack Overflow

我不知道,如果你是OP或沒有,我沒有測試過建議的解決方案。但也許它至少會讓你開始。

sonicly:

所以我可以使它顯示在Dock中,並與我能夠設置工作的鍵盤快捷鍵......但是我必須先獲得焦點上的應用程序(即,cmd-tab)。這是一個麻煩,我寧願只是發出像命令選項shift-space這樣的東西來打開它,然後再次切換它。這似乎是可行的與KM,但我不知道如何讓藝術大師做本身

這是KM非常簡單,只需使用

另一種選擇是使用Select or Show a Menu Item action (KM Wiki),但我不確定它是否會在這種情況下工作。

+0

這真的太棒了。非常感謝通過屏幕截圖的詳細說明! – ylluminate

1

通過短切發送命令的標準方法是:

System Preferences > Keyboard > Shortcuts > App Shortcuts 

enter image description here

點擊+並選擇黑幕,那麼你就可以定義短切你想用。請記住,您需要使用 + 選項卡先切換到Shady,然後使用快捷方式。

如果您使用像FastScripts這樣的應用程序,那麼您可以創建一個全局快捷方式,而不必先切換到應用程序,如果應用程序沒有焦點,有時會更好。

+0

非常有趣。我正在尋找後者的GLOBAL快捷方法,所以是的......我通常運行Shady而沒有Dock圖標,所以它不是我可以切換到的,因此爲什麼第一個選項不是最佳選擇。 – ylluminate

+0

FastScripts上的良好通話! – ylluminate

1

這AppleScript的將 「打開黑幕關」

tell application "System Events" 
    try 
     click menu item "Turn Shady Off" of menu 1 of menu bar item "Shade" of menu bar 1 of application process "Shady" 
     click menu bar item 1 of menu bar 2 of application process "Shady" 
    end try 
end tell 

這AppleScript的將 「打開黑幕論」

tell application "System Events" 
    try 
     click menu item "Turn Shady On" of menu 1 of menu bar item "Shade" of menu bar 1 of application process "Shady" 
     click menu bar item 1 of menu bar 2 of application process "Shady" 
    end try 
end tell 

假設它是在狀態欄中正在運行。

這將打開和關閉

on toggle() 
    tell application "System Events" 
     try 
      click menu item "Turn Shady On" of menu 1 of menu bar item "Shade" of menu bar 1 of application process "Shady" 
     end try 
     try 
      click menu item "Turn Shady off" of menu 1 of menu bar item "Shade" of menu bar 1 of application process "Shady" 
     end try 
     click menu bar item 1 of menu bar 2 of application process "Shady" 
    end tell 
end toggle 

toggle() 

保存它作爲一個應用程序在ScriptEditor或在Automator的服務或任何你選擇。不需要FastScripts。

+0

有時我更喜歡使用兩個單獨的腳本,而不是一個帶有條件的腳本。這樣我可以對每個腳本使用聽寫命令。一個增強的聽寫命令「Turn Shady On」,另一個用於「Turn Shady Off」 – wch1zpink

+0

這真是個好主意!不幸的是,由於某種原因,聽寫在我的系統上超慢,這是不可行的。你還可以提供切換方法以及@ wch1zpink? – ylluminate