UWSCスクリプトの書き方(座標を知る方法)

  • はてなブックマークに追加
座標を知る方法を学習しましょう。

UWSCを使ってみます。今回は座標を知る方法について紹介したいと思います。


前回の内容より

応用編

このようなページに自動で年齢記入欄に数字(100歳と仮定)を入力するプログラムを考えます。厳密にはこの記入欄の座標がわからないので適当に(400,300)ぐらいにします。すると、次のように入力すれば自動で入力してくれます。

BTN(LEFT,CLICK,400,300)
KBD(VK_1,10)
KBD(VK_0,10)
KBD(VK_0,10)

とまでは紹介しました。今回はここの「適当に(400,300)ぐらいにします」の部分の座標の求め方を紹介します。


1つは録画をしてみることです。

実際に画面を開き前回の方法で録画をしてみましょう。何回もクリックするとややこしい(順番を覚えておかなくてはいけない)ので必要な場所を1回だけクリックしましょう。するとどこかに「BTN(LEFT,CLICK,x,y,t)」とあるので,このx,yの数字がそのまま欲しい点のx座標y座標になっています。

この方法は便利ですが録画ファイルを調べるときにマウスの移動の軌跡がすべて録画されているのでそこから探すのが面倒かもしれませんし,座標を調べるためだけにクリックができない状況(決定ボタンの位置など)では使いずらいかもしれません。次に紹介する方法は実際にクリックすることなく座標を調べる方法です。


もう1つはペイントを使ってみる方法もあります。

まずキーボード右上のほうに「Print Sc」というボタンがあります。これを押すとそのとき表示されている画面がコピーされます。これを押し,ペイントに貼り付けましょう。そして欲しい点にまでマウスカーソルを持っていきます(下の図ではわかりやすいように赤色でマウスの矢印の絵をかきました。)

左下に座標が表示されます

するとペイントソフトの左下に座標が表示されますのでこれをそのままx座標,y座標とすればOKです。なお,マウスの矢印は矢印の先の部分の座標です。



座標が毎回変化する場合,マウスの位置を基準に計算することもできます。

応用例として次のプログラムを考えましょう。


SETHOTKEY(VK_NUMPAD1, ,"myProc")

PROCEDUREmyProc
MausuX=G_MOUSE_X
MausuY=G_MOUSE_Y

BTN(LEFT,CLICK,MausuX,MausuY)//その場所をクリック
SLEEP(0.2)//0.2秒待つ
BTN(LEFT,CLICK,MausuX,MausuY+20*1)//下に20移動した点をクリック
SLEEP(0.2)//0.2秒待つ
BTN(LEFT,CLICK,MausuX,MausuY+20*2)//下に20移動した点をクリック
FEND

 

まだ学習していない関数などがたくさんありますが,少しずつ解説していきます。

SETHOTKEYとは特定のキーが押されたときに関数を実行するという命令です。ここではVK_NUMPAD1キーつまり,テンキーの「1」を押したときにmyProcという関数を実行する,ということです。

PROCEDURE 関数名 で関数を定義します。この関数は「FEND」と書かれたところまでが関数として扱われます。関数を定義するときは必ずFENDを記入しましょう。なお,myProcの部分は何でもいいです。好きな名前を付けてください。ただし2箇所ある赤字部分は同じ名前にしてください。(上のmyProcだけを変更するのは不可。変更するなら2か所両方変更する。)

MausuX=G_MOUSE_XとはMausuXという変数に現在のマウスのx座標を代入するというものです。同様に1行下はy座標を代入します。このMausuXという変数名も好きな名前に変えてOKです。(もちろんすべての場所:このプログラムなら4箇所あります を変更する必要があります。)

ここから一連の動作が記入されています。なお//以下はコメントなので実行するときは無視されます。

1行目で点(MausuX,MausuY)をクリックします。つまりキーを押した時点でのマウスの位置をクリックすることになります。

2行目で0.2秒待ちます。3行目で点(MausuX,MausuY+20*1)をクリックします。つまりx座標はキーを押した時点でのマウスの位置,y座標はキーを押した時点でのマウスの位置+20をクリックするので下に20移動した点をクリックします。

同様に4~5行目で0.2秒後に「下に40移動した点」をクリックします。

このプログラムを実行するとたった1回キーを入力するだけで3箇所クリックしてくれます。(理論的にはもっとできますね。)最初の位置はわからないが1箇所目の座標がわかれば相対的に2,3箇所目の座標がわかる場合に使えます。






2018年11月05日