簡體   English   中英

如何判斷最前面的 window 是否是使用 Applescript 在 MacOS 中的 NSOpenPanel / 文件打開對話框?

[英]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 應該可以通過測試以下屬性的某種組合來識別:

  • 角色描述:“對話”
  • 標題:“打開”
  • 子角色:“AXDialog”
  • 名稱:“打開”
  • 描述:“對話”

就個人而言,我可能會依賴namerole description ,只要應用程序通過標准的“打開”對話框,這應該是相同的。 “保存”對話框將是相同的,只是titlename將是“保存”而不是“打開”。

如果您有一個顯示打開或保存工作表的應用程序(附加到標題欄的子 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

相關可測試性質如下:

  • 可訪問性描述:“保存”
  • 角色描述:“表”
  • 角色:“AXSheet”
  • 描述:“保存”

您可能必須添加邏輯來測試前面的 window 是否有工作表,該工作表應該區分對話框和工作表。

一些應用程序使用非標准的打開/保存對話框,您必須根據具體情況考慮它們。 沒有靈丹妙葯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM