最終更新日:2010/10/26
10.6.xで動作テストしてます。
座標を指定するとそこにあるボタン等のGUIパーツを取得できるAPIがあります。それで指定したGUIパーツが無いか画面の隅から隅まで探してアクションを行うアプリケーションです。
以下のようなスクリプトでボタンやメニューを操作できます。clickMenuなどはUIElementActionを使いやすくしたハンドラです。
Accessibility Inspectorを使うと指定したいエレメントの情報が簡単にわかります。必須です。
UIElementInspectorもほぼ同じです。
UIElementActionを使ってGUIスクリプティングで使える特定のオブジェクトを指定するAppleScriptをクリップボードにコピーします。
所得できない場合もありますが下記サンプルのように割といろいろ取得できます。また、取得できてもAppleScriptが動かない場合があります。例えばsmcFanControlのメニューバー項目がそれにあたります。
Automatorでの結果と(ほぼ)同じだと思います。
例:サウンドのバランスを変更します
自分の環境のSafariのGoogle検索ボックスは下記のようになります。
SafariでGoogleの検索オプションをクリックするスクリプトは下記のようになります。
メニューバー項目の音量設定項目は下記のようになります。
アプリケーションを起動するとカウントダウンが始まり0になった時のマウスの下にあるUI Elementを指定するスクリプトがクリップボードにコピーされます。カウントダウンが0の時にコマンドキー、シフトキー、オプションキー、コントロールキーのどれかを押していると、UI Elementの指定方法が常にインデックス指定になります。通常は名前、AXDescription、両方無ければインデックスになっています。
UIElementActionはアプリケーション内部にあります。
マウスの下のウインドウを閉じることができます。エクスポゼで縮小して並んだウインドウでも動作するのでエクスポゼ中にウインドウを閉じるのに使うことができます。ButlerなどでキーボードショートカットでCloseWindowUnderMouseを起動するようにして使います。
何かのソフトでこの機能を見かけたのですがUIElementActionを使えばできそうなのでやってみました。