SSブログ

暫定)OS X 10.13で使える擬似マウスコントロール [AppleScript辞書はつくれるか?]

Applescriptでクリックをする動作ってのはなかなか困難になりましたね。
CGEvent を使おうにも、「Object-C」ではなく『CのAPI』とのことなので、どうもそのままでは作業ができない。
他の方が作っていたスクリプトを参考にできる限りのことをやってみた。
しかし、初動に6秒ほどブランクができてしまうのがどうにもならないから、いつかなんとかしたいですね。

(* [使用例]

my movePointer(100, 120) -- |移動|

 

my singleClick(10, 10) -- |クリック|

 

my doubleClick(80, 80) -- |ダブルクリック(注意:なぜかうまく機能しません)|

 

--|複数まとめてクリック|

set multiplePoint to {{15, 10}, {40, 38}}

set interval to 1.0 --|間隔()|

my multipleClick(multiplePoint, interval)

*)

 

my singleClick(10, 10)

 

 

 

(* ポインター(矢印カーソル)の移動 *)

on movePointer(x, y)

set codeText to "import sys; from Quartz.CoreGraphics import *; x = float(" & x & "); y = float(" & y & "); po = CGPointMake(x, y); event = CGEventCreateMouseEvent(None, 2, po, 0); CGEventPost(0, event);"

do shell script "python -c " & quoted form of codeText

return true

end movePointer

 

(* シングルクリック *)

on singleClick(x, y)

set codeText to "import sys; from Quartz.CoreGraphics import *; x = float(" & x & "); y = float(" & y & "); po = CGPointMake(x, y); event = CGEventCreateMouseEvent(None, 1, po, 0); CGEventPost(0, event); event = CGEventCreateMouseEvent(None, 2, po, 0); CGEventPost(0, event);"

do shell script "python -c " & quoted form of codeText

return true

end singleClick

 

(* ダブルクリック - *)

on doubleClick(x, y)

set codeText to "import sys; from Quartz.CoreGraphics import *; import time; "

set codeText to codeText & "x = float(" & x & "); y = float(" & y & "); po = CGPointMake(x, y); event = CGEventCreateMouseEvent(None, 1, po, 0); CGEventPost(0, event); event = CGEventCreateMouseEvent(None, 2, po, 0); CGEventPost(0, event); time.sleep(0.3); "

set codeText to codeText & "event = CGEventCreateMouseEvent(None, 1, po, 0); CGEventPost(0, event); event = CGEventCreateMouseEvent(None, 2, po, 0); CGEventPost(0, event); "

do shell script "python -c " & quoted form of codeText

return true

end doubleClick

 

(*複数まとめてクリック*)

on multipleClick(inputList, interval)

if (class of inputList) is not list then return false

set codeText to "import sys; from Quartz.CoreGraphics import *; "

if interval > 0 then set codeText to codeText & "import time; "

repeat with p in inputList

set codeText to codeText & "x = float(" & (item 1 of p) & "); y = float(" & (item 2 of p) & "); po = CGPointMake(x, y); event = CGEventCreateMouseEvent(None, 1, po, 0); CGEventPost(0, event); event = CGEventCreateMouseEvent(None, 2, po, 0); CGEventPost(0, event); "

if interval > 0 then set codeText to codeText & "time.sleep(" & interval & "); "

end repeat

log codeText

do shell script "python -c " & quoted form of codeText

return true

end multipleClick

 
from Quartz.CoreGraphics import *;
という呼び出し作業で時間がかかるようです。
Parlならこんなことないのだろうか?

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。