UWSC初心者用スレです
わかってる人はこっち
自動化ツールUWSC使いよ集まれ21
http://egg.5ch.net/test/read.cgi/software/1533818531/
降臨される神々においては相手を人と思わず猿と思し召されるよう
何卒お願い申し上げます
UWSC初心者用スレ
■ このスレッドは過去ログ倉庫に格納されています
2018/09/24(月) 12:13:49.92ID:an35jPjo
201デフォルトの名無しさん
2019/01/24(木) 13:58:09.20ID:Vpq0nFz5 マウスを取られずにドラッグ&ドロップの動作を行いたいのですがうまく動作しません。
現状はウィンドウIDを取得して
mouseorg(id,2)
btn(left,down,x1,y1)
mmv(x2,y2)
btn(left,up,x3,y3)
としています。left,downまではできているようなのですがおそらくmmvが動作していない感じがします。
mouseorg(id,0)の場合はちゃんと動作するので原因が分からず困っております。
たかがドラッグ&ドロップ程度のことができないなんてことはないと思うのですがどなたか分かる方いらっしゃいませんでしょうか?
現状はウィンドウIDを取得して
mouseorg(id,2)
btn(left,down,x1,y1)
mmv(x2,y2)
btn(left,up,x3,y3)
としています。left,downまではできているようなのですがおそらくmmvが動作していない感じがします。
mouseorg(id,0)の場合はちゃんと動作するので原因が分からず困っております。
たかがドラッグ&ドロップ程度のことができないなんてことはないと思うのですがどなたか分かる方いらっしゃいませんでしょうか?
202デフォルトの名無しさん
2019/01/24(木) 14:25:47.31ID:AXBwS8sa >>201
ちょっとでもググって調べたらわかる事だけど、そのコードだけでは動作が早すぎる
ちょっとでもググって調べたらわかる事だけど、そのコードだけでは動作が早すぎる
203デフォルトの名無しさん
2019/01/25(金) 03:55:18.58ID:djc20dkg まずmmv挟む必要あるのかってのと遅延入れないとアプリ側で処理が追いつかない場合が多い
204デフォルトの名無しさん
2019/01/28(月) 03:10:09.68ID:a09O8V2t 六ヶ所あるポイントをランダムで五ヶ所クリックさせたいのですが、良い方法を教えてください。
ポイント1 x座標100 y座標185
ポイント2 x座標258y座標296
ポイント3x座標315y座標580
以下略
今書こうとしてるのが
for i = 0 to 4
BTN(LEFT,CLICK,ここをランダムなポイントにしたい)
next
アドバイスよろしくお願いします。
ポイント1 x座標100 y座標185
ポイント2 x座標258y座標296
ポイント3x座標315y座標580
以下略
今書こうとしてるのが
for i = 0 to 4
BTN(LEFT,CLICK,ここをランダムなポイントにしたい)
next
アドバイスよろしくお願いします。
205デフォルトの名無しさん
2019/01/28(月) 08:20:03.77ID:kcLCmioN >>204
配列とrandom
配列とrandom
206デフォルトの名無しさん
2019/01/28(月) 13:16:10.93ID:M4hiQU5j randomで分岐してBTNのほうが
可読性が高くて俺は好き
可読性が高くて俺は好き
207デフォルトの名無しさん
2019/01/28(月) 13:47:58.51ID:yROeBYe4 分岐は座標設定だけにしてBTNは1行にしようよ
208デフォルトの名無しさん
2019/01/28(月) 14:46:35.06ID:Cl/r/hmy クリックしないポイントん乱数できめる
209デフォルトの名無しさん
2019/01/28(月) 21:36:38.76ID:3+HKzeym アドバイスって言うかお前ら暇なんだろ俺のためにはよ作れ
210デフォルトの名無しさん
2019/01/28(月) 23:59:09.72ID:UNSPa4Eu 何を作ればいいですか?
211デフォルトの名無しさん
2019/01/29(火) 02:43:56.37ID:IO64zMNw >>202
201です。書き忘れていて申し訳ありませんがsleepはいろいろ数値を変えて各動作に0~2秒程度余裕を持たせて試しています。
mmvも必要ないかもと思い抜いてみたりしましたが結果は変わりません。
そもそも裏動作でドラッグ&ドロップは可能なのでしょうか?
可か不可だけでも教えていただけると嬉しいです。
201です。書き忘れていて申し訳ありませんがsleepはいろいろ数値を変えて各動作に0~2秒程度余裕を持たせて試しています。
mmvも必要ないかもと思い抜いてみたりしましたが結果は変わりません。
そもそも裏動作でドラッグ&ドロップは可能なのでしょうか?
可か不可だけでも教えていただけると嬉しいです。
212デフォルトの名無しさん
2019/01/29(火) 02:51:47.66ID:LOO3gYN5213デフォルトの名無しさん
2019/02/17(日) 20:05:21.25ID:z/uMXN8p CHKIMGXで画像の色を判定したいんですけどできますか?
例えば、元の画像が灰色だったらfalseが返ってくるようにしたいです。
例えば、元の画像が灰色だったらfalseが返ってくるようにしたいです。
214デフォルトの名無しさん
2019/02/17(日) 21:23:07.92ID:QHQeXIGO !chkimgx(gray.bmp)
色を取得したいという話ならpeekcolor
ただし座標の指定になる
色を取得したいという話ならpeekcolor
ただし座標の指定になる
215デフォルトの名無しさん
2019/02/17(日) 22:00:13.55ID:z/uMXN8p >>214
CHKIMGX(temp.bmp)の画像の色が同じじゃないときに処理通っちゃうんですけどそれは仕様ですか?
CHKIMGX(temp.bmp)の画像の色が同じじゃないときに処理通っちゃうんですけどそれは仕様ですか?
216デフォルトの名無しさん
2019/02/17(日) 22:08:55.58ID:QHQeXIGO217デフォルトの名無しさん
2019/02/18(月) 07:07:31.39ID:JSWq4P0e >>215
そういう機能が既にある
CHKIMGX( 画像名, [ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色] )
着目する色: 指定した色とどれだけ近いかでグレースケール化した画像を使ってマッチングの計算を行う。文字の色などを指定することで背景の変化に強いマッチング判定を行うことが可能
着目する色の引数に認識したいカラーコードを入れればOK。「色 判定 アプリ」とかで検索すれば認識したい画像からカラーコード生成できるサイトは引っ掛かる。
これで色違いでの誤動作はだいたい弾いてくれるよ
そういう機能が既にある
CHKIMGX( 画像名, [ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色] )
着目する色: 指定した色とどれだけ近いかでグレースケール化した画像を使ってマッチングの計算を行う。文字の色などを指定することで背景の変化に強いマッチング判定を行うことが可能
着目する色の引数に認識したいカラーコードを入れればOK。「色 判定 アプリ」とかで検索すれば認識したい画像からカラーコード生成できるサイトは引っ掛かる。
これで色違いでの誤動作はだいたい弾いてくれるよ
218デフォルトの名無しさん
2019/02/18(月) 11:57:12.20ID:B+vGb4gg 色の差(閾値)を考慮する機能、いつ頃実装されたのか個人的に興味ある
15年前には無かったような気がするんだが
15年前には無かったような気がするんだが
219デフォルトの名無しさん
2019/02/18(月) 21:39:57.37ID:2CdapbG+ >>216
イメージはこんな感じの処理を期待しています。
https://imgur.com/Ax1fWdO
CALL ChkImgX.uws
winid = getid("Main")
x1 = 0
y1 = 0
x2 = 1280
y2 = 720
Detect_num = 1
Threshold_delta = 5
Target_color = -1
startup_chkimgx()
ifb CHKIMGX("pic/select.png" , winid , x1 , y1 , x2 , y2 , Detect_num , Threshold_delta , Target_color)
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + G_IMGX_X + " " + G_IMGX_Y
DOSCMD(CMD)
endif
shutdown_chkimgx()
イメージはこんな感じの処理を期待しています。
https://imgur.com/Ax1fWdO
CALL ChkImgX.uws
winid = getid("Main")
x1 = 0
y1 = 0
x2 = 1280
y2 = 720
Detect_num = 1
Threshold_delta = 5
Target_color = -1
startup_chkimgx()
ifb CHKIMGX("pic/select.png" , winid , x1 , y1 , x2 , y2 , Detect_num , Threshold_delta , Target_color)
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + G_IMGX_X + " " + G_IMGX_Y
DOSCMD(CMD)
endif
shutdown_chkimgx()
220デフォルトの名無しさん
2019/02/18(月) 22:39:55.29ID:nrhNd94Q221デフォルトの名無しさん
2019/02/18(月) 23:02:29.08ID:CU6zYEEj ChkImgXは画像モノクロに加工して走査するからグレーボタンなんて閾値しだいかも
これなら完全一致でChkImgのほうが良かったりして
その際元画像はもう一回り青色範囲内にして背景含めない必要かな
これなら完全一致でChkImgのほうが良かったりして
その際元画像はもう一回り青色範囲内にして背景含めない必要かな
222デフォルトの名無しさん
2019/02/19(火) 01:41:50.90ID:Wcea5l1h223デフォルトの名無しさん
2019/02/19(火) 20:27:55.49ID:/Cx1K2A5224デフォルトの名無しさん
2019/03/09(土) 00:57:44.21ID:yFQrIlgr すみません別のUWSCスレにも書いたんですが
クリックがうまくされず、待機時間など入れてみましたが失敗することが多く、
どのタイミングでクリックしてるのか見るためにBTN(LEFT,CLICK,)の前に print "クリックします"
という処理を入れたらなぜか確実にクリックされるようになったのですが、何が原因なのでしょうか?
クリックがうまくされず、待機時間など入れてみましたが失敗することが多く、
どのタイミングでクリックしてるのか見るためにBTN(LEFT,CLICK,)の前に print "クリックします"
という処理を入れたらなぜか確実にクリックされるようになったのですが、何が原因なのでしょうか?
225デフォルトの名無しさん
2019/03/09(土) 17:08:59.22ID:kABtCqRT メッセージループやフォーカス問題かな
アイドル状態になるまでメッセージループ回しつつ待機する処理を置く
アイドル状態になるまでメッセージループ回しつつ待機する処理を置く
226デフォルトの名無しさん
2019/03/09(土) 17:20:18.72ID:qrlmwqjK いや単に実行速度が早すぎるだけでしょ
sleep入れるかbtnの引数見て待ち時間入れればいい
sleep入れるかbtnの引数見て待ち時間入れればいい
227デフォルトの名無しさん
2019/03/09(土) 17:22:38.46ID:pzt1chqt >>224
btn失敗するときはたいていウィンドウが非アクティブになってて1クリック目が受け付けられてないことが多いからウィンドウのアクティブ化を書いてあげると確実になる
btn失敗するときはたいていウィンドウが非アクティブになってて1クリック目が受け付けられてないことが多いからウィンドウのアクティブ化を書いてあげると確実になる
228デフォルトの名無しさん
2019/03/09(土) 17:56:05.87ID:yFQrIlgr ありがとうございます。
とりあえず使えてはいますが毎回 ”クリックします” が表示されるので困ってます。
BTN(LEFT,CLICK,,,100)では失敗が多く、sleep(5)では機能しますが遅すぎるので、
print "クリックします"を仕方なく使っています
失敗するのはランダムなのでウィンドウはアクティブになっていると思うのですが。
とりあえず使えてはいますが毎回 ”クリックします” が表示されるので困ってます。
BTN(LEFT,CLICK,,,100)では失敗が多く、sleep(5)では機能しますが遅すぎるので、
print "クリックします"を仕方なく使っています
失敗するのはランダムなのでウィンドウはアクティブになっていると思うのですが。
229デフォルトの名無しさん
2019/03/09(土) 18:00:11.83ID:yFQrIlgr クリックが長押しになっているのが原因のような気がしています
画面がドラッグされてしまうことが多いので
画面がドラッグされてしまうことが多いので
230デフォルトの名無しさん
2019/03/09(土) 21:35:40.19ID:qrlmwqjK >>229
よく分からないので再現できる程度のコード貼ってくれないか?
アプリ隠したいならペイントでも電卓でも適当なものでいいからさ
もしそれらで再現しないなら操作したいアプリ側の仕様もあるかもしれないし、切り分けの一助にはなるだろう
よく分からないので再現できる程度のコード貼ってくれないか?
アプリ隠したいならペイントでも電卓でも適当なものでいいからさ
もしそれらで再現しないなら操作したいアプリ側の仕様もあるかもしれないし、切り分けの一助にはなるだろう
231デフォルトの名無しさん
2019/04/02(火) 13:20:23.00ID:VFSC/5Or INIファイルで16進表記はできないでしょうか?
UWSC INI 16進 で調べてみたけど見つかりませんでした
わかる方いたら教えてください
因みに$FFでは駄目でした
UWSC INI 16進 で調べてみたけど見つかりませんでした
わかる方いたら教えてください
因みに$FFでは駄目でした
232デフォルトの名無しさん
2019/04/02(火) 13:43:08.63ID:jgYgVP75233デフォルトの名無しさん
2019/04/02(火) 19:46:22.94ID:Vs75GbqA EVAL
234デフォルトの名無しさん
2019/04/08(月) 02:47:11.35ID:YAySA4WV DIM writetval = $0000FFFF
WRITEINI( "section", "hex", num_to_hexstr(writetval,8))
DIM readeval = hexstr_to_num(READINI( "section", "hex"))
MSGBOX(num_to_hexstr(readeval,8))
FUNCTION num_to_hexstr(num, iwidth)
RESULT = "$"+REPLACE(FORMAT(num, iwidth,-1)," ","0")
FEND
FUNCTION hexstr_to_num(strhex)
RESULT = EVAL(strhex)
FEND
WRITEINI( "section", "hex", num_to_hexstr(writetval,8))
DIM readeval = hexstr_to_num(READINI( "section", "hex"))
MSGBOX(num_to_hexstr(readeval,8))
FUNCTION num_to_hexstr(num, iwidth)
RESULT = "$"+REPLACE(FORMAT(num, iwidth,-1)," ","0")
FEND
FUNCTION hexstr_to_num(strhex)
RESULT = EVAL(strhex)
FEND
235デフォルトの名無しさん
2019/04/08(月) 12:52:33.87ID:C44A9NNj 得られる結果は同じだが
EVAL より VAL のほうが素直だったな
EVAL より VAL のほうが素直だったな
236デフォルトの名無しさん
2019/04/09(火) 23:02:37.42ID:hVRP1zbV UWSCでIBM大型計算機エミュレーターの制御はできるのだろうか?
録画機能を使ってもうまく録画してくれない
録画機能を使ってもうまく録画してくれない
237デフォルトの名無しさん
2019/04/09(火) 23:56:12.98ID:elRErDJW TSO(TSS)かね? P-COMとかFalconとかソフト名含めてググれば(UWSCじゃなくてVBSとかで)多少事例は出てくるだろう
てかそもそもエミュレータにマクロ機能ついてて外部ソフトで操作する必要はないと思うんだけど
てかそもそもエミュレータにマクロ機能ついてて外部ソフトで操作する必要はないと思うんだけど
238デフォルトの名無しさん
2019/04/10(水) 04:23:21.00ID:P1NdIghv 汎用機のエミュレータなんてあるのかよ
知らんかった
知らんかった
239デフォルトの名無しさん
2019/04/10(水) 08:14:42.95ID:m7iPF43E >>238
いや汎用機のエミュレータって例外的にコンソール端末のエミュレータを指すんだよ
いや汎用機のエミュレータって例外的にコンソール端末のエミュレータを指すんだよ
240デフォルトの名無しさん
2019/04/10(水) 09:15:41.71ID:84IJZde6 PCで他のマシンのエミュレータなどという言葉が認知されるよりずっと前から汎用機の端末エミュレータの方が知られていたわけだが。
241デフォルトの名無しさん
2019/04/10(水) 19:59:20.55ID:C73Jm2jh242デフォルトの名無しさん
2019/04/10(水) 20:44:34.98ID:frbWEK8l FTPやっていいか管理者に相談してみれば?
必要なデータ変換方法もこみで
必要なデータ変換方法もこみで
243デフォルトの名無しさん
2019/04/10(水) 23:22:57.82ID:m7iPF43E >>241
ISPFで入力フォームがあって転記するのを自動化したいというお話し?
そんなことするよりCSVか固定長に直してエミュレータのファイル転送機能かFTPでデータセットにしちゃった方がいいと思うけど
まぁとにかくUWSCは全く適してないので、悪いこと言わんからさっさと有識者捕まえて教えてもらいな
ISPFで入力フォームがあって転記するのを自動化したいというお話し?
そんなことするよりCSVか固定長に直してエミュレータのファイル転送機能かFTPでデータセットにしちゃった方がいいと思うけど
まぁとにかくUWSCは全く適してないので、悪いこと言わんからさっさと有識者捕まえて教えてもらいな
244デフォルトの名無しさん
2019/04/15(月) 13:11:00.13ID:R0+d+gEp https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a
ここを参考に、NOXで裏マクロ化したいのですが動作しません
IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
BTN(LEFT, CLICK, G_IMGX_X+300, G_IMGX_Y+200)
ENDIF
これで動作するマクロを裏マクロ化したいので、上記HPを参考に以下の記述にしてみましたが動作しません
NOXの保存先はデフォルトです
IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + (G_IMGX_X+300) + " " + (G_IMGX_Y+200)
PRINT CMD
DOSCMD(CMD)
ENDIF
PRINTで表示されるテキストには、以下のように記載されています
cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 440 300
コマンドプロンプトで直接入力すると以下のように返ってきます
error: no devices/emulators found
ここを参考に、NOXで裏マクロ化したいのですが動作しません
IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
BTN(LEFT, CLICK, G_IMGX_X+300, G_IMGX_Y+200)
ENDIF
これで動作するマクロを裏マクロ化したいので、上記HPを参考に以下の記述にしてみましたが動作しません
NOXの保存先はデフォルトです
IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + (G_IMGX_X+300) + " " + (G_IMGX_Y+200)
PRINT CMD
DOSCMD(CMD)
ENDIF
PRINTで表示されるテキストには、以下のように記載されています
cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 440 300
コマンドプロンプトで直接入力すると以下のように返ってきます
error: no devices/emulators found
245デフォルトの名無しさん
2019/04/15(月) 13:31:06.08ID:cJYPoSuP >>244
no devices/emulators found
エミュレーターが接続されていませんよと出てるので今立ち上げているエミュがadbに接続されているか確認
複数立ち上げているならマクロを回したいエミュを指定する必要がある
no devices/emulators foundまで表示されているということはnox_adbまではコマンドが通っているはずだからその先を見直す
no devices/emulators found
エミュレーターが接続されていませんよと出てるので今立ち上げているエミュがadbに接続されているか確認
複数立ち上げているならマクロを回したいエミュを指定する必要がある
no devices/emulators foundまで表示されているということはnox_adbまではコマンドが通っているはずだからその先を見直す
246デフォルトの名無しさん
2019/04/16(火) 16:11:07.01ID:OH4xxM/G エンコードの自動化をしたいのですが、エンコードソフトにファイルを渡した時、
たまにエラーが出るのですがそれを回避したいです。
エラー時はコマンドウインドウが出るので "いいえ"を選択すれば回避できます。
if ID = -1 でエラーウインドウが出なかった場合は行けるのですが
エラーウインドウが出た場合の指定ってできるのですか?
一応下のコマンドで作ってみたのですが、動くには動くのですがエラーが出なかった場合10秒ほど
止まってしまい、その後動き始めます。
うまく動かすにはどうすればいいのでしょうか
質問id=GetID("質問","Qt5QWindowIcon")
IF 質問id = -1
ELSE
clkitem(質問id,"いいえ",CLK_BTN)
endif
たまにエラーが出るのですがそれを回避したいです。
エラー時はコマンドウインドウが出るので "いいえ"を選択すれば回避できます。
if ID = -1 でエラーウインドウが出なかった場合は行けるのですが
エラーウインドウが出た場合の指定ってできるのですか?
一応下のコマンドで作ってみたのですが、動くには動くのですがエラーが出なかった場合10秒ほど
止まってしまい、その後動き始めます。
うまく動かすにはどうすればいいのでしょうか
質問id=GetID("質問","Qt5QWindowIcon")
IF 質問id = -1
ELSE
clkitem(質問id,"いいえ",CLK_BTN)
endif
247デフォルトの名無しさん
2019/04/16(火) 16:18:38.91ID:8xPkTgw7 >>246
ヘルプより
戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
待ち時間秒: 確認できるまで指定された秒数待ちます (0.01〜)
0: 0.1〜10秒まで状況や負荷により自動判断 (デフォルト)
-1: 無期限待ち
ヘルプより
戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
待ち時間秒: 確認できるまで指定された秒数待ちます (0.01〜)
0: 0.1〜10秒まで状況や負荷により自動判断 (デフォルト)
-1: 無期限待ち
248246
2019/04/16(火) 16:52:24.80ID:OH4xxM/G249デフォルトの名無しさん
2019/04/24(水) 22:39:44.25ID:HpurvKDn 私も>>244と同じサイト見て裏マクロを実行しようとしているのですがうまくいきません
認識した位置でSAVEIMGを使って確認すると、認識している位置はあっていましたが、
ペイントソフトを入れてどこをタップしてるのか見ると認識したところからずれているのが分かりました
縮尺がずれているような感じなのですがなぜそうなったのかがわかりません
認識した位置でSAVEIMGを使って確認すると、認識している位置はあっていましたが、
ペイントソフトを入れてどこをタップしてるのか見ると認識したところからずれているのが分かりました
縮尺がずれているような感じなのですがなぜそうなったのかがわかりません
250デフォルトの名無しさん
2019/04/24(水) 23:08:04.34ID:HpurvKDn 手探りで調節すると
x方向に1.8倍、y方向に1.9倍ぐらいすれば近いようになるのですがよくわかりません…
x方向に1.8倍、y方向に1.9倍ぐらいすれば近いようになるのですがよくわかりません…
251デフォルトの名無しさん
2019/04/25(木) 00:53:43.08ID:/PrCm3A4 >>249-250
Noxでやってるって話ならウインドウ縮小してるのでは?
当然ながらデスクトップの解像度よりNoxは小さいサイズで縮尺100%の状態で座標判定する必要がある
(設定からウインドウサイズの復元でサイズ100%になる)
注意点は縦画面のアプリ、横のサイズが縦になるから入らなくなるので自動で縮小される
Noxでやってるって話ならウインドウ縮小してるのでは?
当然ながらデスクトップの解像度よりNoxは小さいサイズで縮尺100%の状態で座標判定する必要がある
(設定からウインドウサイズの復元でサイズ100%になる)
注意点は縦画面のアプリ、横のサイズが縦になるから入らなくなるので自動で縮小される
252デフォルトの名無しさん
2019/04/25(木) 01:18:48.74ID:nkG7yKYZ Yだけズレてるなら画面枠だろ
マクロ解説のqiitaの最後の方に書いてる
マクロ解説のqiitaの最後の方に書いてる
253デフォルトの名無しさん
2019/04/25(木) 14:40:58.77ID:nqSsKFf7254デフォルトの名無しさん
2019/05/07(火) 19:34:12.96ID:tBIfA+Hb 音が止まったら(無音状態になったら)クリックする というマクロを作りたいのですが音が出ているか出ていないかを検知する関数はないのでしょうか?
255デフォルトの名無しさん
2019/05/07(火) 21:18:38.19ID:uIMNwWvX256デフォルトの名無しさん
2019/05/07(火) 23:25:46.31ID:L8iv3v8M257デフォルトの名無しさん
2019/05/07(火) 23:33:02.29ID:tBIfA+Hb258デフォルトの名無しさん
2019/05/07(火) 23:42:30.40ID:uIMNwWvX259デフォルトの名無しさん
2019/05/08(水) 20:51:34.11ID:bLQQQcYM 高速リアルタイム スペクトラムアナライザー WaveSpectra
http://efu.jp.net/soft/ws/ws.html
WS151.ZIP
とかで上の波形が直線になることを画像認識するのがお手軽と思う
Core Audio Interfaces
https://docs.microsoft.com/en-us/windows/desktop/coreaudio/core-audio-interfaces
IAudioPeakMeter interface
https://docs.microsoft.com/en-us/windows/desktop/api/Devicetopology/nn-devicetopology-iaudiopeakmeter
IAudioPeakMeter interface
https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nn-endpointvolume-iaudiometerinformation
For a code example that uses the IAudioMeterInformation interface, see Peak Meters
https://docs.microsoft.com/ja-jp/windows/desktop/CoreAudio/peak-meters
hr = pMeterInfo->GetPeakValue(&peak);
IAudioMeterInformation::GetPeakValue method
https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nf-endpointvolume-iaudiometerinformation-getpeakvalue
↓これはPowershellでの例
.net – ウィンドウが現在サウンドを再生しているかどうかを調べる
https://codeday.me/jp/qa/20190319/438303.html
http://efu.jp.net/soft/ws/ws.html
WS151.ZIP
とかで上の波形が直線になることを画像認識するのがお手軽と思う
Core Audio Interfaces
https://docs.microsoft.com/en-us/windows/desktop/coreaudio/core-audio-interfaces
IAudioPeakMeter interface
https://docs.microsoft.com/en-us/windows/desktop/api/Devicetopology/nn-devicetopology-iaudiopeakmeter
IAudioPeakMeter interface
https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nn-endpointvolume-iaudiometerinformation
For a code example that uses the IAudioMeterInformation interface, see Peak Meters
https://docs.microsoft.com/ja-jp/windows/desktop/CoreAudio/peak-meters
hr = pMeterInfo->GetPeakValue(&peak);
IAudioMeterInformation::GetPeakValue method
https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nf-endpointvolume-iaudiometerinformation-getpeakvalue
↓これはPowershellでの例
.net – ウィンドウが現在サウンドを再生しているかどうかを調べる
https://codeday.me/jp/qa/20190319/438303.html
260デフォルトの名無しさん
2019/05/09(木) 20:25:45.26ID:Tv5gs4em >>259
試してみたけど
これそのまんますんなり使えるな
https://codeday.me/jp/qa/20190319/438303.html
Add-Type -TypeDefinition @'
から
'@
までの後ろに
[Foo.Bar]::IsWindowsPlayingSound()
を付け足して
IsWindowsPlayingSound.ps1で保存
DIM playng = POWERSHELL("C:\TEST\IsWindowsPlayingSound.ps1")
で音が出てればTrue、出ていなければFalseが返るようになる
今までPOWERSHELLスクリプトを実行したことがなれれば
実行できないとエラーがでるので管理者権限でポリシーの設定が必要
UWSCでpowershell()関数使ったらエラー出た問題
https://stuncloud.wordpress.com/2014/07/10/uwsc_powershell_func_had_error/
もしくはPOWERSHELL()でなくDOSCMD()を使って
DIM playng = DOSCMD("powershell -ExecutionPolicy RemoteSigned -File C:\TEST\IsWindowsPlayingSound.ps1")
試してみたけど
これそのまんますんなり使えるな
https://codeday.me/jp/qa/20190319/438303.html
Add-Type -TypeDefinition @'
から
'@
までの後ろに
[Foo.Bar]::IsWindowsPlayingSound()
を付け足して
IsWindowsPlayingSound.ps1で保存
DIM playng = POWERSHELL("C:\TEST\IsWindowsPlayingSound.ps1")
で音が出てればTrue、出ていなければFalseが返るようになる
今までPOWERSHELLスクリプトを実行したことがなれれば
実行できないとエラーがでるので管理者権限でポリシーの設定が必要
UWSCでpowershell()関数使ったらエラー出た問題
https://stuncloud.wordpress.com/2014/07/10/uwsc_powershell_func_had_error/
もしくはPOWERSHELL()でなくDOSCMD()を使って
DIM playng = DOSCMD("powershell -ExecutionPolicy RemoteSigned -File C:\TEST\IsWindowsPlayingSound.ps1")
261デフォルトの名無しさん
2019/05/09(木) 20:32:53.56ID:Tv5gs4em 数値として取りたい場合は
public static bool IsWindowsPlayingSound()
を
public static float GetWindowsPlayingSoundLevel()
にして
return value > 1E-08;
を
return value;
[Foo.Bar]::IsWindowsPlayingSound()
を
[Foo.Bar]::GetWindowsPlayingSoundLevel()
にすれば
数値としてとれるようになる
public static bool IsWindowsPlayingSound()
を
public static float GetWindowsPlayingSoundLevel()
にして
return value > 1E-08;
を
return value;
[Foo.Bar]::IsWindowsPlayingSound()
を
[Foo.Bar]::GetWindowsPlayingSoundLevel()
にすれば
数値としてとれるようになる
262デフォルトの名無しさん
2019/05/09(木) 22:09:26.74ID:vpcETFXO いやいや、何でPowerShell経由にするのよ?
UWSCに移植できないの?
UWSCに移植できないの?
263デフォルトの名無しさん
2019/05/09(木) 22:23:47.98ID:QmBofejm ???
264デフォルトの名無しさん
2019/05/11(土) 14:40:46.22ID:DJ2xDk2H この内容ならC#でexe化した方が良いよ
265デフォルトの名無しさん
2019/05/14(火) 08:05:11.43ID:sv+72Rh7 >>244 のサイトのサンプルコード(完成形)を、画面サイズと画像ファイル名だけ変更して
実行してみたのですが、
jobexp.bmpを発見しました。
cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183
とテキストだけが繰り返されて、画面がタップされません。
パスをコマンドプロンプトから実行すると、画像認識した座標がタップされるのですが・・・。
どこを見直したら良いでしょうか?
実行してみたのですが、
jobexp.bmpを発見しました。
cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183
とテキストだけが繰り返されて、画面がタップされません。
パスをコマンドプロンプトから実行すると、画像認識した座標がタップされるのですが・・・。
どこを見直したら良いでしょうか?
266デフォルトの名無しさん
2019/05/14(火) 12:37:31.12ID:1misB5a+267デフォルトの名無しさん
2019/05/14(火) 14:48:00.89ID:sv+72Rh7 >>266
ドライブは跨いでいないと思います。デフォルトのCドライブにインストールしてあり、
パスも確認しました。
試しに、
DOSCMD("cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183")
コレだけUWSに書いて実行しましたが、やはりタップされません。
コマンドプロンプトからだとタップされます。何でだろう。
ドライブは跨いでいないと思います。デフォルトのCドライブにインストールしてあり、
パスも確認しました。
試しに、
DOSCMD("cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183")
コレだけUWSに書いて実行しましたが、やはりタップされません。
コマンドプロンプトからだとタップされます。何でだろう。
268デフォルトの名無しさん
2019/05/14(火) 17:45:58.53ID:0VcVEbfQ コマンドプロンプトで
cd C:\Program Files (x86)
はスペースが入っているからだめ
cd "C:\Program Files (x86)"
uwscでの"の書き方は<#DBL>なので注意
cd C:\Program Files (x86)
はスペースが入っているからだめ
cd "C:\Program Files (x86)"
uwscでの"の書き方は<#DBL>なので注意
269デフォルトの名無しさん
2019/05/14(火) 18:41:30.62ID:RRkLRWVV270デフォルトの名無しさん
2019/05/14(火) 19:44:15.43ID:yddlmgGB GETKEYSTATEの入力キャッチするタイミングがよく分からないです。
SLEEP(30)
IFB GETKEYSTATE(VK_A)
MSGBOX("Aが押されました")
ENDIF
て感じでSLEEP中にAキーを押下するとSLEEP後の判定でTRUEになる。
気持ち的にはIFBのタイミングで押下していないとFALSEになると思うんだけど。
そういう仕様なのか自分の環境によるのかどっちなんだろう。
SLEEP(30)
IFB GETKEYSTATE(VK_A)
MSGBOX("Aが押されました")
ENDIF
て感じでSLEEP中にAキーを押下するとSLEEP後の判定でTRUEになる。
気持ち的にはIFBのタイミングで押下していないとFALSEになると思うんだけど。
そういう仕様なのか自分の環境によるのかどっちなんだろう。
271デフォルトの名無しさん
2019/05/14(火) 20:35:55.94ID:sv+72Rh7272デフォルトの名無しさん
2019/05/14(火) 22:21:46.02ID:RRkLRWVV >>270
まあ仕様と言えば仕様
keystateという変数があり、キーボードを押下するとsetされるとイメージすればどうかな
getされるまでは他のキーが押されると書き換わり
getされるとクリアされる
というかそうでないとまさにコード実行のミリ秒タイミングでキーボード押さないと反応出来なくなっちゃうわけで
イベントハンドラーではないキー受け付けはこんな仕様になる
まあ仕様と言えば仕様
keystateという変数があり、キーボードを押下するとsetされるとイメージすればどうかな
getされるまでは他のキーが押されると書き換わり
getされるとクリアされる
というかそうでないとまさにコード実行のミリ秒タイミングでキーボード押さないと反応出来なくなっちゃうわけで
イベントハンドラーではないキー受け付けはこんな仕様になる
273デフォルトの名無しさん
2019/05/15(水) 01:04:26.89ID:NO6iccuH chkimgについてですが検索画像は大きいより小さい方が処理速いんでしょうか?
どういう検索方法なのかご存知の方居たらざっくりでいいので教えて貰えると嬉しいです
どういう検索方法なのかご存知の方居たらざっくりでいいので教えて貰えると嬉しいです
274デフォルトの名無しさん
2019/05/15(水) 07:49:23.40ID:l0E6gxGG275デフォルトの名無しさん
2019/05/15(水) 07:59:26.04ID:AZdJp4Mp >>273
イメージとしては解像度分の1ピクセルずつズラしながら単にビットマップ変数同士を比較してるだけ
なのでまず比較用の画像が小さくても大きくても最大試行回数は変わらない
例えば対象が解像度1920*1080のデスクトップ全体であればヒットしない場合の最大は約200万回ということ
(はみ出るところを省略してるかは知らない)
比較処理そのものはサイズで大いに影響があると言える
例えば100*100ピクセルの24ビットカラーであれば、3万byte、約30kbが完全一致するか比較が行われる
もちろん一回は1ミリ秒にすらならないがなんせ200万回もやれば馬鹿にならない
従って小さいほど速くなる
言うまでもなく検索画像より検索対象をデスクトップ全体ではなくウインドウ内に限定した方が遥かに速くなる
(可能なら範囲指定した方がさらに速い)
必ず見つかる状態なら試行回数以下で終わるからいいけど、出現待ちする場合なんかは毎回最大回数空回りさせるので遅くなる
イメージとしては解像度分の1ピクセルずつズラしながら単にビットマップ変数同士を比較してるだけ
なのでまず比較用の画像が小さくても大きくても最大試行回数は変わらない
例えば対象が解像度1920*1080のデスクトップ全体であればヒットしない場合の最大は約200万回ということ
(はみ出るところを省略してるかは知らない)
比較処理そのものはサイズで大いに影響があると言える
例えば100*100ピクセルの24ビットカラーであれば、3万byte、約30kbが完全一致するか比較が行われる
もちろん一回は1ミリ秒にすらならないがなんせ200万回もやれば馬鹿にならない
従って小さいほど速くなる
言うまでもなく検索画像より検索対象をデスクトップ全体ではなくウインドウ内に限定した方が遥かに速くなる
(可能なら範囲指定した方がさらに速い)
必ず見つかる状態なら試行回数以下で終わるからいいけど、出現待ちする場合なんかは毎回最大回数空回りさせるので遅くなる
276デフォルトの名無しさん
2019/05/15(水) 23:05:42.88ID:NO6iccuH277デフォルトの名無しさん
2019/05/16(木) 11:03:04.25ID:k6wqzKwn Chkimgにおいて24bmpで画像認識させたのですが認識してくれませんでした
4重の別々に撮ったクリックしたい箇所の画像認識、chkingx関数による曖昧認識、色幅を持たせるなどしても認識してくれません
また、一回は認識したものの同じクエストに入ったのに2回目は認識しないということもあります
これ以外の方法または自分の見落としなどはありますか?
4重の別々に撮ったクリックしたい箇所の画像認識、chkingx関数による曖昧認識、色幅を持たせるなどしても認識してくれません
また、一回は認識したものの同じクエストに入ったのに2回目は認識しないということもあります
これ以外の方法または自分の見落としなどはありますか?
278デフォルトの名無しさん
2019/05/16(木) 11:07:54.44ID:/xtfCvGN >>277
saveimgで保存して手を加えずchkimgしてもだめ?
saveimgで保存して手を加えずchkimgしてもだめ?
279デフォルトの名無しさん
2019/05/16(木) 11:13:35.45ID:k6wqzKwn >>278
ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼って
ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼って
280デフォルトの名無しさん
2019/05/16(木) 11:15:54.41ID:k6wqzKwn281デフォルトの名無しさん
2019/05/16(木) 11:34:15.95ID:/xtfCvGN >>280
x,y,幅,高さを指定してsaveimgすればいい
x,y,幅,高さを指定してsaveimgすればいい
282デフォルトの名無しさん
2019/05/16(木) 11:41:42.70ID:k6wqzKwn >>281
やってみます!
やってみます!
283デフォルトの名無しさん
2019/05/16(木) 19:48:50.75ID:zw/t/jBa >>281
この方法でも2回目以降が出来ませんでした、chkimgxとの併用は指定範囲が有効ではありません、スタックトレースの取得に失敗って感じでエラー出ます…こちらも良ければ教えてください
この方法でも2回目以降が出来ませんでした、chkimgxとの併用は指定範囲が有効ではありません、スタックトレースの取得に失敗って感じでエラー出ます…こちらも良ければ教えてください
284デフォルトの名無しさん
2019/05/16(木) 20:00:17.42ID:zw/t/jBa Chkimgxは色幅を持たせていたが故のエラーでした
285デフォルトの名無しさん
2019/05/17(金) 01:32:37.00ID:a8AA4Bsn スクリプトが悪い可能性は一切ないの?
そうでなければ画像の一部にエフェクトが掛っているか透過色があって完全一致しないとか
そうでなければ画像の一部にエフェクトが掛っているか透過色があって完全一致しないとか
286デフォルトの名無しさん
2019/05/18(土) 17:14:28.38ID:qzRA2hRY しまった
メイン側でプログラム作ってからVPCに持っていったら解像度違うせいか画像認識しないわ…
vmwだとWQHD無いのねめんどーくさー
メイン側でプログラム作ってからVPCに持っていったら解像度違うせいか画像認識しないわ…
vmwだとWQHD無いのねめんどーくさー
287デフォルトの名無しさん
2019/05/21(火) 10:26:46.97ID:UcoHXcCc Chkimgxって64bit版なんてないよね?
288デフォルトの名無しさん
2019/05/21(火) 12:08:21.57ID:DJoW+AAC もしあったとしてuwscと何の関係が?
289デフォルトの名無しさん
2019/05/21(火) 21:50:55.46ID:9ncm2Kmj ifb chkimg or chkimg or chkimg or のように横に長くor文を続けると見栄えが悪く、修正なども面倒なため、縦に綺麗に並べたいのですが改行するとエラー(or型があっていない)が出ます
ifb (~
~);
のようにカッコで括っても無理でした
綺麗にする方法はありますか?
ifb (~
~);
のようにカッコで括っても無理でした
綺麗にする方法はありますか?
290デフォルトの名無しさん
2019/05/21(火) 22:00:10.45ID:GOukkBG2 >>289
SELECT - SELEND使えばどうだろう
SELECT - SELEND使えばどうだろう
291デフォルトの名無しさん
2019/05/21(火) 22:01:42.81ID:pQ6gs7NX <行結合>
_ (アンダーバー) // 行の最後に付ける事により次の行と結合させます
_ (アンダーバー) // 行の最後に付ける事により次の行と結合させます
292デフォルトの名無しさん
2019/05/21(火) 22:11:23.08ID:9ncm2Kmj >>290
ありがとうございます!今回は行結合を使うことにしました、しかしselect文も場合分けする時に使えそうですし、自分の知らない関数だったので視野が広がりました
ありがとうございます!今回は行結合を使うことにしました、しかしselect文も場合分けする時に使えそうですし、自分の知らない関数だったので視野が広がりました
293デフォルトの名無しさん
2019/05/21(火) 22:12:47.36ID:9ncm2Kmj >>291
検索しても到底見つかることは無かったであろう答えをありがとうございます!おかげで綺麗なコードが書けます!
検索しても到底見つかることは無かったであろう答えをありがとうございます!おかげで綺麗なコードが書けます!
294デフォルトの名無しさん
2019/05/22(水) 01:45:18.21ID:t4YpuTXH >>289
一つのif/ifbに全部orで条件結合すると途中で見つかっても全部チェックするから条件増えるほどパフォーマンス悪くなるし
あり得るか知らないけど複数見つかった場合に座標の変数が書き換えられてしまうのでバグの温床にもなるから止めた方がいい
共通した処理を関数化するなりして以下のようにすればさほど可読性は悪くないと思う
ifb chkimg(A.bmp)
処理()
elseif chkimg(B.bmp)
処理()
elseif chkimg(C.bmp)
処理()
endif
あとSELECTはある特定の変数(関数の戻り値)の評価の列挙だから別の条件のchkimgには使えない
一つのif/ifbに全部orで条件結合すると途中で見つかっても全部チェックするから条件増えるほどパフォーマンス悪くなるし
あり得るか知らないけど複数見つかった場合に座標の変数が書き換えられてしまうのでバグの温床にもなるから止めた方がいい
共通した処理を関数化するなりして以下のようにすればさほど可読性は悪くないと思う
ifb chkimg(A.bmp)
処理()
elseif chkimg(B.bmp)
処理()
elseif chkimg(C.bmp)
処理()
endif
あとSELECTはある特定の変数(関数の戻り値)の評価の列挙だから別の条件のchkimgには使えない
295デフォルトの名無しさん
2019/05/22(水) 09:09:42.03ID:KgqzAKkh >>294
option shortcircuit を使えばいいだけでは?
option shortcircuit を使えばいいだけでは?
296デフォルトの名無しさん
2019/05/22(水) 12:47:18.70ID:t4YpuTXH297デフォルトの名無しさん
2019/05/22(水) 19:54:39.43ID:Q2YhfS/Q ifとifbって何が違うの?
>>294みたいにelseifと混ぜて大丈夫?
>>294みたいにelseifと混ぜて大丈夫?
298デフォルトの名無しさん
2019/05/22(水) 19:56:04.78ID:Q2YhfS/Q ごめんぐぐったら変な仕様なの理解した
299デフォルトの名無しさん
2019/05/23(木) 17:42:34.32ID:HnnhfQrk HASHTBL型の変数を簡単にコピーする方法はありませんか?
HASHTBL a = HASH_CASECARE
a["asd"] = 100
HASHTBL b = HASH_CASECARE
b = a
とするとシンタックスエラーになってしまいます。
FOR文で回す方法しかありませんか?
HASHTBL a = HASH_CASECARE
a["asd"] = 100
HASHTBL b = HASH_CASECARE
b = a
とするとシンタックスエラーになってしまいます。
FOR文で回す方法しかありませんか?
300デフォルトの名無しさん
2019/05/24(金) 01:28:29.43ID:k9T5g2vH //------------------------------------------------------
// HASHTBL のコピー
// dst: コピー先
// src: コピー元
// bCarryKey: 複製/変更
// CarryKey=FALSE(デフォルト)なら通常の複製となる
// bCarryKey=TRUEのとき
// dstにしか含まれていないキーとそれに関わる値を残す
//------------------------------------------------------
FUNCTION HASHTBL_COPY(var dst[],src[],bCarryKey=FALSE)
DIM size = LENGTH(src)
IFB FALSE=bCarryKey THEN
dst = HASH_REMOVEALL
ENDIF
DIM i
FOR i=0 TO size-1
dst[src[i,HASH_KEY]]=src[i,HASH_VAL]
NEXT
RESULT = LENGTH(dst)
FEND 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
// HASHTBL のコピー
// dst: コピー先
// src: コピー元
// bCarryKey: 複製/変更
// CarryKey=FALSE(デフォルト)なら通常の複製となる
// bCarryKey=TRUEのとき
// dstにしか含まれていないキーとそれに関わる値を残す
//------------------------------------------------------
FUNCTION HASHTBL_COPY(var dst[],src[],bCarryKey=FALSE)
DIM size = LENGTH(src)
IFB FALSE=bCarryKey THEN
dst = HASH_REMOVEALL
ENDIF
DIM i
FOR i=0 TO size-1
dst[src[i,HASH_KEY]]=src[i,HASH_VAL]
NEXT
RESULT = LENGTH(dst)
FEND 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
■ このスレッドは過去ログ倉庫に格納されています
