UWSC初心者用スレ
■ このスレッドは過去ログ倉庫に格納されています
UWSC初心者用スレです わかってる人はこっち 自動化ツールUWSC使いよ集まれ21 http://egg.5ch.net/test/read.cgi/software/1533818531/ 降臨される神々においては相手を人と思わず猿と思し召されるよう 何卒お願い申し上げます あとWendより後にifbがあるからループの中に条件がないね >>697 これをみても特に問題があるとは思えない >ループせず最後の所で止まってしまいます。 疑問1:ループしていないことをどう確かめたのか? 疑問2:最後の所とはどこか? 疑問3:終わるではなく止まるなのか? ループ中、ループ後に PRINT か MSGBOX かを入れて たしかにそこを通ってるかどうか確かめたほうがいいと思う MSGBOXを使う場合はどうせテストなのでループ中のSLEEPは 2秒くらいとったほうが扱いやすい こんなこと書いてるしネタだろう >少々省略しないと貼れないので省略しますが >そのまま貼ります。 記録すらできないアプリがあるのか…これどうなってんだ アプリはR2games.comのR2Client 12月末のFlash終了後このclientで引き続きプレイできるそうなのでインストールしてみたのだけど UWSCで記録が全くできないので自動化が出来ない flashのid取得するにはまずウィンドウidとって、その次にハンドル取得しなきゃダメだよ >>703 の件は解決したというか 今日起動してみたら問題なく取得できた なぜ取得できなかったのかはわからないけどこれで懸念事項は払拭できた >>706 は勘違いしてるけど解決したからいいです ある期間からある期間の月数って、 どうやったら求められる? 例えば2019年10月から2020年3月は6ヶ月。 これを求めたい。 検索したけど分からんかった 年×12+月で引き算+1したら? 2つのスクリプトを同時に実行したいのですがどのような処理を書くべきでしょうか? //同時.uwsの内容 call 処理1.uws call 処理2.uws こんな感じで書いても処理1.uwsが動くだけです 処理1.uwsが終わったら処理2.uwsが動くと思うのですがそうではなく1と2を同時に実行して別々の動きをして欲しいです uwscの実行ファイルとそれぞれのスクリプトファイルは全て同一フォルダにあるものとします よろしくお願いします thread 処理1.uws thread 処理2.uws thread が実行できるのは関数なので 処理1.uws, 処理2.uws を関数化したあとで call 処理1.uws call 処理2.uws thread 処理1() thread 処理2() とする必要がある しかしそれだけだと、これを実行しているメインのプロセス自体が thread を2つ起動した直後に終わってしまう なのでフラグなどを使っていつまで実行すればいいのか コントロールする必要がある thread にする必要がとくになければ uwsc を2つ実行すればいい TEST.BAT --- start C:\uwsc\UWSC.exe C:\uws\処理1.uws start C:\uwsc\UWSC.exe C:\uws\処理2.uws --- あと複数のuwsを実行する場合はマウスカーソルや キーボードは1つしかないので そういう操作がある場合は 奪い合いが起こることを意識する必要がある >>714 >>715 試行錯誤してて返事が遅くなりました スクリプトの挙動が少しおかしいですが目的通りに動いてくれるようになりました なんか変だけど動いてるからまあええかとなってしまうから進歩しないんだなと実感しました ありがとうございました 参考にしようと思って開いたnaverまとめが9月末で閉鎖してる… >>716 同時に実行されると困るような関数使ってたりするとはまるので注意 NoxPlayerでuwscを利用していて質問です IFB CHKIMGX( "1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) DOSCMD SLEEP(2) IF CHKIMG( "2.bmp",,,,,,,IMG_MSK_BGR6) DOSCMD ELSE DOSCMD DOSCMD ENDIF ELSE ENDIF このような記述にしたのですが、アクティブ中だと2.bmpを認識するのに裏マクロ中だと認識してくれません 2.bmpはPrintScreenからトリミングしたもので、動きなどない固定画像です CHKIMGX( "2.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) 当初はこのように記述していたのですが、これだとアクティブ中でも見つけてくれなかったのでCHKIMGの記述にしてみました アクティブではない状態で2.bmpを認識するにはどうすればよろしいのでしょうか >>719 SAVEIMGのIMG_BACKで取得できなかったら アプリ自体が非アクティブ時の描画をサボってるから どうやっても取得できない >>719 VMware等仮想OSの方でNOXを動作させてアクティブにすれば Vmwareを最小化にしても内部ではアクティブですからね こういうときは多コアのCPUが有利なので8コアや16コアのCPUを買おう! >>720-721 たしかにそのやり方は強引にできそうですが、調べてたらWindows10では無理だったみたいです ただアクティブ状態でも IF CHKIMGX( "2.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) これだと画像認識せず IF CHKIMG( "2.bmp",,,,,,,IMG_MSK_BGR6) これだと画像認識されるのはどういうことでしょうか ちなみに画像は異なりますが IFB CHKIMGX( "1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) こちらは認識してくれているので、記述のミスはないと思います 画像が異なるが答えなのでは…? 実物も見せず言うだけ言われても何も分からんがな 画像が異なるってことはチェックしてる画面が違うわけで 画像以外のパラメータがどれか合ってないのでは よく知らないけど、X版とCHKIMGでは判定方法が違うんじやないの? X版は、かなり暗くても高スコアでヒットするから CHKIMGX( "2.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) これのx1,y1,x2,y2を使ってsaveimgしたbmpを2.bmpに差し替えてどうか PrintScreenから作ったbmpがおかしいか、座標がおかしいかわかるでしょ >>723-728 いろいろと勘違いさせてしまいました まず2.bmpの部分はCHKIMGを用いれば画像認識されているので現状意図した動作はされています ですので、PrintScreenしたbmpがおかしいということもないと思います 疑問なのは、あいまい画像認識のCHKIMGXの方が高確率で認識されると思うのですが、 なぜあいまい画像認識のCHKIMGXでは認識せずにCHKIMGの方でないと認識しないのかとういことです 1.bmpは関係ありません ただ1.bmpと2.bmpでは認識してもらいたい画像の部分だけ変えてる以外にCHKIMGXの記述を変えてないので、 記述間違いなら1.bmpも画像認識されないから2.bmpが画像認識されないのも理解できるけどっていうことです IFB CHKIMGX( "1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) DOSCMD SLEEP(2) IF CHKIMG( "2.bmp",,,,,,,IMG_MSK_BGR6) DOSCMD ELSE DOSCMD DOSCMD ENDIF ELSE ENDIF これだと2.bmpを認識して動作しますが、 IFB CHKIMGX( "1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) DOSCMD SLEEP(2) IFB CHKIMGX( "2.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) DOSCMD ELSE DOSCMD DOSCMD ENDIF ELSE ENDIF これだと2.bmpを認識しないので動作しないということです >>728 だから判定したい場面も判定画像も上げずに目隠しで言われてもエスパー回答しかできねーのよ ゲームの絵貼りたくないならマス目画像とか適当な背景画像で状況再現したセットをくれ >>728 X版はデバッグモードあるから有効にしてみたら何かわかるかも知れない >>732 実際に起きてた問題と原因と解決した方法を報告してね >>732 ネットでの質問は、自己解決した場合もその内容を具体的に報告することがマナーとなっていますのよー そうしないと情報の共有が出来なくて回答者は無駄足になるし、 聞き逃げが続くと誰も答えなくなるかもしれないからね 自己解決したんだから回答者は答えてないのと同じだと思いますが まー多分つまんない勘違いか思い込みだったんだろう んなもん共有されても参考にならないしいんじゃね 仰る通り、回答者もいなかったので記載するほどでもないと思っていました CHKIMGで認識できて、あいまい認識できるCHKIMGXが認識されなかった問題ですが、CHKIMGXでの認識は無理だと判断しました SAVEIMGで画像取得しても特に画像に違いが見当たらず、 認識する範囲を画面全体から、認識してもらいたい画像がある範囲のみに絞っても無理 判定閾値の条件を緩くしたら、今度は画像が表示されていないのに認識してしまうほどでした CHKIMGXでは色幅が利用できないようなので、一見わかりづらいですがおそらくそこに問題があったのではないかと思います CHKIMGXの着目する色では対応できなかったということか 最終的に原因を書いてくれたのだからいいけど >>719 や>>722 にいくつか回答がついたのだから原因は書くべきでしょう 例え回答が役に立たなかったとしても、回答者は質問に対して時間を割いたのだから それは質問者の最低限のマナーだとおもうよ そうでなければ見返りもなく回答する人がいなくなって質問スレは成り立たくなる >>738 >回答者もいなかったので記載するほどでもないと思っていました うん。それ間違いだから直そうね それはさておき、範囲の比較じゃ無駄が多いから、peekColorでfunction作ったほうが速いんじゃね 何に使うのか知らんが、ゲームの画面監視でHP・MP・敵と第三者を常時監視して完全な自動戦闘するなら断然軽かったぜ 昔mixiゲームにあったクライムワールドで 格下相手に粘着して5万勝以上稼いだのは僕です マクロ様々でしたね〜! >>738 CHKIMGXはモノクロに変換して比較するから色違いの画像とかには向いてないよ >>738 chkimgxで認識できなくてchkimgだと認識する画像パターンは存在するからね chkimgxっていうか使ってるOpenCVライブラリの問題だと思う。もしかしたら、こっちのバージョン上げて作り直したら解消するかもしれない windows10の1909から20H2へアップデートしたらブラウザの描画が変わって画像取得をやり直す羽目になった… フォントはブラウザ毎で異なるのは許容できるけど画像の描画も変わるのは解せない 普段chkimgしか使ったことないけどこういうのはchkimgxで解決できるのかな? >>746 画像の大きさが同じならある程度吸収するけど 基本はRPAスレでも散々言われてるように環境変わったらその環境用に作り直すしかないよ こういう処理をさせたいのですが、変数?の使い方が違っていてエラー吐いて動きません どなたか教えていていただけないでしょうか。 マクロ1 for kaisu = 1 to 10 もし、この条件を満たすなら、「処理AA」をCall next マクロ2 処理AA k=k+1 ←「処理AA」が行われた回数のカウントをしたい ※マクロ1へ戻る マクロ3 if k = 1 then 操作B if k = 2 then 操作C ↑のようなものを作っても k=k+1 これが「変数kが定義されていません」エラーを吐いて動きません マクロ2の変数をマクロ3では参照できない 詳しくは変数のスコープでググってくれ できない理由の回答ありがとう PUBLICを使うことでなんとかなりそうです excel2013以降全般でUWSCでexcelファイルをオープンにする場合と デスクトップ上からexecelファイルをクリックしてopenする場合では何かexcelの認識が変わるのでしょうか? excelに後から入れたアドインが上記の場合だとアドインを認識してくれず 下記の場合だとアドインを認識してくれる状態で困っています お気に入りだったのがサービス終了したもんで マクロ使ってプレイすると面白いゲーム教えて下さい 裏マクロでの画像認識について質問です w_id = getid( "エミュレーター" ) mouseorg( w_id ,2 ,MORG_BACK ) を利用した裏マクロを作り、再生してみたのですが オンマウス状態にしないと画像認識が働かず 困っています。 【現在の状況やその具体例】 ・単純なクリック操作は裏マクロとして正常に動作する ・エミュレータの外側にマウスカーソルがあると画像認識がまったく働かない ・エミュレータの内側にマウスカーソルをもっていくと即座に画像認識が行われる ・エミュレータがアクティブ状態か非アクティブ状態かは関係なく オンマウスかどうかで画像認識の「働く/働かない」が決まる状況 (PC画面の最前面はメモ帳やブラウザ。裏で開いているエミュレータの先っぽだけを ブラウザの上にハミ出させて、そのハミ部分にマウスカーソルを移動させると画像認識動く) この「オンマウスでないと画像認識が動かない」状況を解消する方法を知りたいです よろしくお願いします。 >>755 すみません。質問者です >単純なクリック操作は裏マクロとして正常に動作する ↑これもオンマウス状態でないと動作していませんでした。勘違いしていたようです 根本的に裏マクロの作成に失敗してる気がします もうちょっと自分で試行錯誤してから質問しなおします。 数回滞納したら信用機関のブラックリストに載るんだろ これ最悪じゃん 滞納ってのは金払いますって約束を破ってるんだから信用に傷付くのは当然だと思うんだが 遅れても払えば問題ないって意識が根本的におかしい uwscで自動化しろ IEでサイトをよんだら、Edgeが起動した。 もうだめだ。オレの人生はおわった。 変わりの自動化ツールを教えて下さい ieでそのまま開くみたいな設定がedge側にあったと思うけど >>764 ありがとうございます。 設定を変更してできました。 前日にはIEで表示できたのに、今朝になって突然代替表示されるようになって動転してしまいました。 adbを利用したマクロのタップ位置をちょっとだけランダム化したいです 表マクロで座標(20,50)の周辺をランダムタップする場合は 20+RANDOM(1),50+RANDOM(1) ↑みたいにすれば出来ていたのですが、 adb版の裏マクロだとどういう記述にすればいいのでしょうか 返答ありがとうございます 括弧でくくるとはどこをどのようにくくればいいのでしょうか… 具体例を書いていただけるとありがたいです。 頭が弱くて申し訳ない泣 下記を試してみたのですが一番上のやつだけが正常に動きます 成功(ランダム化無し) DOSCMD("cd C:\LDPlayer\LDPlayer4.0 & adb shell input tap 20 50") 失敗(ランダム化有り) DOSCMD("cd C:\LDPlayer\LDPlayer4.0 & adb shell input tap 20+RANDOM(1) 50+RANDOM(1)") 失敗(ランダム化有り_座標を括弧で括る) DOSCMD("cd C:\LDPlayer\LDPlayer4.0 & adb shell input tap (31+ RANDOM(1)) (50+ RANDOM(1))") 失敗(ランダム化有り_座標を括弧で括る2) DOSCMD("cd C:\LDPlayer\LDPlayer4.0 & adb shell input tap 31(+ RANDOM(1)) 50(+ RANDOM(1))") また>>674 の書き方は doscmd(" ")の「")」の箇所が「)」になっていて「" "」で最後のY座標を覆えていないのですが これは書き込みミスですか?それとも何か意図があるでしょうか DOSCMDで送信するのは文字列 下3つはRANDOM関数がダブルクォーテーションで囲われてるから関数ではなく文字列として認識されてる 文字列は結合が出来る str = "aaa" + "bbb" print str > aaabbb >>768 文法適当だけどこう doscmd("adb shell input tap" + " " + (10 + rnd(10)) + " " + (20 + rnd(20))) 数値の加算としてて扱いたいところを括りなさいということ doscmdで失敗したらdoscmdの返り値を吹き出しとかログに出して確認するとコマンドプロンプト上のメッセージ見れるよ まあ、あとdoscmdで構文組み立てると使い回し的に微妙だし外で組み立ててデバッグ表示とか確認してから文字列の変数で渡す方がいいかな >>769 >>770 返答ありがとうございます。 教えていただいたルールと実例を見て少しずつわかってきた気がします 「+ " " +」の箇所が不思議な並びに見えていたのですが、「" +」で一塊の記号 と捉える(?)ということが何となくわかってきました。 「" +」と「関数」の組み合わせで、関数部分は括弧で両脇ガードするイメージかな、て。 理解が追いつきそうな気がします。ありがとうございます いや変な理解してるよw プログラム知識どのくらいあるか知らんけど、要はdoscmdは最少だと文字列1つが引数なのが大前提 次にuwscは文字列に対して+すると左辺右辺を文字列とし結合する この時、数値も文字列になるし、関数は返り値が文字列になる なのでdoscmdの1番外の括弧の中の+は基本的に文字列の結合をしている 括弧の中にある括弧内は先に数値の計算がされる doscmd(10 + 10) だと1010になって doscmd((10 + 10)) だと20になる doscmd(a + " " + b) これはなんのことはなく単にaとbの間にスペースいれてるだけだ ありがとうございます。今度こそわかりました つまり、doscmd(a + " " + b)のaとbとにランダム数値を代入する、みたいな式を これの前に書けば晴れてランダム座標の完成となるわけですね ちなみにお察しの通りプログラムの知識はなく 録画した表マクロが読める程度です… 回答ありがとうございます >>763 IE専用ツールじゃないから、EdgeでもChromeでも動くよ >>774 それがですね問題なのは、IEの場合、ページが読み込み完了になるまで待っててくれる関数があるじゃなんですか。 ああいうことができないと、例えばボタンを押すタイミングが早すぎたとかいうことになって先へ進めなくなるんです。 他のRPAでしたっけか、そういったもので、ブラウザの読み込み完了になるまで待機するようなものが見つけられなくて UWSCでIEをそのまま使いたいと思ってしまっているわけなんです。 Seleniumでもpuppeteerでも好きなもの使え Aという動作をループさせながら、Bという画像が現れたら数分後にBをクリックするとかできますか?スリープだとAの動作が止まってしまうので… Aを内包する大ループ作るだけでよくね 正攻法はthreadでいいと思うが 難しく考えすぎなのでは? DIM Flag = False //B画像検出フラグ //Aという動作をループ While True //B画像が現れたらxに現在時刻を記録しFlagをTrueにする IFB CHKIMG("B.bmp") and (Flag = False);x = GETTIME();Flag = True;ENDIF //B画像検出して60秒経過したら、B画像をクリックしてループを抜ける IFB ((GETTIME() - x) > 60) and (Flag = True);BTN(LEFT,CLICK,(G_IMG_X+5),(G_IMG_Y+5));BREAK;ENDIF //B画像が現れず、120秒経過したらループを抜ける IFB ((GETTIME() - x) > 120) and (Flag = False);BREAK;ENDIF Wend IFB Flag = True;msgbox("B画像検出");ENDIF IFB Flag = False;msgbox("B画像未検出");ENDIF 782:gettimeかthread 785:考えすぎでは?gettime使え xの初期値を入れてなかったから修正 DIM Flag = False,x = GETTIME() //B画像検出フラグ,xに現在時刻を入れる //Aという動作をループ While True //B画像が現れたら、現れた時刻をxに入れてFlagをTrueにする IFB CHKIMG("B.bmp") and (Flag = False);x = GETTIME();Flag = True;ELSE;ENDIF //B画像検出して 60秒経過したら、B画像をクリックしてループを抜ける IFB ((GETTIME() - x) > 60) and (Flag = True);BTN(LEFT,CLICK,(G_IMG_X+5),(G_IMG_Y+5));BREAK;ENDIF //B画像が現れずに120秒経過したらループを抜ける IFB ((GETTIME() - x) > 120) and (Flag = False);BREAK;ENDIF Wend IFB Flag = True;msgbox("B画像検出");ENDIF IFB Flag = False;msgbox("B画像未検出");ENDIF >>787 素人考えですが 画像検出のIFブロックで発見したらBTNの第五引数で実行待ち時間を指定すればフラグ要らないような BTN(LEFT,CLICK,(G_IMG_X+5),(G_IMG_Y+5),600000) とすると、クリックするまでループ処理が止まる 止まるとA動作のループが動かない MSがなにやら簡単ツールを提供するようだ 自動化が簡単になる ソースは? UWSCみたいには使えないと思うが・・・ コードを書かずに〜と書いてあることから凝った設定はできないとも読めるよ? まあ仮に自動化できたとしてもUWSCと同等のことが出来なければ用が無い これとUWSCを組み合わせて使えば自動化が簡単にできるようになるんじゃないかと期待してみる ブラウザの読み込み完了になるまで待つ機能があるかどうかですお。 そりゃ自動化ツールなんだから クリックした結果を見る前に次の動作するわけなかろうw 艦これの自動化くらいすぐ出来そう //IE以外で読み込み完了まで待機が出来ないとか何とか・・・? DOSCMD("start microsoft-edge:http://www.google.co.jp/" ;) //Edgeを起動してGoogleを表示 ID = GETID("Edge", "", -1) Stand-by(ID,ITM_BTN,"Google 検索") SENDSTR(id,"屋久島", 1, True) // 屋久島と入力してEnter SCKEY(ID, VK_RETURN) Stand-by(ID, ITM_LINK, "地図") CLKITEM(ID, "地図", CLK_LINK) // 地図をクリック //指定アイテムの文字が確認できるまで待機 Procedure Stand-by(ID, kind, ITM) While True Sleep(0.4) for n in GETITEM(ID, kind) if n = ITM then Exit next wend Fend >>793 の続きが紹介されていた windows10homeの場合は使えない機能があるとのことProを使うのは当たり前なんで気にしたことなかったが。 homeの人はproへグレードアップしてほしい。約1万5000円支払えば可能だから当たり前にやっておこう。 また、ブラウザの自動操作は拡張機能が必要とのことだ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる