Hatena::ブログ(Diary)

ザリガニが見ていた...。 このページをアンテナに追加 RSSフィード

2012-01-10

あらゆる操作を実行可能マウスカーソルを動かす方法いろいろ

GUIなOS環境では、マウスを操作してカーソルを移動することで、操作対象を選択して、命令を実行する。通常マウスは人の手で操作するのだけど、もしコードで自由に制御できれば、面倒な一連のマウス操作を自動化できるのだ。

但し、人がマウスを操作する時は画面の状況を確認しながら操作できるけど、マウスカーソルを自動制御する時には、そうはいかない。今時のOSXでは、ウィンドウがしまわれていたり、アプリが隠れていたり、Spacesでスペースがいくつもあったりと、考慮しておくことが多くて大変なのだ。

一方、マウスを操作して実行する命令には、大抵ショートカットが用意されていたり、同等のコマンドがあったりする。AppleScriptでも操作可能かもしれない。可能な限りマウスカーソルの自動制御以外の方法で操作した方が、GUIの状況に左右されず、素早く、確実に、命令が完了するはずである。

そうは言っても、マウス以外の操作方法が見当たらないことも多々ある。あるいは、GUIスクリプティングがどうにも上手く動いてくれないとか、コードの書き方がよくわからないとか。そんな時、マウスカーソルを自動制御する方法を知っていれば、かなり楽して幸せになれる。マウスカーソルをコードで制御するのは、冗長で、環境にも思いきり依存し、そこでしか使えない限定的なツールになりがちだが、覚えておいて損はないと思われる。調べてみた。

AppleScriptの click atコマンド

  • 以下のように click atコマンドを使うことで、目標の座標(x=36, y=33)がクリックされる。
    • 座標(x=36, y=33)は、AppleScriptエディタのウィンドウのオレンジボタン。
    • 実行すると、Dockにウィンドウがしまわれる。(アニメーション付き)
  • 但し、目標の座標をクリックするイベントが発生するだけで、現在のマウスカーソルの位置は変化しない。
  • 目標の座標は、画面左上を原点(0, 0)とした絶対座標で指定する。
    • MacBook13インチの場合は、画面右下(1280, 800)までの範囲となる。
  • ちなみに、絶対座標は、スクリーンショットcommand-shift-4のショートカットで簡単に計測できる。

 tell application "System Events"
   tell process "AppleScript Editor"
     click at {36, 33}
   end tell
 end tell

Automatorで記録する

  • Automatorの「記録」ボタンを押すと、簡単にGUI操作がワークフローとして記録される。
  • 記録したワークフローは、「実行」ボタンを押すことで再生される。
  • 以下のワークフローは、アップルメニューのクリックを記録したもの。

f:id:zariganitosh:20120110144825p:image

  • 再生速度を×10にしておくと、ほとんど待ち時間なく、テキパキと実行してくれる。
  • マウス操作を記録したワークフローを実行すると、現在のマウスカーソルの位置がワークフローに従って動く。
  • ちなみに、記録されたイベントを、ワークフローエリアにドラッグ&ドロップすると、AppleScriptに変換される。
  • 未知のGUIスクリプティングの記述方法を知る便利な方法でもある。

cliclickコマンド

$ cliclick -h

 cliclick - Command Line Interface Click
 Version 1.3.1
 Carsten Bluem, 2010-04-13
 http://www.bluem.net/en/mac/cliclick/

 Usage: cliclick [-v] [-r] [-q] [-w n] x y [x2 y2] [x3 y3] [...]
   x and y are integer numbers which specify the screen coordinate(s)
   where the mouse click(s) should be emulated. (Upper left corner is 0 0)
   Instead of a number, you may pass "m" as x and / or value to
   use the current x and / or y position.

   If you need a doubleclick, prefix the x coordinate with "d".
   If you need a control click, use prefix "c".

 Options:
   -w <n> You can pass multiple coordinate pairs as argument. But if you do,
          it is often useful to have a small delay between events -- that is
          what the -w option is for: It will cause cliclick to wait for the
          specified number of milliseconds after each event.
   -q     Instead of clicking, print the current mouse pointer.
          location on the screen (format "x,y") and exit.
   -r     Restore initial mouse location after performing the clicks.
   -v     Makes cliclick more verbose.

 Examples:
   'cliclick 26 12' will click the apple menu
   ((x=26, y=12)の座標をクリックする。つまり、アップルメニューをクリックする。)

   'cliclick 50 60 c70 80' will click at 50/60, then Control-click at 70/80
   (cに続く座標はControl-click、つまり右クリックと同等になる。)

   'cliclick d50 60' will doubleclick at 50/60
   (dに続く座標はダブルクリックになる。)

   'cliclick dm m' will doubleclick the current mouse location
   ((m,m)は現在のマウスカーソルの座標、と読まれる。)

   'cliclick c500 m' will control-click at x position 500 and the mouse's current y position.
   (500,m)は、x=500、y=現在のy座標、と読まれる。)

   'cliclick -w 50 26 11 26 33' will open the "About this Mac" panel
   (-wに続く数値はミリ秒指定。連続クリックする時の間隔が指定される)

   'cliclick -r 26 12' will click the apple menu and, afterwards, restore the initial mouse location.
   (-rオプションは、cliclickコマンド実行後、実行前のマウスカーソル位置に戻す)

   'cliclick -q' will print the current mouse location.
   (-qオプションは、現在のマウス座標を返す)
$ cliclick -q
317,515
  • cliclickコマンドでは、クリックの連続技を簡潔なワンライナーで記述できるところが好き。

クリックせずにカーソルだけ移動する

  • 上記はすべてマウスクリックの操作だったが、クリックせずにマウスカーソルの移動のみは出来ないのだろうか?
MacRuby
  • OSX標準搭載のMacRubyを利用することで、以下のようにAppleScriptから操作できた。
    • OSX標準搭載は、MacRubyでなく、CocoaRubyだった。
    • MacRubyを利用するためには環境のインストールが必要。
  • Re: Move cursor with Applescript(サンプルコードの参考ページ。感謝です!)

 do shell script "/usr/local/bin/macruby -e \"framework 'carbon'\" -e \"framework 'ApplicationServices'\" -e \"CGWarpMouseCursorPosition(CGPointMake(" & 26 & "," & 12 & "))\""

  • 上記AppleScriptは、マウスカーソルを座標(x=26, y=12)、つまりアップルメニュー アイコンの真ん中に移動するのだ。
  • 以下のようにmove_mouseハンドラとして登録しておけば、使いやすいかもしれない。

 move_mouse(26, 12)
 
 on move_mouse(x, y)
   do shell script "/usr/local/bin/macruby -e \"framework 'carbon'\" -e \"framework 'ApplicationServices'\" -e \"CGWarpMouseCursorPosition(CGPointMake(" & x & "," & y & "))\""
 end move_mouse


CocoaRuby版(あるいはRubyCocoaと呼ばれる)

 do shell script "/usr/bin/ruby -e \"require 'osx/cocoa'\" -e \"OSX::CGWarpMouseCursorPosition(OSX::CGPointMake(" & 26 & "," & 12 & "))\""

 move_mouse(26, 12)
 
 on move_mouse(x, y)
   do shell script "/usr/bin/ruby -e \"require 'osx/cocoa'\" -e \"OSX::CGWarpMouseCursorPosition(OSX::CGPointMake(" & x & "," & y & "))\""
 end move_mouse


マウスボタンを押す・放す

  • 「クリックせずにカーソルだけ移動する」方法では、確かにマウスカーソルは移動するが、実際に手でマウスを握って動かすのと状況は異なる。
  • move_mouse()を使ってメニュー項目上に移動しても、ハイライト表示もされず、サブメニューも表示されないのだ。
  • おそらくCGWarpMouseCursorPositionは、マウスカーソルを特定の位置にセットするだけで、マウスを動かしたというイベントは発生させないのだ。
  • キー操作でメニュー選択をする方法もあるが、フルキーボードアクセスを有効にしても操作できないメニュー項目もあったりする。
    • メニューバー右側のアイコンメニューの中に、フルキーボードアクセスでは届かない項目が存在することが多い。
  • cliclickコマンドを利用しても良いのだが、クリックする一歩手前で項目をハイライトした状態で停止させておきたい需要もある。

こうなったら、マウスボタンのキーダウン・キーアップをシミュレートするしかない!

 --左のマウスボタンをダウン(押し下げ)
 left_mouse_down(26, 12)
 left_mouse_down(46, 174)
 left_mouse_down(370, 61)
 (*
 --間隔を空けてマウスボタンをアップ(放す)すればクリックになる
 delay 0.5
 left_mouse_up(370, 61)
 *)
 
 (*  
 --右クリック
 right_mouse_down(261, 527)
 delay 0.1
 right_mouse_up(261, 527)
 *)
 
 on left_mouse_down(x, y)
   set cocoa_ruby to "require 'osx/cocoa'; event=OSX::CGEventCreateMouseEvent(nil, 1, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);"
   set pt to do shell script "/usr/bin/ruby -e " & quoted form of cocoa_ruby
 end left_mouse_down
 
 on left_mouse_up(x, y)
   set cocoa_ruby to "require 'osx/cocoa'; event=OSX::CGEventCreateMouseEvent(nil, 2, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);"
   set pt to do shell script "/usr/bin/ruby -e " & quoted form of cocoa_ruby
 end left_mouse_up
 
 on right_mouse_down(x, y)
   set cocoa_ruby to "require 'osx/cocoa'; event=OSX::CGEventCreateMouseEvent(nil, 3, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);"
   set pt to do shell script "/usr/bin/ruby -e " & quoted form of cocoa_ruby
 end right_mouse_down
 
 on right_mouse_up(x, y)
   set cocoa_ruby to "require 'osx/cocoa'; event=OSX::CGEventCreateMouseEvent(nil, 4, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);"
   set pt to do shell script "/usr/bin/ruby -e " & quoted form of cocoa_ruby
 end right_mouse_up

  • AppleScriptからマウスボタンを押す・放す、という非常に低レベルなイベント操作まで出来てしまうのであった!
  • さらに、以下のページで紹介されているmouseClickハンドラは、あらゆるマウスイベントを発生させる。
  • mouseClickハンドラを活用すれば...
    • commandキーやoptionキーなども併用し、
    • ダブルクリック・ドリプルクリックも簡単に行えるのだ!
    • しかも、現在のマウスカーソル位置を活用することもできる!

素晴らし過ぎる!AppleScriptからここまで出来るとは!感動した!

  • 中身は、cocoaRubyを使ってCocoaの機能を利用しているのだけど、
  • AppleScriptとして配布すれば、OSX10.6標準の環境で実行できてしまうのである。
  • 余分なインストールなしに、そのまま実行できてしまう所が最大の魅力だと思う。

カーソルの座標を取得する

  • マウスカーソルを操作していると、現在のカーソル位置を活用したくなることがよくある。そんな時に...

 mouse_position()
 --mouse_position()'s x
 --mouse_position()'s y
 --mouse_position() as list
 
 --マウスカーソル位置{x:100, y:100}を返す
 on mouse_position()
   set cocoa_ruby to "require 'osx/cocoa'; pt=OSX::NSEvent.mouseLocation; puts pt.x, OSX::NSScreen.mainScreen.frame.size.height-pt.y;"
   set pt to do shell script "/usr/bin/ruby -e " & quoted form of cocoa_ruby
   {x:pt's paragraph 1 as number, y:pt's paragraph 2 as number}
 end mouse_position

  • もはや、NS(NextStep)系の古いオブジェクトより、最新のCG(コア・グラフィック?)系のオブジェクトを利用するべきかもしれない。

 --別解
 getMouseLocation()
 
 on getMouseLocation()
   set theRubyScript to "require 'osx/cocoa'; pt=OSX::CGEventGetLocation(OSX::CGEventCreate(nil)); puts pt.x, pt.y"
   set thePtText to do shell script "/usr/bin/ruby -e " & quoted form of theRubyScript
   {paragraph 1 of thePtText as number, paragraph 2 of thePtText as number}
 end getMouseLocation

AppleScriptであれこれする

マウスカーソルを制御して幸せな環境を作ろう!

ひろしひろし 2012/01/12 20:25 完璧です。ありがとうございます。
(自分の環境10.6.8では、MacRubyはインストールされていなかったので
http://www.macruby.org/downloads.htmlからインストールしました。)

MacOSXには、
システム環境設定のキーボード/キーボードと文字入力の
*2メニューバーを操作対象にする
*3Dockを操作対象にするなど、フルキーボードアクセスの機能があります。
フリーウェアのSparkで
このショートカットキーと方向キーを使って、メニューバー項目に
キーを割り当てています。
***最後にリターンキー(決定キー)を押さないタイプと
***リターンキーを押して実行するタイプの両方を

リターンキー(決定キー)を押さない状態で止めておくのは、
ショートカットキーの内容を一度確認してから、コマンドを実行させたいと思うからです。

この時当然 フルキーボードアクセスの操作対象位置とマウスポインタの位置は
別の場所にありますが、
この状態からマウスポインタの位置を
      フルキーボードアクセスの操作対象位置に移動させたいのです。

Automatorでマウスポインタを移動させるアプリ(サービスでもよい)を作って、
Sparkでそのアプリにショートカットを割り当てて、
メニューバー項目を割り当てている最後の部分に、
このアプリのショートカットキーを入力して、追加すれば実行できます。

マウスポインタの位置を
フルキーボードアクセスの操作対象位置に移動させる方法はありませんか。

また*2メニューバーを操作対象にするのショートカットキーを入力したと同時に
マウスポインタの位置も、それと同期して一緒に移動し続ける***ような
 同期の設定がもしできたなら最高です。

zariganitoshzariganitosh 2012/01/13 17:23 > (自分の環境10.6.8では、MacRubyはインストールされていなかったので
> http://www.macruby.org/downloads.htmlからインストールしました。)

失礼しました。MacRubyが標準ではなく、CocoaRubyが標準でしたね。(OSX10.5、10.6環境で)
追記しておきました。

> マウスポインタの位置を
> フルキーボードアクセスの操作対象位置に移動させる方法はありませんか。
>
> また*2メニューバーを操作対象にするのショートカットキーを入力したと同時に
> マウスポインタの位置も、それと同期して一緒に移動し続ける***ような
>  同期の設定がもしできたなら最高です。 

メニューバー項目へアクセスするための一連のキー操作は、AppleScript(GUIスクリプティング)でも可能ですから、
キー操作とマウスカーソル移動のAppleScriptコードを書いて、
そのスクリプトにSparkでショートカットを割り当てれば良いのではないでしょうか。
非常に面倒だと思いますが、キー操作のスクリプト、マウスカーソル移動のスクリプト、と交互に書けば、キー操作にマウスカーソルが連動しているように、見えるかもしれません。

但し、キー操作した位置に、マウスカーソルを自動的に連動させる汎用的な方法は知りません。
(CocoaとXcodeを駆使すれば出来るかもしれませんが、自分にはそこまでの知識はないです)

ちなみに、人それぞれだとは思いますが、自分はマウスカーソルの連動までは考えたことがありません。
メニューの選択は矢印キーでも可能ですから、ショートカット操作後そのまま矢印キーとreturnキーで操作した方が手っ取り早い気がします。
マウスを使いたいのであれば、最初からマウスを動かしていた方が良さそうに感じます。

あまりに複雑な仕組みを作ると、後々メンテしなくなり、結局使わない仕組みとなってしまいます。(体験談)
苦労最小限で程々に使える便利な仕組みを探した方が良いかもしれません。

ひろしひろし 2012/01/15 14:11 返信ありがとうございます。感謝しております。
さっそくAppleScriptエディタで
編集メニュー→検索→**選択部分へジャンプへと
マウスカーソルを移動して、メニュー項目**をハイライト表示させる実験をやってみました。

結果は、マウスカーソルは目的の場所**に移動するのですが、ハイライト表示されません。

最後の階層のみ、↓下キーやendキーをスクリプトに追加することで、
うまくいきました。
 ***使うキーコード
key code 120 --F2
key code 124 --→右
key code 125 --↓下
key code 126 --↑上
key code 119 --endキー
今回の実験の場合、***(マウスカーソルを移動するスクリプトの前の)最後の部分に
↓下キーを3回入力しました。**endキーでもOK

ただ一つの命令を実行するごとに、何回矢印キーを押せばよいかを
繰り返し調べなければならず、少しめんどくさい気もします。
  
マウスカーソルは目的の場所***「選択部分へジャンプ」の真上のあるのですから、
ほんの少しでもマウスカーソルを動かせば***、ハイライト表示されます。

ハイライト表示させるために、マウスカーソルを少し動かす***スクリプトはありませんか。

****
あとcliclickでは現在のマウスカーソルの座標値をクリックできるオプションが用意されていますが
マウスカーソルだけを移動する操作にも、そういったことができたならおもしろそうですね。
 例えば
   move_mouse(m, 123) 
   move_mouse(m+200, m)

zariganitoshzariganitosh 2012/01/19 10:09 ひろし さん、
だいぶ間が空いてしまいましたが、マウスボタンをダウン・アップする方法と、現在のマウスカーソルの位置を取得する方法を追記しました。
マウスボタンを押したままカーソルを移動させれば、ほとんどの状況でやりたいことができるはずです。
(マウスをちょっとだけ動かすなんていう面倒な操作をせずに)
稀にleft_mouse_down()でも反応しないメニュー項目もあったりしますが、left_mouse_up()と組み合わせて操作することで、ハイライトできました。

また、mouse_position()ハンドラは、お好みでm()という名称にしてしまえば...
   move_mouse(m()'s x, 123)
   move_mouse(m()'s x+200, m()'s y)
上記のような表現になります。
もし完璧にmのみで表現したい場合は、move_mouse()ハンドラの中でcocoaRubyのコードを工夫すれば、きっと出来るはずです。
ぜひチャレンジしてみてください。
そして、素晴らしいハンドラになったら、ぜひ公開してください!
楽しみにしてます。

ひろしひろし 2012/01/29 00:39 Xcode Toolsに入っているAccessibility Inspectorを使って
GUI部品の名前(UI element?)を調べて、さらにそれを使って、
その時点のでの**GUI部品のXY座標を取得して、マウスカーソルをその場所に移動させたいのですが
なにか方法はあるのでしょうか。
もしそれができるなら夢のようです。
**(イラストレータの各パレットメニューやパスファインダーパレットの10個あるボタンなどに
マウスカーソルを瞬時に移動させるのに使いたい)

zariganitoshzariganitosh 2012/01/29 09:39 ひろし さん、

> その時点のでの**GUI部品のXY座標を取得して、マウスカーソルをその場所に移動させたいのですが
> なにか方法はあるのでしょうか。

残念ながら、自分はその方法を知りません。
しかし、以下の方法なら知っています。

Path Finderの場合...
ツールバーの情報ボタンを押す
----- AppleScriptコード -----
tell application "Path Finder" to activate
tell application "System Events"
tell process "Path Finder"
tell window 2
tell tool bar 1
--UI elements --その他のUIを調べる時にコメントアウトして利用
click button 2 --ツールバーの「情報」ボタン
end tell
end tell
end tell
end tell
----- AppleScriptコード -----

あるいはもっと簡単に...
コマンド+iのショートカット操作
----- AppleScriptコード -----
tell application "Path Finder" to activate
tell application "System Events"
tell process "Path Finder"
keystroke "i" using {command down}
end tell
end tell
----- AppleScriptコード -----

以上のスクリプトではダメですか?
パレットの操作と同等の機能は、メニューに存在しないでしょうか?
もし存在すれば、メニューを操作したり、ショートカット操作で代用できないでしょうか?
パレットの位置を常に定位置にするスクリプトを用意して、
マウスカーソルを絶対座標で操作するスクリプトでどうにかならないでしょうか?

zariganitoshzariganitosh 2012/01/29 09:46 すいません、(ファイル操作の)Path Finderと(ベジェ曲線の)パスファインダーを勘違いしていたようです。

たいやき32たいやき32 2012/02/01 22:38 こんにちは。AppleScriptでflashゲームを自動操作すべく、Google先生に教わってこのページに辿り着きました。
非常に助かっております。 m(__)m

> マウスカーソルは目的の場所に移動するのですが、ハイライト表示されません。

ハイライト表示をさせるには、移動後に明示的にマウスイベントを発生させれば良いようです。具体的には、CGWarpMouseCursorPosition()した後に、以下の2つを続けて実行したところ、うまく行きました。
--ruby--
event=CGEventCreateMouseEvent(nil,5,x,y,0);
OSX::CGEventPost(0,event);
--ruby--

> GUI部品のXY座標を取得
目的の部品のpositionプロパティを読めば行けそうな気がします。
例えば、下記のようにするとFinder内の「パス」ボタンの現在の絶対座標を取り出せました。
--AppleScript--
tell application "System Events"
position of menu button 1 of group 5 of tool bar 1 of window 1 of application process "Finder"
end tell
--AppleScript--

もしこの書き込みがお役に立てれば光栄です。

zariganitoshzariganitosh 2012/02/02 08:22 たいやき32 さん、
情報ありがとうございます!

> ハイライト表示をさせるには、移動後に明示的にマウスイベントを発生させれば良いようです。具体的には、CGWarpMouseCursorPosition()した後に、以下の2つを続けて実行したところ、うまく行きました。
> --ruby--
> event=CGEventCreateMouseEvent(nil,5,x,y,0);
> OSX::CGEventPost(0,event);
> --ruby--

自分もこの後の日記で、忘れないようにまとめてみました。
(よろしければ、覗いてみてください)
ちなみに、
CGEventCreateMouseEvent(nil,kCGEventMouseMoved,x,y,0); #kCGEventMouseMoved=5
を利用するなら、CGWarpMouseCursorPosition();さえ不要になりますよね。

> 目的の部品のpositionプロパティを読めば行けそうな気がします。

なるほど!早速やってみました。
----- AppleScriptコード -----
tell application "Finder" to activate
tell application "System Events"
set pt to application process "Finder"'s window 1's tool bar 1's button 1's position --properties --UI elements
end tell
mouse_move((pt's item 1) + 10, (pt's item 2) + 10)
----- AppleScriptコード -----
上記の方法でFinderツールバーのクイックルック ボタンにマウスカーソルが移動しました!

素晴らしい情報をありがとうございました。

zariganitoshzariganitosh 2012/02/02 08:31 追伸
mouse_move()ハンドラは、この後の日記で定義した_mouse.scptライブラリに含まれます。
以下のようにして使えます。

----- AppleScriptコード -----
property parent : load script file ((path to scripts folder as text) & "_mouse.scpt")
mouse_move(26, 12)
----- AppleScriptコード -----

ひろしひろし 2012/02/06 22:43 たいやき32 さん、zariganitosh さん
とても感謝しています。

自分も、Finderツールバーのクイックルック ボタンにマウスカーソルが移動するのを確認できました。
あとはUI element(GUI部品の名前? ID?) を簡単に調べることができれば最高ですね。
***(Xcode Toolsに入っているAccessibility Inspectorでは無理そうです。)
  
> ハイライト表示をさせるには、移動後に明示的にマウスイベントを発生させれば良いようです。具体的には、CGWarpMouseCursorPosition()した後に、以下の2つを続けて実行したところ、うまく行きました。
> --ruby--
> event=CGEventCreateMouseEvent(nil,5,x,y,0);
> OSX::CGEventPost(0,event);
> --ruby--

とありますが、
下***のmove_mouseハンドラ内に埋め込むとしたら、
どこに、どのように書けばよいのでしょうか。

 move_mouse(26, 12)

on move_mouse(x, y)
do shell script "/usr/bin/ruby -e \"require 'osx/cocoa'\" -e \"OSX::CGWarpMouseCursorPosition(OSX::CGPointMake(" & x & "," & y & "))\""
end move_mouse

zariganitoshzariganitosh 2012/02/08 17:37 ひろし さん、
もはや、OSX::CGWarpMouseCursorPosition(... は不要になります。
以下のコードだけでマウスカーソルを動かすイベントが実現できます。
(もちろん、メニュー項目もハイライトされるはずです)

----- AppleScriptコード -----
move_mouse(76, 34)

on move_mouse(x, y)
set ruby_cocoa to "require 'osx/cocoa'
point=OSX::CGPointMake(" & x & "," & y & ")
event=OSX::CGEventCreateMouseEvent(nil, 5, point, 0)
OSX::CGEventPost(0,event)"
do shell script "/usr/bin/ruby -e " & quoted form of ruby_cocoa
end move_mouse
----- AppleScriptコード -----

> あとはUI element(GUI部品の名前? ID?) を簡単に調べることができれば最高ですね。

UI Elementの取得では、以下の日記のコメントのやり取りが参考になると思います。
 http://d.hatena.ne.jp/zariganitosh/20111004/record_object_to_text
コメントの最後の方のコードをそのまま使えば、UI Elementのリストを一気に取得できてたいへん便利です。
但し、アプリケーションによってはUI Elementを取得できない類いもあります。
その場合はマウスカーソルの座標指定するしかないと...。

そもそもUI Element調べる前に、マウスカーソルの座標指定した方が早いかと。
UI Elementが分かるのであれば、click UI Elementすればいい、という考えもあります。

ひろしひろし 2012/02/08 21:33 ありがとうございます。
(***追加内容の 0 の部分を1に変更した結果)
AppleScriptエディタで
ハイライト表示できることを確認できました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/zariganitosh/20120110/moving_mouse_technique