0

引き出しを含めた窓の大きさや位置を測りたい。最初の引き出しのサイズ/位置を取得する方法はすでにわかっていますが、他の引き出しにアクセスする方法が見つかりません(Googleも試行もしていません)。次のような操作を行って、最初のドロワーにアクセスできます。

tell application "System Events"
  set appProcess to the first process whose name is "DrawerTest"
  set appWindow to the first window of appProcess
  if (count drawers of appWindow) > 0 then
    set {{w, h}} to size of drawer of appWindow
    set {{x, y}} to position of drawer of appWindow
    set drawerBounds to {x, y, x + w, y + h}
  end if
end tell

drawerBounds

私が書いfirst drawerたりdrawer 1、エラーが発生したりするとExecution Error: Can’t get item 1 of 116.(最後の数は異なります)、Error -1728.(時々変わるようですが-1719、同様にありました)。書き込めない、書き込めない、またはfirst(同じエラーが発生する)。ただし、最初の引き出しにアクセスできるので、方法はあると思います。何か案は?1second2

PS:テストの目的で、エッジごとにドロワーをトリガーする4つのボタンのあるウィンドウのみを含む単純なアプリを作成しました。私はそれをgithubにプッシュしたので、必要に応じてクローンを作成して自分で遊ぶことができます。

4

1 に答える 1

1

ドロワーには複数のプロパティがあるため、ドロワーのサイズを取得すると、ドロワーの指定されたプロパティのリストが表示されます(たとえば、1つのドロワーの場合は{{465,117}})。そのリストのアイテムを取得することで個々のサイズを取得できます(たとえば、リストでもある最初のサイズは{465、117}になります)が、現在の引き出しを通過することもできます。

repeat with aDrawer in (drawers of appWindow)
    set {w, h} to size of aDrawer
    set {x, y} to position of aDrawer
    -- add to overall window size if larger, etc
end repeat
于 2011-07-31T21:31:58.427 に答える