画像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
//
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ではスクリプトが終了する等。
たびたびありがとうございます。
同じようなものかと思っていたら、ふとしたとこでつまづいていました。
これからも少しずつ勉強していきます!
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)
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(プログラミング・Web制作) uwscのCHKING関数の画像の認識がうまくいかない。 1 2022/06/18 20:55
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- その他(プログラミング・Web制作) uwscについて質問です。 1 2022/05/28 13:46
- PDF Word→pdfに変換する際,図形部分に画像が上書きされる 1 2023/02/01 12:49
- PowerPoint(パワーポイント) パワーポイント アニメーション効果で、テキストと同時に画像を表示させる方法を教えてください 2 2022/09/12 21:06
- ノートパソコン PCのshift+右クリックについて 2 2022/08/22 08:52
- その他(パソコン・周辺機器) ウインドウズ10のログオフ画面に現れる画像について教えて下さい ログオフをしてログイン待ちの画面にな 1 2023/05/19 21:37
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
UWSC 画像判定と条件分岐について
その他(プログラミング・Web制作)
-
uwscの画像認識に失敗します。
その他(プログラミング・Web制作)
-
WHILE (CHKIMG(”A.bmp”)=FALSE)←この終了条件を2個にするには
その他(プログラミング・Web制作)
-
-
4
UWSCの画像認識と条件分岐について(初心者で独学で作ってるもので助けてください)
その他(プログラミング・Web制作)
-
5
UWSCの待機コマンドについて
その他(ソフトウェア)
-
6
UWSC「画像が無い場合」
その他(プログラミング・Web制作)
-
7
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
8
UWSCのSELECT文の記述方法
その他(プログラミング・Web制作)
-
9
UWSCについて
その他(プログラミング・Web制作)
-
10
UWSCはどのプログラミング言語?
その他(パソコン・スマホ・電化製品)
-
11
MoEでUWSC操作をバックグラウンド実行出来ない
オンラインゲーム
-
12
UWSC 非アクティブウィンドウへのキー入力
その他(ソフトウェア)
-
13
UWSCに制限時間を付けたいです
その他(プログラミング・Web制作)
-
14
UWSCでループ処理がうまくいきません
その他(プログラミング・Web制作)
-
15
uwscについてです
その他(プログラミング・Web制作)
-
16
UWSCのBTN関数について。
C言語・C++・C#
-
17
uwscについて、同一の画像(仮にA)が画面に3~複数枚出現するので、初めにクリックした1枚から距離
C言語・C++・C#
-
18
uwcs のマクロで画像認識をしてその画像があればクリックというマクロを作成したのですが、クリック後
その他(開発・運用・管理)
-
19
UWSCの色判定
その他(プログラミング・Web制作)
-
20
uwscについて質問です。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「using Windows」でエラーが出る
-
ImageMagickでgif画像の一部が...
-
【EXCEL VBA】ダブルクリックで...
-
こんなことてしますか??
-
vb.net 画像の透過について
-
生成AI画像について
-
UWSC「画像が無い場合」
-
同じ画像を複数回表示させる
-
Pythonでgif画像が上手く作れない
-
Excel ユーザーフォームで表示...
-
jqueryスライダーを2段でスライ...
-
Jimdoで画像をポップアップ表示...
-
svgクリップパスの応用コーディ...
-
画像ファイルのストリーミング取得
-
画像を表示するには
-
HTMLでサイトの模写をしていま...
-
UWSC 画像判定と条件分岐について
-
VB6での画像のサイズ変更に関して
-
C#で画像を他の画像に貼り付け...
-
MATLABのDICOM画像表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
こんなことてしますか??
-
Pythonでgif画像が上手く作れない
-
Excel ユーザーフォームで表示...
-
VBA シート毎に画像挿入
-
生成AI画像について
-
EXCEL VBA 複数のImageコントロ...
-
HTMLで画像をポップアップで表...
-
UWSCの色判定
-
UWSC 画像判定と条件分岐について
-
jQuery . プログラミング 助け...
-
VBAのユーザーフォームのイメー...
-
jqueryスライダーを2段でスライ...
-
vb.net 画像の透過について
-
【WPF】画像の切り替え
-
背景画像の繰り返しについて
-
「using Windows」でエラーが出る
-
画像処理したBitmapをピクチャ...
-
スマホでサイトの画像を長押し→...
-
UWSC 画像認識で条件分岐
おすすめ情報