1

AppleScriptプログラムについて助けが必要です。

開いていてドックにあるすべてのウィンドウを一覧表示したいので、これを試しました:

tell application "System Events"
set procs to processes
set windowInDock to {}
repeat with proc in procs
    try
        if exists (window 1 of proc) then
            repeat with w in (every window of proc whose miniaturized is true)
                copy a & w's miniaturized to the end of windowInDock
            end repeat
        end if
    end try -- ignore errors
end repeat
end tell
return windowInDock

ただし、空の配列を返します。

すべてのウィンドウを一覧表示して、小型化されたパラメーター(wは小型化)を取得しようとしましたが、機能しません。

何か考えはありますか?

ありがとうございました!

4

2 に答える 2

3

existsコマンドは任意のオブジェクトに対して機能しますが、システム イベントからのウィンドウプロパティは、アプリケーションからのウィンドウ プロパティとは異なります (たとえば、縮小されたプロパティはありません)。それらのすべてを無視していなければ、エラーが表示されたはずです。少なくともエラーをログに記録せずに、try ステートメントで一連のコードをラップすることは、それを求めているだけです。

できることは、アプリケーションのリストを取得してから、アプリケーションのウィンドウに関する情報を取得するように依頼することです。真の値のリストで何をしようとしていたのかわからないので、私の例ではウィンドウ インデックスを使用しました。

tell application "System Events" to set theNames to name of processes whose background only is false
set windowsInDock to {}
repeat with appName in theNames
    tell application appName to repeat with aWindow in (get windows whose miniaturized is true)
        tell aWindow to try
            get it's properties -- see event log
            set the end of windowsInDock to "window " & it's index & " of application " & quoted form of appName
        on error errmess -- ignore errors
            log errmess
        end try
    end repeat
end repeat

choose from list windowsInDock with prompt "Miniaturized windows:" with empty selection allowed
于 2012-04-15T23:09:53.383 に答える
2

これは、少なくとも私のシステムでは、すべてのアプリケーションで機能するスクリプトです。

これを試して

set windowsInDock to {}
tell application "System Events"
    repeat with this_app in (get processes whose background only is false and windows is not {}) --get applications with 1+ window
        set windowsInDock to windowsInDock & (get windows of this_app whose value of its attribute "AXMinimized" is true)
    end repeat
end tell
return windowsInDock
于 2012-04-21T03:35:16.563 に答える