UWSC初心者用スレ2

2021/11/18(木) 19:12:15.32ID:DCbtCP/2
UWSC初心者用スレです

わかってる人はこっち
自動化ツールUWSC使いよ集まれ24
http://egg.2ch.net/test/read.cgi/software/1625624264/

アドバイスされる方には
相談者が理解できていない部分を責めたりしないよう
お願いいたします

前スレ
UWSC初心者用スレ
http://mevius.2ch.net/test/read.cgi/tech/1537758829/
2022/01/15(土) 16:59:47.34ID:DFX5O6Fa
「一定時間マウス操作が無かった時に発動する命令」についての質問です

命令@を繰り返し続ける

1分間クリックが行われなかった場合は
命令Aを行う

命令@の繰り返しに戻る

という命令文を「adbの裏マクロ」で組みたいです。
通常のマクロで上記を行う場合は「マウスカーソルの座標が移動したかどうか」
を発動条件にすればできると聞きましたが、
マウスの動かない裏マクロで上記をみたす命令文は構築できるのでしょうか
できる場合は例文やヒントを教えていただきたいです
1分間クリックが行われない状況が多岐にわたるため
「特定の画面になったら命令Aを行う」はできそうにありませんでした
2022/01/15(土) 17:17:26.50ID:2W+4eRYP
マウスカーソルの座標を取得し、一分後のマウスカーソルの座標と比較
2022/01/15(土) 17:38:40.10ID:DFX5O6Fa
>>63
マウスが動かないためそれが出来ず困っています
「クリックが行われたかどうか」の有無を判定する命令文があればいいのですが…
2022/01/15(土) 18:11:34.39ID:8h/gvJDc
下の想定はあってる?
ゲームを裏で自動で動かす一方で表ではPCをいろいろ使ってる
ゲーム内で1分クリックがなかった場合は命令2をする

クリックはどうやって行われるの?
命令1の中にクリックが含まれる?
気が向いた時に自分でゲーム操作してクリックする?
2022/01/15(土) 19:18:49.62ID:DFX5O6Fa
THREAD checkCur() //以下の命令文を「checkCur()」で監視する

WHILE TRUE //@を繰り返す
(操作@)
WEND

PROCEDURE checkCur() //「checkCur()」の効果を下記のうように定める
t = GETTIME()
WHILE TRUE
x = G_MOUSE_X
y = G_MOUSE_Y
SLEEP(1)
IF G_MOUSE_X <> x OR G_MOUSE_Y <> y THEN t = GETTIME()
FUKIDASI(GETTIME() - t)
IF GETTIME() - t >= 60 THEN BREAK
WEND

(任意の操作A) //60秒何もなかったらAを実行
FEND
2022/01/15(土) 19:38:25.22ID:DFX5O6Fa
>>65
想定としては
PCを全く触らない想定です

クリックのが実行は
特定の画像を見つけたら、定位置3か所程度をクリックするというものです
これを@の繰り返し部分につかっています。

他人の書いた命令文の見様見真似で
>>66を走らせてみたのですが
@を60秒間繰り返したのち、すぐにAが発動しちゃっていて
裏マクロのクリックはマウスの動作として認識されていないようでした
2022/01/15(土) 19:46:52.14ID:JoeIONBq
それ画像が見つからない状態が一定時間経過したら命令2に移行するでいいんじゃないの
adbによるタップはマウスカーソル座標とか全く関係無いよ
2022/01/15(土) 20:14:55.94ID:DFX5O6Fa
>>68
その方式にしたら私の知識でもうまく作れそうですね…
ただ、他のマクロにも利用できる汎用性のあるものを作りたいと考えていて
「一定時間クリックが行われなければ」をトリガーにした命令文を作りたい
と考えています
2022/01/15(土) 20:43:12.28ID:DFX5O6Fa
改めて調べてみたのだけどクリック判定は難しそうです
ひとまず、画像なしを一定時間(複数回)検知したら〜という方式で作ってみます
ありがとうございます
2022/01/15(土) 23:18:43.08ID:zZcweZ63
>>66
checkCur()
は一度Aを実行すると終了して
それを実行していたスレッドも終了してしまう
ループを2重にしてAを実行したあとはまた最初っから
の処理を繰り返す必要があるのでは
2022/01/16(日) 00:15:41.45ID:eEuzY81s
タップしたかどうかで判定したいならadbによるタップを関数化して
関数内でグローバル変数に最後にタップした時間をGETTIMEで入れればいい
2022/01/16(日) 00:32:01.33ID:V+ZRX82D
こんなん?
public isclicked=0
(省略)
procedure adbclick(引数省略)
isclicked=1
doscmd(引数省略)
fend
2022/01/16(日) 01:24:00.18ID:4EWMaBch
>>71
たしかにその通りでした
>66だとA発動条件の監視は1度だけになっていました
見てわかるのがすごい。私は走らさせないとわからなかった
2022/01/16(日) 01:36:07.69ID:4EWMaBch
>>72
>>73
言っていることは朧げに分かりますが
それを命令文化する知識が足りません。でもありがとうございます!
>>73を参考に方法を調べてみます
2022/01/17(月) 13:17:30.06ID:ephhg8o+
これってマックで使えないの?
2022/01/17(月) 13:47:39.86ID:BS7LWx0L
>>76
Windowsが動くマックなら使えるでしょ
試してないけど
2022/01/20(木) 11:03:19.87ID:V75Vz3Z+
質問します。
無料バージョンとProバージョで、単にExcel起動させるスクリプトなんですが、無料はちゃんと動くがProは工ラーが出てしまう。
Verはどちらも 5.3.0.2です。
ただ、ー部のスクリプトはProでも動きます。

使い始めて間がないので、よくわかってないところが大部分です。
よろしくお願いします。
2022/01/20(木) 11:15:19.75ID:9lIEWcOm
動くスクリプトと動かないスクリプトをそのまま貼り付けて書き込みしましょう
2022/01/20(木) 14:49:50.52ID:n7chvAG3
ついでにどう動かないのか
エラーメッセージが何なのかも書いた方がいい
2022/01/20(木) 17:35:23.20ID:V75Vz3Z+
78です。
家に帰ったら、スクリプトとエラーの表示内容をアップします。
2022/01/20(木) 21:42:35.09ID:MyoibU5A
>>78です

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.Workbooks.add()
2022/01/20(木) 21:44:19.00ID:PmxKwmhK
https://i.imgur.com/BGugBib.jpg
2022/01/20(木) 22:41:07.67ID:BEc60Lbm
セキュリティソフトを起動させておくと>>83のエラーが出たけど、OFFにしておくと問題ない

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.Workbooks.add()
EXCEL.visible = True
2022/01/21(金) 07:31:53.10ID:dq8Ljfzw
>>84
検証、ありがとうごさいました。
2022/01/23(日) 23:17:34.39ID:EK6M0RjQ
昨日まで問題なく使えてたChklmgXが急に画像認識しなくなったんだけど何か原因ありますか?
2022/01/23(日) 23:18:11.34ID:dd4Q4/BT
>>86の環境が変わった
2022/01/24(月) 17:17:53.61ID:aEoJXi2O
原因が有りすぎて特定できん
一つずつ原因を探って行くしか無い
2022/01/24(月) 18:47:54.12ID:1UwK5pur
たびたび認識しなくなるようなら
認識用の画像を取り込むマクロ組んだほうが早い
2022/01/25(火) 08:40:44.22ID:2SB0W66n
>>86ですが、どんな感じでおかしくなったかというと、
例えば「OK」というボタンがあって、色々な「OK」ボタンがあるのですが、その違いはほとんどありません。
(OとKの隙間が何ミリ違うとかのレベル)
先日までは色々な「OK」ボタンを全て認識してくれていたのですが、急に認識しなくなりました。
どれぐらい認識しないかというと通常のChklmgぐらい認識してくれません。
2022/01/25(火) 09:35:40.35ID:bQTfb4+e
>>90
chkimgXは全く同じ形でも大きさが変わると認識できない
なぜ今まで認識できていたかはわからないけどそれが本来の挙動
2022/01/25(火) 11:03:12.63ID:f9K0hpc1
Windows10だとスケーリング変えるだけで動かなくなるからそこがが一番怪しいと思うけど
次の日いきなりということ他のソフトの影響や権限関係で画像キャプチャ自体を拾えなくなってる可能性もある
2022/01/25(火) 12:15:52.72ID:clOxlBpk
OKボタンをキャプチャできないように対策された可能性も
2022/01/26(水) 18:42:02.11ID:eMrJuTGp
画像の撮り直しするしかないだろうな
自分も年2回くらいの頻度でゲームのメンテ後にそういう状況になる
2022/01/26(水) 19:31:39.15ID:3qeFT0O1
アンチエイリアスが掛かっていると
同じ画像のはずなのに僅かなドットの違いで
反応しなくなったりするみたいだな
2022/01/26(水) 20:32:24.66ID:YrQt15hx
なんならビデオカードのドライバが変わるだけでアウトだったりするしな
ほんの僅かな違いで認識しなくなる
2022/01/26(水) 22:17:32.56ID:6HW3aESR
OKの画像でダメならOだけの画像にするとはよくやる
ギリギリまで無駄な部分を削って誤差を少なくするのは基本
2022/01/28(金) 22:55:54.34ID:oecXklWi
画像認識で押さなくとも、CLKITEMで押せたりもする
2022/03/27(日) 23:40:28.02ID:04DQ0omn
すみません教えて下さい!
@〜Bの写真を順番にクリックしたいんですけど@の写真がなければAとBの動作はしないようにするには@のchkimg()のあとに=trueをつけるといいんですか?
あと@〜Bを順番に動作させたい場合はstepは使わないですか?step入れてみたのですが訳がわからなく使っててよく分かりません
2022/03/28(月) 01:13:44.89ID:Qyr8aL6i
@の画像とAの画像同時に存在するときに動作するようにする
ifb chkimg@ and chkimgA
click
2022/03/28(月) 09:23:26.66ID:Z3wXEIoi
結局代替はみんな何使ってんの?
2022/03/28(月) 09:44:40.37ID:1jf8X/eZ
今のところ代替の必要がない
103デフォルトの名無しさん
垢版 |
2022/03/31(木) 00:51:25.15ID:NioKJ8hU
教えてもらえませんか?
アクティブなウィンドウで選択している文字をCTRL+Cでコピーしたいのですが
アクティブなウィンドウが取得できません
ACW(GETID(GET_ACTIVE_WIN))をやっているのですが
別のウィンドウからコピペされてしまいます
ACW(0)だとALT+F1ではコピーできますが、再生ボタンを押すと
別のウィンドウからのコピペになってしまします
どうしたらアクティブなウィンドウを指定できますか?
104103
垢版 |
2022/03/31(木) 03:24:15.22ID:NioKJ8hU
>>103
自己解決です。
どうしても使いたい機能がある別のマクロソフトと
組み合わせることにしたので
アクティブなウィンドウの指定がいらなくなりました
お騒がせしてすいません
105デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:47:22.24ID:yfsHggVp
こんばんは。初心者用スレではない方でも書き込んだのですが、こちらにお分かりになる方いればお教えいただきたいです。
タブレットPCを使用しているのですが、画面のタップを記録できず困っています。マウスでのクリックではなくタップを自動化したいのですが、どのようにすればよいでしょうか?
106デフォルトの名無しさん
垢版 |
2022/05/02(月) 21:43:17.59ID:EAkaa/98
chkimgxで教えてください。
エラーが出て動作確認の為に以下のようなコードを書きました。
if chkimgx(image file)
msgbox(“1”)
else
msgbox(“2”)
endif

if chkimgx(image file)
msgbox(“3”)
else
msgbox(“4”)
endif

これを実行すると2回目のifでエラーになります。
なぜでしょうか?
2022/05/02(月) 22:32:56.47ID:OUNKq7dB
2回目のimage fileの指定が間違ってる
2022/05/03(火) 05:14:30.48ID:q6WjpaXg
" syntax error " と
" file not foud " と
" null pointer exception " では対処が違う
2022/05/03(火) 07:27:16.98ID:UCmy3FzQ
やりたいことはifじゃなくてifbじゃないの
110デフォルトの名無しさん
垢版 |
2022/05/03(火) 10:15:47.24ID:oFZBhoiN
ご指摘ありがとうごさいます。

STARTUP_CHKIMGX()

SHUTDOWN_CHKIMGX()

使用する時この中に記述しないといけないのを見落としていました。
なんとか本来行たい事も出来ました。
すみませんでした。
2022/05/03(火) 14:09:04.62ID:KNYGN0Wa
バグの原因の多くが、スペルミスか記述漏れである事は多い

どうせスペルミスだろと思って見直す事はよくある
2022/05/04(水) 06:34:34.80ID:7xKas5ey
>>109
どっちも同じです
2022/05/04(水) 18:00:54.33ID:3g5tWLyo
やりたい事もやれない世の中はポイズン
114デフォルトの名無しさん
垢版 |
2022/05/07(土) 12:52:09.91ID:4xkMcU9J
あいまい検索プラグインのchkimgXをDLしたいのですがどこにあるでしょうか?
ご指南お願いします。
piggy-bank.jp の DNS アドレスが見つかりませんでしたとなり、みつけられませんでした。
2022/05/07(土) 12:58:40.40ID:islK5eJv
無能すぎて笑ったから貼ってあげましょう
https://classicrpa.000webhostapp.com/ChkImgX-ver1.2.1.zip
2022/05/07(土) 16:22:01.86ID:ZNYq+zf8
いろんなサイトに転載されてるから chkimgX DL でググればDL出来るサイトは普通に見つかる
117デフォルトの名無しさん
垢版 |
2022/05/07(土) 17:25:55.09ID:4xkMcU9J
>>115
ありがとうございます。
118デフォルトの名無しさん
垢版 |
2022/05/25(水) 06:44:52.01ID:u9geCx6Z
最近uwscを使い始めてnoxにadbコマンドを送ってゲームの自動化をしていたのですが、キーボード入力が出来なくて困ってます。
調べたところadb shell input keyevent A でキーボードのAが入力されるみたいなのですが、実行してみたところ何も起きません。
//入力
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input keyevent A"
print CMD //CMDの内容を確認
DOSCMD(CMD) //Noxに操作を送信
sleep(1) //操作送信後1秒待機
上記実際に試したスクリプトですがどこか間違っているのでしょうか?
2022/05/25(水) 07:28:30.21ID:KZxZ7LBt
>>118
一度に複数のコマンドを実行する場合は<#CR>改行でつなぐ
CMD = "cd C:\Program Files (x86)\Nox\bin<#CR>nox_adb shell input keyevent A"
2022/05/25(水) 10:46:15.60ID:Z9JTB2tv
自分も>>118と同じく最近uwscとnox_adbを使い始めたのですが、
chkimgXで得られたG_IMGX_XとG_IMGX_Yをnox_adbに送るとタップ位置が(xy両方)ズレてしまいます。

ifb CHKIMGX("image1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) THEN
BTN(LEFT,CLICK,g_imgx_x, g_imgx_y,0)//←これは正しい位置をタップする
DOSCMD(dir + "nox_adb shell input touchscreen tap " + (g_imgx_x) + " " + (g_imgx_y - windowflamesize))//←これはズレる

ソースコードはQiitaの「UWSC × Nox でゲームマクロを作成する。」をほぼそのまま使ってます。
ズレが無くなるようにするにはどう書けば良いでしょうか?
2022/05/25(水) 11:34:10.69ID:kLoWZPwa
G_IMGX_XとG_IMGX_Yを+か-して調整すれば良い
2022/05/25(水) 17:11:34.18ID:Z9JTB2tv
>>121
ズレる位置が常に一定なら±するだけですが、固定値では無いんです。
何らかの法則はありそうなのですが、その計算式の求め方というか根拠が分かりません。
nox_adbのタップ位置 = G_IMGX_Y * ??? + ???
123デフォルトの名無しさん
垢版 |
2022/05/25(水) 17:59:07.24ID:u9geCx6Z
>>119
ありがとうございます
無事出来ました
124デフォルトの名無しさん
垢版 |
2022/05/25(水) 18:14:22.88ID:iso8r4bW
UWSCってなんですか?
2022/05/25(水) 19:39:24.22ID:rVGJ6xgQ
Umiumi Windows SCript
だっけ?
2022/05/31(火) 05:16:47.31ID:omctaPA2
2022/05/31(火) 06:37:44.93ID:mVj/h8Ue
Delphiで作られているらしいな
c#等の.net系は実現出来るのだろうか
2022/05/31(火) 06:45:19.87ID:SYdTC473
.net系は実現できるのだろうかってどういう意味?
2022/06/02(木) 20:31:26.54ID:rz5QQV47
見た目は今風になるだろうけどDelphiよりは確実にもっさりしたのが出来上がる
2022/06/03(金) 04:53:58.22ID:GQ43dJuv
今UWSCと同じような物を作る最適な言語はなんだ
Delphiは優秀だけど古いよな
2022/06/03(金) 09:32:49.12ID:4c5BNRsi
pythonじゃね
それかruby
ゲームのマクロ目的だからExcelを自動化みたいな考えは無い
2022/06/03(金) 14:40:18.33ID:971V5y+F
言語に古いも新しいもない
2022/06/03(金) 15:20:14.94ID:0iMwvplW
あるけど 古い=悪い わけではない
2022/06/03(金) 22:01:48.99ID:vpEWwdrG
rubyはGUIが弱くってそこを補うためにuwsc使ってるからuwscの代替となるかと言われると無理な気がする
2022/06/03(金) 22:40:43.65ID:3c73icsX
UWSCでGUIはなくてもよさそうだけど
2022/06/03(金) 22:52:34.21ID:971V5y+F
Python 1991年
Ruby 1993年
Delphi 1995年

どれも大差ないよ
2022/06/04(土) 00:45:44.64ID:vzqEPqD2
Python等のインタプリター言語で
uwscのインタプリターを作ったら
遅くなり過ぎるだろ
2022/06/04(土) 05:07:12.40ID:uhrbPQbf
知ったか
2022/06/04(土) 09:06:55.20ID:hxU+fwdC
いや、当たり前のこと言ってるようにしか思えないんだが
2022/06/04(土) 09:36:23.36ID:4UBGSNRy
作者がもうこの世にいない以上、今あるUWSCでどうにかするしかない
2022/06/16(木) 15:59:53.46ID:N3SYIUJS
>>135
fukidasiだけでもめっちゃ便利なんです
2022/06/23(木) 21:20:05.65ID:4JatNiDf
マルチスレッドを使えば
吹き出し64個同時表示が可能なんだよな
143デフォルトの名無しさん
垢版 |
2022/06/26(日) 13:09:31.78ID:hbdcqL5D
エスケープ文字のエスケープ方法を知りませんか?

ダブルクォーテーション、改行、タブは
エスケープ文字として<#DBL>、<#CR>、<#TAB>が割り当てられていますが、

例えば「"テスト<#DBL>です"」という文字列をファイルに出力すると
エスケープされて「テスト"です」という内容のファイルが出来ます。

これをエスケープされないように「テスト<#DBL>です」と出力するには
どうすればいいのでしょうか?
2022/06/26(日) 13:12:38.36ID:UB4e87n3
チョンチョンで囲っても駄目なんだな
145sage
垢版 |
2022/06/26(日) 15:45:20.94ID:1mHgElUf
>>143
//全部大文字 をやめる
msgbox("a<#"+"dBL>b")

//または
option specialchar
msgbox("a<#"+"DBL>b")
2022/06/26(日) 18:48:40.54ID:bS2HZoKx
>>145
これは自分では解決無理でした
本当にありがとうございました
147デフォルトの名無しさん
垢版 |
2022/06/28(火) 11:54:10.54ID:t3kJoord
モヤモヤが動いていて画像が指定クリック出来ません💦
あいまい画像検索しても上手くいかないのですが方法はありますか?
148デフォルトの名無しさん
垢版 |
2022/06/28(火) 11:55:08.44ID:t3kJoord
https://i.imgur.com/ysZqieY.jpg
2022/06/28(火) 17:08:34.60ID:/dfK2g9c
モザイクを無視して文字列だけを認識させるという事か?
150デフォルトの名無しさん
垢版 |
2022/06/28(火) 20:47:32.69ID:b3tUfSci
>>147

> モヤモヤが動いていて画像が指定クリック出来ません💦
> あいまい画像検索しても上手くいかないのですが方法はありますか?

集まれスレで返答貰ったので〆ます✨
2022/07/29(金) 16:42:17.83ID:so2b8qwX
test
2022/07/30(土) 21:13:43.61ID:8Mquypwa
tester
2022/07/31(日) 23:15:10.36ID:LmtiMMax
testest
154デフォルトの名無しさん
垢版 |
2022/08/06(土) 11:49:04.93ID:Jq43FlU6
オンラインゲームでマーケットにアイテムが出品された瞬間に購入するbotを作る場合
uwscとpythonどちらのほうが早く購入することができますか?
2022/08/06(土) 12:52:24.92ID:+9Ajl8XK
不定
2022/08/06(土) 13:52:07.75ID:3XvgAeC8
>>154
そんなのBANせれて終わりだろ
出品されたか確認の為に頻繁に問い合わせしたら即バレるわ
157デフォルトの名無しさん
垢版 |
2022/08/06(土) 17:37:43.29ID:Jq43FlU6
>>156
それはそうかもしれませんが、単純に速さはどちらが上ですか?
2022/08/08(月) 14:21:58.10ID:A57pDOpl
同じウィンドウ名とクラス名のブラウザアプリ(ChromeとEdge)で、同時に同じ箇所を1回だけ裏クリックしたいです。
色々なサイトを参考にして書いてみたのですが、全く動作しませんでした。
どう改善すれば良いかご教示ください。

FUNCTION GETID2(title, class, n)
DIM cnt = 0
FOR i = 0 TO GETALLWIN() - 1
DIM ID = ALL_WIN_ID[i]
DIM targetTitle = STATUS(ID, ST_TITLE)
DIM targetClass = STATUS(ID, ST_CLASS)
IFB POS(title, targetTitle) <> 0 AND POS(class, targetClass) <> 0 THEN
cnt = cnt + 1
IFB cnt = n THEN
RESULT = ID
EXIT
ENDIF
ENDIF
NEXT
IF n = 0 THEN RESULT = cnt
FEND

FOR i = 1 TO ("ゲーム名", "Chrome_RenderWidgetHostHWND", 0)
mouseorg(i, 2, MORG_BACK)
BTN(LEFT, CLICK, 319, 474)
NEXT
159デフォルトの名無しさん
垢版 |
2022/08/09(火) 20:42:54.77ID:WTH4cAqy
For i = 1 to 100

BTN(LEFT,CLICK,x1,y1,0)
sleep(5)
BTN(LEFT,CLICK,x2,y2,0)
sleep(5)
BTN(LEFT,CLICK,x3,y3,0)
sleep(5)
BTN(LEFT,CLICK,x4,y4,0)
sleep(5)

next

これを実行中に画像Aが表示されたらそれをクリックして再開するにはどうすればいいですか。
2022/08/10(水) 21:46:14.83ID:zuCuX6KX
>>159
画像があればクリックするという関数をつくって
それをBTN()とBTN()の間で呼ぶようにすればいい

THREAD()を使ったりするとクリックの競合が
発生しないように制御しなければならなくなるので
こちらのほうが素直
2022/08/11(木) 13:41:16.86ID:UtolBXHt
For i = 1 to 100

BTN(LEFT,CLICK,x1,y1,0)
sleep(5)
BTN(LEFT,CLICK,x2,y2,0)
sleep(5)
BTN(LEFT,CLICK,x3,y3,0)
sleep(5)
BTN(LEFT,CLICK,x4,y4,0)
sleep(5)

IFB CHKIMG("画像A.bmp");BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,0);ENDIF

next
162デフォルトの名無しさん
垢版 |
2022/08/12(金) 14:38:28.84ID:m6+pfbJk
>>160
BTN()が100以上など数が多い場合も間で呼ぶしかないのでしょうか。

>>
161
4回クリックした後に画像検索をするのではなく、1クリックごとに画像検索できるようにしたいです。

返信ありがとうございました。自分でも調べてみます。何かわかれば教えてください。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況