[英]How do I tell if the frontmost window is a NSOpenPanel / file open dialog in MacOS using Applescript?
我正在嘗試使用 AppleScript 自動更改最前面的“文件打開對話框”或 NSOpenPanel 對話框的目錄,無論 window 是否是任何應用程序的一部分。 這個想法是我按下一個熱鍵,它會控制那個對話框切換到一個特定的文件夾。
我似乎無法找到如何找到 window 的屬性,它將過濾它以用於“文件打開對話框”。 使用 Accessibility Inspector 我可以發現“類”是NSOpenPanel
。 如何使用 Applescript 獲得 window 的 class?
如果你運行下面的 AppleScript,你可以看到最前面的 window 的屬性:
tell application "anApp" to activate
delay 1
tell application "System Events"
tell process "anApp"
properties of window 1
end tell
end tell
該應用程序必須處於活動狀態才能查看 windows 的屬性; 如果應用程序在后台,您將無法獲得一致的結果。
NOOpenPanel 應該可以通過測試以下屬性的某種組合來識別:
就個人而言,我可能會依賴name
和role description
,只要應用程序通過標准的“打開”對話框,這應該是相同的。 “保存”對話框將是相同的,只是title
和name
將是“保存”而不是“打開”。
如果您有一個顯示打開或保存工作表的應用程序(附加到標題欄的子 window),而不是單獨的對話框,那么您將稍微改變一下。 獲取屬性的 AppleScript 如下所示:
tell application "anApp" to activate
delay 1
tell application "System Events"
tell process "anApp"
tell window 1
properties of sheet 1
end tell
end tell
end tell
相關可測試性質如下:
您可能必須添加邏輯來測試前面的 window 是否有工作表,該工作表應該區分對話框和工作表。
一些應用程序使用非標准的打開/保存對話框,您必須根據具體情況考慮它們。 沒有靈丹妙葯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.