![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
画像Aが出てくるまで待ち画面をクリック、その後、画像Bが出てくるまで待ち画面をクリック。
画像Aが現れなければ、画像Bが出てくるまで待ち、画像をクリックする。
という文を書きたいのですが、うまくいきません。
画像Aはランダムで現れます。画像Aが現れた場合、画面をクリックしない限り、画像Bは現れません。
以下の文では画像Aが現れない限りはうまく回るのですが、画像Aが現れるとそこで止まってしまいます。どこがまずいのでしょうか。
何分この手のものエクセルぐらいしか触ったことがなく困っています。よろしくお願いします。
//
if chkimg("A.bmp")=true then
btn(left,0,100,100,50)
else
repeat
sleep(0.2)
until chkimg("B.bmp")=true
btn(left,0,100,100,50)
endif
//
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_07.png?e8efa67)
No.4ベストアンサー
- 回答日時:
> 以下のように記述してみたんですが
完璧じゃないですか!画像Aがクリックしたい目標物だったら、確かにG_IMG_X,G_IMG_Yを使うのが一番確実な方法です。これだと、もし画像Aの表示される場所が変わっても影響を受けませんから。ただG_IMG_X,G_IMG_Yは画像の左上隅を指しているため、個人的には気味が悪いと感じるので(すごいギリギリの場所をクリックしているわけだから)、4くらい足しています。画像がクリック目標に対して余白を持っている場合は、足す数が4では足りない場合もあります。
ちなみにG_IMG_Xを変数にコピーせずに使うことも可能なので、それでやると大幅に短く書けます。
REPEAT
SLEEP(0.1)
IF chkimg("A.bmp") Then BTN(left,0,G_IMG_X,G_IMG_Y,50)
UNTIL chkimg("B.bmp")
BTN(left,0,100,100,50)
> 私が質問文であげていたのでは、画像Aをチェックする文に繰り返し処理がかかって
> いなかったのですね。それで止まっていたんだと思います。
VBAだけ見てきた人が知ってる世界とUWSCはかなり異質なものなので、迷って当然と思います。VBAはある意味普通のVBと同じくイベント駆動型の言語だから、クリックイベントなどの中に処理を書いておけば、いちいちループで繰り返し見張っている必要がないのに対し、UWSCにはイベントの概念がなく、クリックもキー入力もスクリプトに書いた場所でしか判定されない、よって繰り返しにしないと一回しか見てくれない。またVBAだとマクロの最終行に来ても次の操作が来るまで待機するだけだけど、UWSCではスクリプトが終了する等。
たびたびありがとうございます。
同じようなものかと思っていたら、ふとしたとこでつまづいていました。
これからも少しずつ勉強していきます!
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_07.png?e8efa67)
No.3
- 回答日時:
回答No.2です。
> 画像Aが現れず、画像Bが現れることもあるのですが…。
うぐっ、その条件を考慮してませんでした…てっきり画像Bに必ず先立って、画像Aが表示される前提でやっていました。
最初の相談にあったスクリプトでうまくいかない理由は釈然としませんが、恐らく画像をクリックした後にその画像が消えることを確認する処理を入れれば、うまくいくと思います。私も今androidタブレットなのでUWSCが使えない状況ですが、以下のスクリプトで多分いけるんじゃないかなと。ただし画像AとBの両方が同時に画面に出ている瞬間があるようだと、うまくいきません。
While True
If GetKeyState(VK_ESC) Then Break //Escキーを押したらループを抜ける
Ifb Chkimg("A.bmp") Then //A.bmpが現れたか?
Btn(Left,Click,100,100,50)
//A.bmpが消えるのを待つ
While ChkImg("A.bmp")
Sleep(0.1)
Wend
EndIf
Ifb Chkimg("B.bmp") Then //B.bmpが現れたか?
Btn(Left,Click,100,100,50)
//B.bmpが消えるのを待つ
While ChkImg("B.bmp")
Sleep(0.1)
Wend
EndIf
Sleep(0.1)
Wend
たびたびありがとうございます。
提示してくださったスクリプトでいけました。
私が質問文であげていたのでは、画像Aをチェックする文に繰り返し処理がかかっていなかったのですね。それで止まっていたんだと思います。
いろいろ悩んでたんですが、繰り返し処理の際、条件を2つ入れ込めばよかったんですねぇ。
画像が消えることを確認する処理は入れなくても大丈夫みたいです。
また提示してくださったものを参考にして以下のように記述してみたんですが、こちらも同様にうまく走りました!
REPEAT
SLEEP(0.1)
IF chkimg("A.bmp",)
x=G_IMG_X
y=G_IMG_Y
BTN(left,0,x,y,50)
ENDIF
UNTIL chkimg("B.bmp")
BTN(left,0,100,100,50)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_07.png?e8efa67)
No.2
- 回答日時:
クリックする場所が同じで良ければ、もっと安直にできます。
bmps="A.bmp"
While True
If GetKeyState(VK_ESC) Then Break //Escキーを押したらループを抜ける
Sleep(0.2)
If Chkimg(bmps) Then Btn(Left,Click,100,100,50) Else Continue
If bmps="A.bmp" Then bmps="B.bmp" Else bmps="A.bmp"
Wend
一目瞭然ですが、変数bmpsに画像のファイル名を入れておいて、画像を見つけてクリックしたら、bmpsの中身をもう片方の画像のファイル名にすり替えてしまうというやり方です。もしB.bmpをクリックしたら処理を終わらせたい場合は、以下のようにしてください。
bbmps="A.bmp"
While True
If GetKeyState(VK_ESC) Then Break //Escキーを押したらループを抜ける
Sleep(0.2)
If Chkimg(bmps) Then Btn(Left,Click,100,100,50) Else Continue
If bmps="A.bmp" Then bmps="B.bmp" Else Break
Wend
一応どちらもEscキーを押すと終了しますが、この見方では反応が悪くて連打しないと効かないことがあるので注意。
ありがとうございます。
If Chkimg(bmps) Then Btn(Left,Click,100,100,50) Else Continue
Continueって処理せずにループの先頭にもどるんですよね。
これだと、画像Aが現れない限り、ずっとループすることにはならないのでしょうか
。
画像Aが現れず、画像Bが現れることもあるのですが…。
今、UWMCを使うことができない環境で、適当なことを言っていたらすみません。
No.1
- 回答日時:
どれが「待ち画面」のクリックなのか、「画像」のクリックなのか、分からないので何ともいえません。
> btn(left,0,100,100,50)
> btn(left,0,100,100,50)
同じ処理ですが、「待ち画面」も「画像」も同じ場所に表示されるとかなら、画像気にせずにひたすらクリックで良いのでは?
> 画像Aが現れるとそこで止まってしまいます。
止まったように見えるけど、同じ場所をクリックし続けてるのでは?
> どこがまずいのでしょうか。
コメント入れたり、Printで処理内容を表示させたりしては?と思います。
ありがとうございます。
画像Aがでたときは、画像Aをクリック、画像Bが出たときは待ち画面をクリックです。
画像Aの座標が、100,100なので、このように書いておりました。
処理内容を表示、試して見ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】甲子園での思い出の残し方
「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
UWSC「画像が無い場合」
その他(プログラミング・Web制作)
-
UWSC 画像判定と条件分岐について
その他(プログラミング・Web制作)
-
UWSCでループ処理がうまくいきません
その他(プログラミング・Web制作)
-
-
4
UWSCの画像認識と条件分岐について(初心者で独学で作ってるもので助けてください)
その他(プログラミング・Web制作)
-
5
UWSCの待機コマンドについて
その他(ソフトウェア)
-
6
uwscについて、同一の画像(仮にA)が画面に3~複数枚出現するので、初めにクリックした1枚から距離
C言語・C++・C#
-
7
uwcs のマクロで画像認識をしてその画像があればクリックというマクロを作成したのですが、クリック後
その他(開発・運用・管理)
-
8
uwscの画像認識に失敗します。
その他(プログラミング・Web制作)
-
9
WHILE (CHKIMG(”A.bmp”)=FALSE)←この終了条件を2個にするには
その他(プログラミング・Web制作)
-
10
UWSC
フリーソフト
-
11
UWSCに詳しい方簡単なテキスト入力方法を教えてください
その他(プログラミング・Web制作)
-
12
UWSCについて
その他(プログラミング・Web制作)
-
13
uwsc 画像の取得および保存方法は?
その他(ソフトウェア)
-
14
MoEでUWSC操作をバックグラウンド実行出来ない
オンラインゲーム
-
15
UWSCで、スクリプトの実行時間を一定にするには
その他(プログラミング・Web制作)
-
16
uwscについての質問です。 画面内に5種類の画像が3枚以上ずつ現れます。(Aが3枚、Bが5枚、Cが
その他(プログラミング・Web制作)
-
17
UWLSの記録でマクロを作成し使用していますが起動中に他の作業ができません。バックグラウンドで使うこ
その他(プログラミング・Web制作)
-
18
UWSCで色識別を行いたいのですが
その他(プログラミング・Web制作)
-
19
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
20
UWSCを使って画像リンクをクリックするとき???
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
背景画像の繰り返しについて
-
gif 画像上の ボタンに リン...
-
画像比較
-
Excel ユーザーフォームで表示...
-
画像のピクセルデータの取得
-
jpgファイルの内容を比較したい...
-
PowerPoint VBA で画像の鮮明度...
-
C# 画像のトリミング処理
-
DXライブラリの、マウスを使っ...
-
VBAのユーザーフォームのイメー...
-
HTMLで画像をポップアップで表...
-
UWSCで指定した画像が来たとき...
-
OpenCVで出力を24bitのbmpにす...
-
画像処理したBitmapをピクチャ...
-
C#で画像を他の画像に貼り付け...
-
UWSC「画像が無い場合」
-
スマホでサイトの画像を長押し→...
-
C# VisualStudioでプロジェクト...
-
vb.net 画像の透過について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLでこの画像を表示したいで...
-
背景画像の繰り返しについて
-
HTMLです。画像をHTMLで表した...
-
【EXCEL VBA】ダブルクリックで...
-
jqueryスライダーを2段でスライ...
-
UWSC 画像認識で条件分岐
-
EXCEL VBA 複数のImageコントロ...
-
UWSC 画像判定と条件分岐について
-
PowerPoint VBA で画像の鮮明度...
-
gif 画像上の ボタンに リン...
-
「using Windows」でエラーが出る
-
Excel ユーザーフォームで表示...
-
vb.net 画像の透過について
-
UWSC「画像が無い場合」
-
uwcs のマクロで画像認識をして...
-
UWSCの画像認識と条件分岐につ...
-
uwscの画像認識に失敗します。
-
画像処理したBitmapをピクチャ...
-
VBA シート毎に画像挿入
-
VBAのユーザーフォームのイメー...
おすすめ情報