3

OS X でのウィンドウ管理 (WinSplit Revolution のようなものを達成しようとしている) を調べています。特定のモニターでウィンドウの最大サイズを引き出すには、applescript を使用する必要があります。現在、私は見つけました:

tell application "Safari"
    set screen_width to (do JavaScript "screen.availWidth" in document 1)
    set screen_height to (do JavaScript "screen.availHeight" in document 1)
end tell

これは、マルチ モニター セットアップのメイン モニターには機能しますが、セカンダリ モニターにはまったく機能しません。ここで詳しく説明されている方法も読みましたが、これは明らかに複数のディスプレイでは効率的に機能しません。AppleScript を使用して複数のディスプレイの最大ウィンドウ サイズを取得する効果的な方法はありますか?

4

1 に答える 1

3

システムの plist ファイルを読み取ってモニターのサイズを取得しようとする試みが数多く行われています。http://macscripter.net/viewtopic.php?id=15425を参照してください。

AppleScript studio (ASS) 用語にアクセスできる場合は、NSScreen にメソッドを呼び出してすべてのモニターを取得し、それらのサイズを尋ねることができます。プレーンな AppleScript で ASS 用語を使用する最も簡単な方法は、空の ASS アプリケーションを Xcode でコンパイルすることです。この例では、ASS 用語にアクセスできる ASSAccess という名前の単純な ASS アプリを作成しました。

tell application "ASSAccess"
    -- The first item in this list will be your main monitor
    set screensArray to call method "screens" of class "NSScreen"

    set Displays to {}
    if {} is not screensArray then
        repeat with displayNo from 1 to (count screensArray)
                    -- call visibleFrame instead to take into account the Dock and menubar
            set dims to call method "frame" of (item displayNo of screensArray)
            copy dims to end of Displays
        end repeat
    end if
end tell

さて、これらの寸法で遭遇する問題は座標系です。NSScreen のフレーム メソッドは、メイン モニターの左下隅に原点を持つ長方形を提供します。次に、二次画面はその起点に相対的に与えられます。ウィンドウがこれらの境界内にあるかどうかを判断しようとしている場合、ウィンドウの位置は、原点が左上隅にある座標系内にあります。これは、私がまだ理解していない変換の全体的な混乱です。

于 2009-02-25T19:09:41.047 に答える