【UWSC】画面を自動でクリックする3つの方法

目次

UWSCで画面をクリックする「画像・座標・テキスト」3つの方法+1

  1. 画像を用意してクリック場所を指定する
  2. 座標のPEEKCOLOR値とLENGTH値を利用しクリックする
  3. テキストを検索しクリックする
  4. テキスト+画像検索で目的のテキストをクリックする

ソシャゲなどのゲームで自動化するには「画像」クリックをマスターすると押したい場所を画像で判断するので簡単にプログラム化できる。が、
これだけでどんな場合もクリック可能か?というと画像のちょっとした違いでもクリックしない場合もあり、その場合、

  • 複数の画像を用意する
  • 座標位置の色で判断しクリックする

などを組み合わせて処理を自動化する工夫が必要である。

ゲームのクリックプログラムは、垢BANされたりSNSで晒されたりと個人がターゲットとされてしまう可能性があるので、特定のゲームやソフトを例にしてサンプルを作成するのは当サイトではやるつもりはない。が、このページで解説している方法を用いれば、ほとんどのWebサイトの画面をクリックすることが可能になる。

※但し、プログラムの利用は、個人の責任にてお願い申し上げます。

①画像を用意してクリック場所を指定する

利用するサイト:JRAホームページ

サンプルプログラム1を作成する。

サンプルプログラム1:仕様書

  • JRAホームページトップを表示→出馬表(アイコン)をクリック
  • Win5をクリック
JRAホームページ TOP → 出馬表アイコン クリック

出馬表をクリックすると、次の「出馬表 開催選択」画面が表示。

出馬表 開催選択 の表示

次にWin5のボタンを押し、Win5結果画面を表示する。

Win5結果画面の表示

UWSCを実行し、この画面へと遷移したら画像とプログラムの指定は上手く行っている。

サンプルプログラム1:用意する画像の保存

  1. 画像を保存するフォルダーを作成する
    • C:\Users\adono\OneDrive\デスクトップ\Mini01\UWSC_mini01\uwsc5302\JRA\img24\
      • デスクトップにマシン名のフォルダーを作成(\Mini01
      • \Mini01にUWSCをインストールし展開する(\UWSC_mini01\uwsc5302
      • 今回作成するJRAサンプルプログラムを格納するフォルダーを作成(\JRA
      • 今回使用するJRAサンプル画像を格納するフォルダーを作成(\img24
  2. 使う画像をキャプチャーし「bmp24」で保存する
    • 今回のサンプルでは2つの画像をキャプチャーしペイントで切抜き保存する

画像保存フォルダーの一覧

サンプル画像一覧

UWSCサンプルプログラム1の実例

ACW(GETID("JRA日本中央競馬会 - Google Chrome","Chrome_WidgetWin_1"),0,0,1920,1040,0)
ID=GETID("JRA日本中央競馬会","chrome")

CTRLWIN(ID,max)
PATH="C:\Users\adono\OneDrive\デスクトップ\Mini01\UWSC_mini01\uwsc5302\JRA\img24\"
Timer=1

//jraのホームページを立ち上げる
//TEST中はCloseしない
//CTRLWIN(GETID("chrome"),close)
exec("cmd /c start=http://www.jra.go.jp/")
sleep(timer)

//TextBlockのデータを配列初期値として代入
GAZOU = SPLIT( 画像 , "<#CR>")

//while true
		for i=0 to length(GAZOU)-1
			ifb CHKIMG(PATH + GAZOU[i]+".bmp") then
					x=G_IMG_X // 画像の座標をxへ代入
					y=G_IMG_Y +10 // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//確認画像をクリック
					sleep(Timer)
					
			endif
		next

//wend

//ここに検索する画像を追加
TextBlock 画像
syutuba01
win5-01
EndTextBlock

画像を増やす場合は、

TextBlock 画像
 syutuba01
 win5-01
 ※ここにバンバン追加すれば良い
EndTextBlock

手動で目的のWebページまで移動し永久ループさせるプログラムに変更するなら

While-Wend の//コメント行を復活させexec(…)を削除すれば同じ処理を永久ループさせることが
可能になる。が、UWSCの強制終了を先に確認しておく必要がある!
デフォルト:ALT+F2 だが自分で変更した場合は
「UWSCメニューバー」➡「設定」で確認すべし!

②座標のPEEKCOLOR値とLENGTH値を利用しクリックする

27インチディスプレイ
解像度1920*1080(UWSCの自動記録機能を使うとWeb最大表示で1920*1040となる)
これを前提としてプログラムを作成しているので、ディスプレイサイズと解像度が違う場合は、各自座標を取り直しサンプルを変更し使用してもらいたい。

JRAホームページ トップページの出馬表アイコンの(赤丸の中の)白色の座標を取る拡大図

実際に利用するなら「①の画像」か「③のテキスト」になるが、今回はクリック比較するのに同じ題材の方が分かり易いと思い上記同様、
トップページ ➡ 出馬表アイコン ➡ Win5結果画面 と遷移するプログラムを作成する。

出馬表(赤〇)の白の座標を取る

座標 1
x:645 y:227
PEEKCOLOR:16777215 length:8

PEEKCOLOR:16777215=白色

X軸、Y軸を-3した座標2と+3した座標3の値を取り緑色であることを確認する。
でない場合は白なのでPEEKCOLOR値で判断できる。

座標 2
x:642 y:224
PEEKCOLOR:33574 length:5
座標 3
x:648 y:230
PEEKCOLOR:33574 length:5

次に、Win5(赤〇)の白の座標を取る

JRAホームページ 出馬表 開催選択のWin5アイコンの(赤丸の中の)白色の座標を取る拡大図

座標 1
x:970 y:776
PEEKCOLOR:16777215 length:8

X軸を-4した座標2と+4した座標3の値を取り、座標2=深緑色、座標3=紺色であることを確認する。

座標 2
x:966 y:776
PEEKCOLOR:4224000 length:7
座標 3
x:974 y:776
PEEKCOLOR:8072472 length:7

これで必要な座標は全て取れたので、この情報からサンプルプログラム2を作成する。
※但しこのプログラムは2日開催時のWin5は正常動作するが、1日開催・3日開催時の動作保証は出来ない!といった潜在的なバグを含んだプログラム仕様になる。この為、実際に使用するならば、
「①の画像」か「③のテキスト」を選択した方が良い!という結論になる。

UWSCサンプルプログラム2の実例

ACW(GETID("JRA日本中央競馬会 - Google Chrome","Chrome_WidgetWin_1"),0,0,1920,1040,0)
ID=GETID("JRA日本中央競馬会","chrome")

CTRLWIN(ID,max)
PATH="C:\Users\adono\OneDrive\デスクトップ\Mini01\UWSC_mini01\uwsc5302\JRA\img24\"
Timer=1

//jraのホームページを立ち上げる
//TEST中はCloseしない
//CTRLWIN(GETID("chrome"),close)
exec("cmd /c start=http://www.jra.go.jp/")
sleep(timer)

//座標を設定
	x1=645
	y1=227
	sa=3
	x2=x1-sa
	y2=y1-sa
	x3=x1+sa
	y3=y1+sa
	
	//出馬表アイコンをクリック
    ifb copy(PEEKCOLOR(x1,y1),1,3)=167 and length(PEEKCOLOR(x1,y1))=8 and _	//白
		copy(PEEKCOLOR(x2,y2),1,3)=335 and length(PEEKCOLOR(x2,y2))=5 and _	//緑
		copy(PEEKCOLOR(x3,y3),1,3)=335 and length(PEEKCOLOR(x3,y3))=5 then	//緑
            sleep(timer)
            BTN(LEFT,CLICK,x1,y1)
            sleep(timer)
    endif

//座標を設定
	x1=970
	y1=776
	sa=4
	x2=x1-sa
	y2=y1
	x3=x1+sa
	y3=y1

	//Win5アイコンをクリック
    ifb copy(PEEKCOLOR(x1,y1),1,3)=167 and length(PEEKCOLOR(x1,y1))=8 and _	//白
		copy(PEEKCOLOR(x2,y2),1,3)=422 and length(PEEKCOLOR(x2,y2))=7 and _	//深緑
		copy(PEEKCOLOR(x3,y3),1,3)=807 and length(PEEKCOLOR(x3,y3))=7 then	//紺
            sleep(timer)
            BTN(LEFT,CLICK,x1,y1)
            sleep(timer)
    endif
adono

Win5結果画面が出れば成功だよ💛

Win5結果画面の表示

③テキストを検索しクリックする

この場合、テキスト位置にハイパーリンクが埋め込まれている場合は、テキスト位置がそのままクリック位置になるのでテキストを検索し [Ctrl+F] ➡「検索したい文字列」➡ [Esc] ➡ [Enter] で次ページへ遷移することが出来る。

  1. JRAトップページ
  2. Ctrl+F
  3. “出馬表” と入力
  4. Escキー を押す
  5. Enterキー を押す

この手順をそのままUWSCに記述すれば「出馬表 開催選択」画面に遷移する。が、
※次のWin5はボタンがイメージボタンの為、テキスト検索はできない。

UWSCサンプルプログラム3の実例

JRAトップページ ➡ 出馬表 開催選択 まで

ACW(GETID("JRA日本中央競馬会 - Google Chrome","Chrome_WidgetWin_1"),0,0,1920,1040,0)
ID=GETID("JRA日本中央競馬会","chrome")

CTRLWIN(ID,max)
PATH="C:\Users\adono\OneDrive\デスクトップ\Mini01\UWSC_mini01\uwsc5302\JRA\img24\"
Timer=0.5

//jraのホームページを立ち上げる
//TEST中はCloseしない
//CTRLWIN(GETID("chrome"),close)
exec("cmd /c start=http://www.jra.go.jp/")
sleep(timer*2)
SENDSTR(0, "出馬表") //クリップボードに文字を送る
sleep(Timer*2)

//JRAトップページから 文字列検索し「出馬表」をクリック
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(Timer)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(Timer)
KBD(VK_ESC,CLICK)
sleep(Timer)
KBD(VK_RETURN,CLICK)
sleep(Timer)
adono

出馬表 開催選択 の画面が出れば成功だよ♡

出馬表 開催選択 の表示

”(日曜)”という文字列を検索すると、一番目の該当位置が今回だと「7月24日(日曜)
となり、この結果は汎用的に使えそうかな!?という予想は出来る。
”(日曜)”というテキスト位置の座標を取ることが出来れば「y軸+β」で目的の
Win5ボタンを押すことは可能である。これが、
④テキスト+画像検索で目的の位置をクリックする方法である。
私の使用画面だとβ≒135程度

④テキスト+画像検索で目的の位置をクリックする

テキストを選択しても、ブログカードやイメージボタンなどの場合は「③テキストを検索」だけでは
クリック出来ない場合もある。その場合は…

「①画像検索」か
「④テキスト検索(ハイパーリンクなし文字列を起点)+画像検索

これで、クリック出来る。

準備する画像は”(日曜)”選択時のオレンジ色の背景色

文字列ヒット時の背景色のオレンジを用意する
サンプル画像一覧

UWSCサンプルプログラム4の実例

ACW(GETID("JRA日本中央競馬会 - Google Chrome","Chrome_WidgetWin_1"),0,0,1920,1040,0)
ID=GETID("JRA日本中央競馬会","chrome")

CTRLWIN(ID,max)
PATH="C:\Users\adono\OneDrive\デスクトップ\Mini01\UWSC_mini01\uwsc5302\JRA\img24\"
Timer=0.5

//jraのホームページを立ち上げる
//TEST中はCloseしない
//CTRLWIN(GETID("chrome"),close)
exec("cmd /c start=http://www.jra.go.jp/")
sleep(timer*2)
SENDSTR(0, "出馬表") //クリップボードに文字を送る
sleep(Timer*2)

//JRAトップページから 文字列検索し「出馬表」をクリック
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(Timer)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(Timer)
KBD(VK_ESC,CLICK)
sleep(Timer)
KBD(VK_RETURN,CLICK)
//sleep(Timer)

sleep(timer*2)
SENDSTR(0, "(日曜)") //クリップボードに文字を送る
sleep(Timer*2)

// 文字列検索し該当文字列ならばオレンジ色
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(Timer)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(Timer)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(Timer)

GAZOU1="selore01"+".bmp"

			ifb CHKIMG(PATH + GAZOU1) then
					x=G_IMG_X       // 画像の座標をxへ代入
					y=G_IMG_Y +135  // 画像の座標をyへ代入
					sleep(Timer)
					BTN(LEFT, CLICK, x, y)	//目的位置をクリック
					sleep(Timer)
      endif
adono

Win5結果画面が出れば成功だよ💛

※今回はサンプルのため、エラー処理を施していないが、実際使用するときには内容を精査する
ロジックは必須になる。

UWSCを利用する手順

  1. UWSC をダウンロードする
  2. Visual Studio Code をダウンロードする(拡張機能:UWSCでハイライト可)
  3. UWSC 画像保存フォルダーとプログラム保存フォルダーを作成する

実際にJRAホームページからデータ収集し自作競馬DBを作成する手順

  • JRAホームページのサイトマップを利用する
    • ➡ テキスト検索でクリックが可能になる
    • 自作競馬DBを作成するには、テキスト検索が一番簡単にデータ取得できる
  • テキストを検索しクリックする
  • テキスト+画像検索で目的の位置をクリックする
  • 今回の記事では、UWSCで行きたいWebページへの遷移が可能になる
  • 遷移先のページでコピペ後、既に記事化している手順でデータベース作成する
  • 【Excel】JRAホームページから競馬DBを自作したい人のExcelVBAマクロ

編集後記

4つのサンプルを作成し、UWSCでWeb[Chrome]上をクリックするプログラムを実行してみた。
これでパソコン画面のどの位置でも自由にクリックすることが可能になる。

これで、

  • UWSCコピペ
  • Excel貼付け
  • Accessデータベース作成
  • SQL-Expressデータベース作成

一通り簡単に説明する記事群は作成できた。

これで”君”も自作競馬データベースを作成できることであろう~🤭

UWSC関連

それでは、またね~😎

この記事を書いた人

マクロで半自動化!GO!GO!!PROGRAMMING
管理人:あどのまつり
馬齢:牡50代(後)✖1

2023年はコロナ明けでタイ旅行にいきThai!!

目次