◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

UWSC初心者用スレ ->画像>9枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1537758829/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

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)の場合はちゃんと動作するので原因が分からず困っております。
たかがドラッグ&ドロップ程度のことができないなんてことはないと思うのですがどなたか分かる方いらっしゃいませんでしょうか?

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
アドバイスよろしくお願いします。

205デフォルトの名無しさん2019/01/28(月) 08:20:03.77ID:kcLCmioN
>>204
配列と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も必要ないかもと思い抜いてみたりしましたが結果は変わりません。
そもそも裏動作でドラッグ&ドロップは可能なのでしょうか?
可か不可だけでも教えていただけると嬉しいです。

212デフォルトの名無しさん2019/01/29(火) 02:51:47.66ID:LOO3gYN5
>>211
裏動作できるかどうかはそのアプリ次第
簡単な確認方法として裏動作させて
IDでSAVEIMGして正常にスクリーンショット取れればできる
取れなければできない

213デフォルトの名無しさん2019/02/17(日) 20:05:21.25ID:z/uMXN8p
CHKIMGXで画像の色を判定したいんですけどできますか?
例えば、元の画像が灰色だったらfalseが返ってくるようにしたいです。

214デフォルトの名無しさん2019/02/17(日) 21:23:07.92ID:QHQeXIGO
!chkimgx(gray.bmp)
色を取得したいという話ならpeekcolor
ただし座標の指定になる

215デフォルトの名無しさん2019/02/17(日) 22:00:13.55ID:z/uMXN8p
>>214
CHKIMGX(temp.bmp)の画像の色が同じじゃないときに処理通っちゃうんですけどそれは仕様ですか?

216デフォルトの名無しさん2019/02/17(日) 22:08:55.58ID:QHQeXIGO
>>215
説明がめんどくさいから
とりあえずchkimgxを含めた前後のコード貼ってくれ

217デフォルトの名無しさん2019/02/18(月) 07:07:31.39ID:JSWq4P0e
>>215
そういう機能が既にある

CHKIMGX( 画像名, [ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色] )
着目する色: 指定した色とどれだけ近いかでグレースケール化した画像を使ってマッチングの計算を行う。文字の色などを指定することで背景の変化に強いマッチング判定を行うことが可能

着目する色の引数に認識したいカラーコードを入れればOK。「色 判定 アプリ」とかで検索すれば認識したい画像からカラーコード生成できるサイトは引っ掛かる。
これで色違いでの誤動作はだいたい弾いてくれるよ

218デフォルトの名無しさん2019/02/18(月) 11:57:12.20ID:B+vGb4gg
色の差(閾値)を考慮する機能、いつ頃実装されたのか個人的に興味ある
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()

220デフォルトの名無しさん2019/02/18(月) 22:39:55.29ID:nrhNd94Q
>>219
スクリプトに問題はなさそう
閾値を調整しても駄目なんだよね?
あと対象の画像をsaveimgで保存した画像で検索したらどうなるか
着目する色を指定するまでもない画像だとおもうんだけど

221デフォルトの名無しさん2019/02/18(月) 23:02:29.08ID:CU6zYEEj
ChkImgXは画像モノクロに加工して走査するからグレーボタンなんて閾値しだいかも
これなら完全一致でChkImgのほうが良かったりして
その際元画像はもう一回り青色範囲内にして背景含めない必要かな

222デフォルトの名無しさん2019/02/19(火) 01:41:50.90ID:Wcea5l1h
>>219
chkimgxは指定した判定画像に「近い」ものを探している
かつ高速化の為に内部では判定画像も画面もグレースケール化して処理をしている
(綺麗なグレースケールでなくかなりざっくりしたもの)

なのでボタン背景色の違いはグレースケール化によって判別出来ない
あるいは、あえて背景の青を着目色として指定すると青色有無が判定画像に強調されるので判別できるかもしれない
ただしその場合、文字が消えてボタンの誤判定が発生すると思われる

というわけで、素直にchkimg使ったらという>>221に同意

223デフォルトの名無しさん2019/02/19(火) 20:27:55.49ID:/Cx1K2A5
>>220,221,222
ありがとうございます
参考にしてちょっとやってみます

224デフォルトの名無しさん2019/03/09(土) 00:57:44.21ID:yFQrIlgr
すみません別のUWSCスレにも書いたんですが
クリックがうまくされず、待機時間など入れてみましたが失敗することが多く、

どのタイミングでクリックしてるのか見るためにBTN(LEFT,CLICK,)の前に print "クリックします"
という処理を入れたらなぜか確実にクリックされるようになったのですが、何が原因なのでしょうか?

225デフォルトの名無しさん2019/03/09(土) 17:08:59.22ID:kABtCqRT
メッセージループやフォーカス問題かな
アイドル状態になるまでメッセージループ回しつつ待機する処理を置く

226デフォルトの名無しさん2019/03/09(土) 17:20:18.72ID:qrlmwqjK
いや単に実行速度が早すぎるだけでしょ
sleep入れるかbtnの引数見て待ち時間入れればいい

227デフォルトの名無しさん2019/03/09(土) 17:22:38.46ID:pzt1chqt
>>224
btn失敗するときはたいていウィンドウが非アクティブになってて1クリック目が受け付けられてないことが多いからウィンドウのアクティブ化を書いてあげると確実になる

228デフォルトの名無しさん2019/03/09(土) 17:56:05.87ID:yFQrIlgr
ありがとうございます。
とりあえず使えてはいますが毎回 ”クリックします” が表示されるので困ってます。

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では駄目でした

232デフォルトの名無しさん2019/04/02(火) 13:43:08.63ID:jgYgVP75
>>231
10進数じゃなければ文字列として扱われるので
その文字列を自力で変換するしかない

233デフォルトの名無しさん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

235デフォルトの名無しさん2019/04/08(月) 12:52:33.87ID:C44A9NNj
得られる結果は同じだが
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:C73Jm2jh
>>237

別業務システムからExcelに落としたデータを
大型計算機に入力していきたいニーズがあり、
ふさわしい手段としてUWSCを選択しました

242デフォルトの名無しさん2019/04/10(水) 20:44:34.98ID:frbWEK8l
FTPやっていいか管理者に相談してみれば?
必要なデータ変換方法もこみで

243デフォルトの名無しさん2019/04/10(水) 23:22:57.82ID:m7iPF43E
>>241
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

245デフォルトの名無しさん2019/04/15(月) 13:31:06.08ID:cJYPoSuP
>>244
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

247デフォルトの名無しさん2019/04/16(火) 16:18:38.91ID:8xPkTgw7
>>246
ヘルプより

戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] )
 待ち時間秒: 確認できるまで指定された秒数待ちます (0.01〜)
         0: 0.1〜10秒まで状況や負荷により自動判断 (デフォルト)
        -1: 無期限待ち

2482462019/04/16(火) 16:52:24.80ID:OH4xxM/G
>>247

質問id=GetID("質問","Qt5QWindowIcon",0.5,)

こうしたらサクッと動きました!
ありがとうございます。

249デフォルトの名無しさん2019/04/24(水) 22:39:44.25ID:HpurvKDn
私も>>244と同じサイト見て裏マクロを実行しようとしているのですがうまくいきません
認識した位置でSAVEIMGを使って確認すると、認識している位置はあっていましたが、
ペイントソフトを入れてどこをタップしてるのか見ると認識したところからずれているのが分かりました
縮尺がずれているような感じなのですがなぜそうなったのかがわかりません

250デフォルトの名無しさん2019/04/24(水) 23:08:04.34ID:HpurvKDn
手探りで調節すると
x方向に1.8倍、y方向に1.9倍ぐらいすれば近いようになるのですがよくわかりません…

251デフォルトの名無しさん2019/04/25(木) 00:53:43.08ID:/PrCm3A4
>>249-250
Noxでやってるって話ならウインドウ縮小してるのでは?
当然ながらデスクトップの解像度よりNoxは小さいサイズで縮尺100%の状態で座標判定する必要がある
(設定からウインドウサイズの復元でサイズ100%になる)
注意点は縦画面のアプリ、横のサイズが縦になるから入らなくなるので自動で縮小される

252デフォルトの名無しさん2019/04/25(木) 01:18:48.74ID:nkG7yKYZ
Yだけズレてるなら画面枠だろ
マクロ解説のqiitaの最後の方に書いてる

253デフォルトの名無しさん2019/04/25(木) 14:40:58.77ID:nqSsKFf7
>>251
>>252
解像度を携帯電話720×1280でやってましたが
PCの解像度が低くて自動的に縮小されてたんですね
カスタムで360×640のサイズにしたら狙った通りの場所をタップしてくれました
マクロ以前の話でしたね…
レス有難うございました

254デフォルトの名無しさん2019/05/07(火) 19:34:12.96ID:tBIfA+Hb
音が止まったら(無音状態になったら)クリックする というマクロを作りたいのですが音が出ているか出ていないかを検知する関数はないのでしょうか?

255デフォルトの名無しさん2019/05/07(火) 21:18:38.19ID:uIMNwWvX
>>254
そんな関数あるわけないじゃん

やり方はいくらか思いつくが
・サウンドドライバから出力レベルを取る
・常駐するレベルメーターを表示するソフトを使って画像認識する

256デフォルトの名無しさん2019/05/07(火) 23:25:46.31ID:L8iv3v8M
>>254
音って何?
マイクから拾う音?
PCが出してる音?

257デフォルトの名無しさん2019/05/07(火) 23:33:02.29ID:tBIfA+Hb
>>255
サウンドドライバから出力レベルを取る方法が知りたいです
教えてください

>>256
PCから出してる音

258デフォルトの名無しさん2019/05/07(火) 23:42:30.40ID:uIMNwWvX
>>257
具体的な方法は知らん
それこそレベルメーターのソースでも読んでくれよ

259デフォルトの名無しさん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

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")

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()
にすれば
数値としてとれるようになる

262デフォルトの名無しさん2019/05/09(木) 22:09:26.74ID:vpcETFXO
いやいや、何でPowerShell経由にするのよ?
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

とテキストだけが繰り返されて、画面がタップされません。
パスをコマンドプロンプトから実行すると、画像認識した座標がタップされるのですが・・・。
どこを見直したら良いでしょうか?

266デフォルトの名無しさん2019/05/14(火) 12:37:31.12ID:1misB5a+
>>265
noxのパスを確認
ドライブ跨ぐならそのコードでは通らない

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に書いて実行しましたが、やはりタップされません。
コマンドプロンプトからだとタップされます。何でだろう。

268デフォルトの名無しさん2019/05/14(火) 17:45:58.53ID:0VcVEbfQ
コマンドプロンプトで
cd C:\Program Files (x86)
はスペースが入っているからだめ
cd "C:\Program Files (x86)"

uwscでの"の書き方は<#DBL>なので注意

269デフォルトの名無しさん2019/05/14(火) 18:41:30.62ID:RRkLRWVV
>>267
その結果(doscmdの返り値)のメッセージを確認しよう
ちなみにドライブ跨ぎの指摘はnoxとuwscが同じドライブかという話し

270デフォルトの名無しさん2019/05/14(火) 19:44:15.43ID:yddlmgGB
GETKEYSTATEの入力キャッチするタイミングがよく分からないです。

SLEEP(30)
IFB GETKEYSTATE(VK_A)
MSGBOX("Aが押されました")
ENDIF

て感じでSLEEP中にAキーを押下するとSLEEP後の判定でTRUEになる。
気持ち的にはIFBのタイミングで押下していないとFALSEになると思うんだけど。
そういう仕様なのか自分の環境によるのかどっちなんだろう。

271デフォルトの名無しさん2019/05/14(火) 20:35:55.94ID:sv+72Rh7
>>269
PRINT DOSCMD(省略)
の出力内容で良いでしょうか?

'nox_adb' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

で、uwsc自体はDドライブに置いてありまして、これをCドライブへ移したら正常に動作しました。
ドライブ跨ぎってこういう意味だったんですね。
コマンドプロンプトは元々Cドライブなので動作していたと。

>>268
今回はコピペでしたが、自分で書く時は気をつけます。

助言頂いた方ありがとうございました。

272デフォルトの名無しさん2019/05/14(火) 22:21:46.02ID:RRkLRWVV
>>270
まあ仕様と言えば仕様
keystateという変数があり、キーボードを押下するとsetされるとイメージすればどうかな
getされるまでは他のキーが押されると書き換わり
getされるとクリアされる

というかそうでないとまさにコード実行のミリ秒タイミングでキーボード押さないと反応出来なくなっちゃうわけで
イベントハンドラーではないキー受け付けはこんな仕様になる

273デフォルトの名無しさん2019/05/15(水) 01:04:26.89ID:NO6iccuH
chkimgについてですが検索画像は大きいより小さい方が処理速いんでしょうか?
どういう検索方法なのかご存知の方居たらざっくりでいいので教えて貰えると嬉しいです

274デフォルトの名無しさん2019/05/15(水) 07:49:23.40ID:l0E6gxGG
>>272
なるほど、変数に格納するイメージなら分かりやすいです。
そういう仕様としてやってみます。
ありがとう!

275デフォルトの名無しさん2019/05/15(水) 07:59:26.04ID:AZdJp4Mp
>>273
イメージとしては解像度分の1ピクセルずつズラしながら単にビットマップ変数同士を比較してるだけ
なのでまず比較用の画像が小さくても大きくても最大試行回数は変わらない
例えば対象が解像度1920*1080のデスクトップ全体であればヒットしない場合の最大は約200万回ということ
(はみ出るところを省略してるかは知らない)

比較処理そのものはサイズで大いに影響があると言える
例えば100*100ピクセルの24ビットカラーであれば、3万byte、約30kbが完全一致するか比較が行われる
もちろん一回は1ミリ秒にすらならないがなんせ200万回もやれば馬鹿にならない
従って小さいほど速くなる

言うまでもなく検索画像より検索対象をデスクトップ全体ではなくウインドウ内に限定した方が遥かに速くなる
(可能なら範囲指定した方がさらに速い)
必ず見つかる状態なら試行回数以下で終わるからいいけど、出現待ちする場合なんかは毎回最大回数空回りさせるので遅くなる

276デフォルトの名無しさん2019/05/15(水) 23:05:42.88ID:NO6iccuH
>>275
理解出来ました
ありがとうございました

277デフォルトの名無しさん2019/05/16(木) 11:03:04.25ID:k6wqzKwn
Chkimgにおいて24bmpで画像認識させたのですが認識してくれませんでした
4重の別々に撮ったクリックしたい箇所の画像認識、chkingx関数による曖昧認識、色幅を持たせるなどしても認識してくれません
また、一回は認識したものの同じクエストに入ったのに2回目は認識しないということもあります
これ以外の方法または自分の見落としなどはありますか?

278デフォルトの名無しさん2019/05/16(木) 11:07:54.44ID:/xtfCvGN
>>277
saveimgで保存して手を加えずchkimgしてもだめ?

279デフォルトの名無しさん2019/05/16(木) 11:13:35.45ID:k6wqzKwn
>>278
ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼って

280デフォルトの名無しさん2019/05/16(木) 11:15:54.41ID:k6wqzKwn
>>278
ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼ってトリミングしています
Saveimgでもトリミング出来ますか?

281デフォルトの名無しさん2019/05/16(木) 11:34:15.95ID:/xtfCvGN
>>280
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との併用は指定範囲が有効ではありません、スタックトレースの取得に失敗って感じでエラー出ます…こちらも良ければ教えてください

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無いのねめんどーくさー

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 (~
~);
のようにカッコで括っても無理でした
綺麗にする方法はありますか?

290デフォルトの名無しさん2019/05/21(火) 22:00:10.45ID:GOukkBG2
>>289
SELECT - SELEND使えばどうだろう

291デフォルトの名無しさん2019/05/21(火) 22:01:42.81ID:pQ6gs7NX
<行結合>
 _ (アンダーバー)  // 行の最後に付ける事により次の行と結合させます

292デフォルトの名無しさん2019/05/21(火) 22:11:23.08ID:9ncm2Kmj
>>290
ありがとうございます!今回は行結合を使うことにしました、しかし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には使えない

295デフォルトの名無しさん2019/05/22(水) 09:09:42.03ID:KgqzAKkh
>>294
option shortcircuit を使えばいいだけでは?

296デフォルトの名無しさん2019/05/22(水) 12:47:18.70ID:t4YpuTXH
>>295
短絡評価あるの知らんかった…ほんとよく出来てるなあ
ならまあ、後は好みでいいかな
自分は別々の処理させたりフラグ建てたりする事が多いから>>294みたいにしてるけど

297デフォルトの名無しさん2019/05/22(水) 19:54:39.43ID:Q2YhfS/Q
ifとifbって何が違うの?
>>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文で回す方法しかありませんか?

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)

301デフォルトの名無しさん2019/05/24(金) 01:30:21.06ID:k9T5g2vH
LOGPRINT( TRUE, 0, 0)

HASHTBL hst_a
HASHTBL hst_b
hst_a["a"]=1
hst_a["c"]=3
hst_b["z"]=26

MSG("hst_aコピー前サイズ="+LENGTH(hst_a))
MSG("hst_bコピー前サイズ="+LENGTH(hst_b))

HASHTBL_COPY(hst_b,hst_a,TRUE)
MSG("hst_bコピー(変更)後サイズ="+LENGTH(hst_b))
MSG("hst_b[<#DBL>a<#DBL>]="+hst_b["a"])
MSG("hst_b[<#DBL>c<#DBL>]="+hst_b["c"])
MSG("hst_b[<#DBL>z<#DBL>]="+hst_b["z"])

HASHTBL_COPY(hst_b,hst_a)
MSG("hst_bコピー(複製)後サイズ="+LENGTH(hst_b))
MSG("hst_b[<#DBL>a<#DBL>]="+hst_b["a"])
MSG("hst_b[<#DBL>c<#DBL>]="+hst_b["c"])
MSG("hst_b[<#DBL>z<#DBL>]="+hst_b["z"])
MSG("30秒後に終了")
SLEEP(30)

FUNCTION MSG(str)
 RESULT=0
 PRINT str
// MSGBOX(str)
FEND

302デフォルトの名無しさん2019/05/25(土) 16:57:36.33ID:kezAIt7g
>>300
回答ありがとうございます!
やはりFOR文で回す方法になるのですね。
HASHTBLを引数にする時は [] がいることを初めて知りました。
使用方法も合わせて分かりやすい回答ありがとうございました!!

303デフォルトの名無しさん2019/05/26(日) 07:21:07.00ID:gyA6d7Mz
noxで画面をスクロールするマクロを作りたいと思い、スワイプで動かそうと思い作って見ましたがダメでした。
DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen swipe"+353 + 1107 + 353 + 250 )
アドバイスください。

追加で質問なんですがスワイプとドラックの違いがよくわかりません
スワイプは一回タッチして軽く放して動かす。ドラックはタッチしたまま動かす
であっているのでしょうか?

304デフォルトの名無しさん2019/05/26(日) 09:33:03.37ID:JiVdzwM6
>>303
ダメと言うのはどうなる?

…てかもしそのレスの通りのコマンドだとswipeの後にスペースないし、
その後の座標も全部スペースなしで連結されるからシンタックスエラーな気がするが

305デフォルトの名無しさん2019/05/26(日) 09:35:17.03ID:JiVdzwM6
>>303
スワイプとドラッグは大差ない
強いて言うならドラッグはタッチして対象を掴んでから自由に動かす
スワイプは最初に貯めなく、一定方向に動かす

306デフォルトの名無しさん2019/05/26(日) 10:51:33.10ID:G6snbdcx
androidをscrcpyというソフトを使ってでPCで自動化しています

BTN(LEFT,CLICK,,,)でクリックがされないことが度々あるのですが、待機時間を入れたり
BTN(LEFT,DOWN)BTN(LEFT,UP)のように記述したりしているのですが、失敗することがあります
操作の関係上、必要以上に待機時間を長くすることはできません。

失敗した時に画面を確認するとマウスカーソルはクリックする場所にキチンと移動しているようです
確実にクリックさせる方法はないでしょうか?

307デフォルトの名無しさん2019/05/26(日) 19:53:41.40ID:gyA6d7Mz
>>304
実行するとエラーは出ないのですが、何も起きません。
どう書けば動くのかわからないので、アドバイスください。

308デフォルトの名無しさん2019/05/26(日) 20:30:10.96ID:JiVdzwM6
>>307
エラーが出ないってのはエラー見てないだけでしょ
doscmdはあくまでコマンドプロンプト叩くだけだからコマンド内容が成功しても失敗してもエラーにはならない
その代わりコマンドプロンプトで叩いた時の出力が返り値になっているのでそれをprintなりすることで結果を確認できる
print doscmd(~)

しかしそんなことするまでもなく、まずdoscmdに突っ込もうとしてる文字列を見直しなって
それこそprintしたらわかりやすい
print (>>303のdoscmdの()の中身)

後は>>304に書いた通りなので以下略

309デフォルトの名無しさん2019/05/26(日) 21:15:47.46ID:gyA6d7Mz
>>308
Printで確認しながら書いたら動きました。 色々情報ありがとうございました

DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen swipe "+ 353 + " " + 1107 + " " + 353 + " " + 250 )
これで動きました。

310デフォルトの名無しさん2019/05/30(木) 10:50:09.25ID:tA+gABtL
HASHTBLの値に配列を設定する方法はありませんか?
以下のようにすると「式がおかしい or 型があっていない」とエラーになってしまいます。
HASHTBL aaaa = HASH_CASECARE
aaaa["abs"] = 1,2,3

配列変数は DIM 宣言する必要があるみたいなので
DIM a = 1,2,3
HASHTBL aaaa = HASH_CASECARE
aaaa["abs"] = a
と代入した所「1」しか値が代入されていません。

以下の様に値をとれると助かります。
FOR i = 0 TO (LENGTH(aaaa) - 1)
key = aaaa[i, HASH_KEY]
value = aaaa[i, HASH_VAL]
FOR j = 0 TO (LENGTH(value) - j)
PRINT key + ": " + value[j]
NEXT
NEXT

311デフォルトの名無しさん2019/05/30(木) 10:53:57.13ID:tA+gABtL
>>310
配列宣言を間違えました。
DIM a = 1,2,3 ではなく、DIM a[] = 1,2,3 になります。
この状態で aaaa["abs"] = a すると「次元数が合いません」のエラーになります。

312デフォルトの名無しさん2019/05/30(木) 12:47:43.35ID:aNGWRP0o

313デフォルトの名無しさん2019/05/30(木) 14:11:44.19ID:DRIu++Kq
SafeArray使えば?

314デフォルトの名無しさん2019/05/30(木) 20:29:16.58ID:EoC6wIfp
>>313
なるほど
>>310

aaaa["abs"] = SLICE(a)
とすればあとはそのままいけるね

ケアレスミスの
FOR j = 0 TO (LENGTH(value) - j)

FOR j = 0 TO (LENGTH(value) - 1)
にする必要はあるけど

べつに配列の内容をJOIN()で保存して
SPLIT()で取り出して再配列化するとかいう必要はないのか

>>310
5ちゃんに書き込んだ行頭のスペースやタブは削除されるので
全角スペースにすれば字下げできる
uwscは字下げを全角スペースのままにしても実行可能

315デフォルトの名無しさん2019/06/01(土) 05:28:16.71ID:Rgk748+T
CMD = "cd D:\ChangZhi\LDPlayer & adb -s 127.0.0.1:5555 shell input tap 200 200"
DOSCMD(CMD)
エミュレーターの画面がタップされる。
次にDOSCMDで画像認識から得られた座標を変数に置き換えて

attack_x=g_imgx_x
attack_y=g_imgx_y
CMD = "cd D:\ChangZhi\LDPlayer & adb -s 127.0.0.1:5555 shell input tap " + (attack_x) + " " + (attack_y)
print CMD
DOSCMD(CMD)
こちらの場合だとタップされない。
printを見る限り座標自体は送られているようなのですが動作しません
どう弄ればいいのか正直分かりません。分かる方いたら教えて欲しいです

316デフォルトの名無しさん2019/06/01(土) 07:07:10.14ID:Rgk748+T
すいません自己解決しました
ウィンドウ側の座標とエミュレーター側の座標を勘違いしてました

317デフォルトの名無しさん2019/06/05(水) 05:31:25.89ID:PDrTjnI7
久々に使おうとしたところ
記録(R)ボタンで操作を記録しようとしたら
最初のウインドウ移動コード以降全く記録できませんがもう使えないのでしょうか
作者死亡の噂があるし…

3183172019/06/05(水) 05:50:47.86ID:PDrTjnI7
勘違いしてました すまそ

319デフォルトの名無しさん2019/06/05(水) 05:52:56.58ID:x4OhbciW
記録できない、(記録されていないので)有効データはありませんってことは良くあるってネットで話題沸騰中
低レベル記録にすればなんとかなるかも

320デフォルトの名無しさん2019/06/05(水) 07:53:42.20ID:PDrTjnI7
そうなんですね
高レベル記録にすると空っぽになってしまう

321デフォルトの名無しさん2019/06/05(水) 10:36:15.48ID:S7VTZIha
再インストールすれば直るよ

322デフォルトの名無しさん2019/06/15(土) 18:50:19.87ID:RDrVtj7Z
UWSC+Noxの環境で画像認識のマクロ使っているのですが
Noxを起動しマクロを動かしながら、別のゲームをフルスクリーンで遊ぶと動かなくなってしまいます。
確認した所ボーダレスもダメで動くのはウィンドウモードでは動きました。

殆ど https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a ここのサイトを見て作りました

なにかいい手段はないでしょうか?

323デフォルトの名無しさん2019/06/15(土) 19:44:32.64ID:TdaUWTtt
別ゲーをフルスクリーンにすることでディスプレイの解像度変わって動作不良みたいな事なってそう

324デフォルトの名無しさん2019/06/16(日) 06:23:33.22ID:HmejiRXR
呼び出されたマクロの中にEXITEXITがあると呼び出しもとのマクロまで終了するの何とかなりませんか?

325デフォルトの名無しさん2019/06/16(日) 06:35:40.69ID:POuLEWBj
EXITEXITを使わなければいい
そのスクリプトの構造が悪い

326デフォルトの名無しさん2019/06/16(日) 07:02:22.57ID:NHc+bxmH
起動時パラメータでEXIT/EXITEXIT実行を切り分け

327デフォルトの名無しさん2019/06/16(日) 08:15:28.28ID:HmejiRXR
>>326
なるほど、そういう方法がありましたね。
ただEXITEXITの挙動にどうも納得がいかないですね。
レスには感謝いたします。

328デフォルトの名無しさん2019/06/16(日) 08:48:29.51ID:rf1Bxp8m
うっそーん…

329デフォルトの名無しさん2019/06/16(日) 09:58:41.01ID:EZeI/CqZ
>>327

CALLしたスクリプトは呼び出し元にとりこんで実行されてるだけだからね
EXITEXITで呼び出し元が終了するのは通常通りの挙動

どうしてもEXITEXITで呼び出し元終了させたくないなら
EXECとかDOSCMDから同期フラグ立てて呼び出すとかしないと無理

330デフォルトの名無しさん2019/06/16(日) 12:50:13.33ID:VTXg1tr4
どこに納得がいかないのか興味があるな…そもそもなんでEXITEXIT使ってるのか
てか呼び出し元も終了させたいときはどうするつもりなのか

331デフォルトの名無しさん2019/06/16(日) 14:29:18.86ID:HmejiRXR
>>330
マクロの中でサブルーチンがあり、そこでサブルーチンのみを終了するときはEXIT,
マクロ自体を終了するときはEXITEXITを使っています。
単独でこのマクロを動かすときは正常に動きます。しかし、他のマクロから呼び出し
ループさせようとしても1回動いて呼出し元のマクロごと終了してしまうのですよ。

332デフォルトの名無しさん2019/06/16(日) 14:56:07.49ID:VTXg1tr4
>>331
うーん?
サブルーチン側にEXITEXITある時点で作りが悪いよと言ったら怒られるかな
ぶっちゃけEXITEXITなんてGOTO並みの超限定的な場面でしか使うべきじゃない命令だし
サブルーチンは関数にして返り値出してメインで EXITすればいいだけだよね

333デフォルトの名無しさん2019/06/16(日) 15:12:02.08ID:VTXg1tr4
例えばだけどboolean型にして
今EXITのところと最後はRETURN TRUE
EXITEXITのところはRETURN FALSE
呼び出し側はこんな感じで
IF !関数名() EXITEXIT
逆でもいいかな、まあお好みで

334デフォルトの名無しさん2019/06/16(日) 15:15:47.43ID:VTXg1tr4
連投すまん
呼び出し側はEXITすれば良いって話なのにEXITEXITにしてしまったEXITに読み替えてね

335デフォルトの名無しさん2019/06/16(日) 15:22:52.91ID:HmejiRXR
>>332
作りの悪いマクロですみません。
レスには感謝です。

336デフォルトの名無しさん2019/06/17(月) 06:07:04.67ID:0Q+iBl83
EXILEに空見した

337デフォルトの名無しさん2019/06/17(月) 06:23:43.98ID:nD3RS79c
EXILEって気持ち悪くて大嫌いだわ

338デフォルトの名無しさん2019/06/28(金) 23:06:18.54ID:5LM4ivGb
NOXであるゲームにあるミニゲームの釣りマクロを作ったのですが、
画像発見からクリックまでにラグがあるみたいでクリックしたときには、釣り上げるタイミングを逃しています。

CMD0 = "cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (350) + " " + (1030)
///////ヒットしたら釣り上げる
ifb CHKIMGX("釣りヒット.bmp", winid, 115, 430, 230, 555, Detect_num, Threshold_delta, Target_color)
print "ヒット" //画像を発見したらログに表示
DOSCMD(CMD0) //Noxに操作を送信
Sleep(0.1)

こんな感じで作ってあるのですが、なにかいいアドバイスはありませんか?

339デフォルトの名無しさん2019/06/28(金) 23:24:25.29ID:4HrFS9y+
せっかくの釣りゲームなのにそんなことして楽しい?

340デフォルトの名無しさん2019/06/29(土) 09:44:30.14ID:Of7sgcsJ
何処で遅延発生してるのかわからないけど
ChkImgXで遅延発生してるならマッチングの範囲絞るとかマッチング画像トリムして小さくするとか
ChkImgXエアプだから出来るかはしらない

341デフォルトの名無しさん2019/06/29(土) 11:16:41.58ID:eEFCox6T
>>338です
調べたら、adbでの操作は遅延が出るみたいでそれが原因でした

btn(left,click,400,140,10)
にしたら大丈夫でした

342デフォルトの名無しさん2019/06/30(日) 13:11:18.40ID:7IuFi4Dp
NOXで画像認識でマクロ使っているのですが、
NOX解像度の設定が720x1280でモニタ解像度が1920x1280のためNOXの実際のウィンドウサイズは581x1060なっているため
画像認識をしても座標がずれてしまいます。今は画像認識したら予め決めた座標をクリックするようにしています
NOXの解像度を540x960にすると問題なく動きます

NOXの解像度を変更しないで、座標のズレを直す方法はないでしょうか?

343デフォルトの名無しさん2019/06/30(日) 13:48:02.61ID:LiwPiLEo
>>342
正確なサイズが分かってるなら比率を掛けるだけでは?(タイトルバー分忘れないように)
モニタの縦に収まるサイズで問題ないならそれでいいじゃんとも思うが

344デフォルトの名無しさん2019/06/30(日) 16:35:49.95ID:9VVtcacA
ゲームの座標はクリックしてそこのドットの座標とカラーなりなんなりを記憶・登録するようにすると便利だよ
どのゲームやアプリでも使いまわしが利くしね
今のところメジャーな3Dゲーム4作品程度にしか使ってないけど、自動戦闘はすべてpeekcolorで済んでる
このスレで人気?のchkimgはいかにも遅そうなので出番がない

345デフォルトの名無しさん2019/06/30(日) 16:56:27.56ID:VDp+hLNV
Botかよ。
そんな使われ方じゃ作者が可哀想だな。

346デフォルトの名無しさん2019/06/30(日) 17:10:40.85ID:9VVtcacA
>>345
可哀想も何も、後から画像関係の関数がわざわざ増強されたのは作者も認知してるってこった
私はその前から同様の機能を拡張して使っていたので新関数を使ってないがね

347デフォルトの名無しさん2019/06/30(日) 19:45:50.69ID:VDp+hLNV
>>346
それとBotと何の関係が?

348デフォルトの名無しさん2019/06/30(日) 20:46:18.95ID:a2qR2cp+
>>347
役立たずは黙ってろ

349デフォルトの名無しさん2019/06/30(日) 21:32:04.04ID:nMEM26ki
仮想マシンでUWSCを使う際に
uwsファイルや画像認識用の画像がネットワークドライブにある場合
フルパス指定しても、「Not found 中断しますか?」と聞かれ
画像認識ができません。パスにはスペースは入っていませんが、日本語は入っています。
コマンドプロンプトでネットワークドライブをZに割り当てるなど
いろいろ試してみましたが、解決には至りませんでした。
ファイルが大量かつ、仮想マシンが何台もあるので、コピーなどはできません。
どなたか解決策を教えていただけないでしょうか。よろしくお願いいたします。

350デフォルトの名無しさん2019/06/30(日) 21:40:49.75ID:nMEM26ki
>>349 です。
書き忘れていました。仮想1台1台別のuwsを使用しています。
使う画像はすべて同じなので、画像をまとめているファイルは別にあり
パスを指定しなければなりません。uwsと画像が同じフォルダにある場合でも
同じような現象が起きます。

351デフォルトの名無しさん2019/07/01(月) 02:10:35.83ID:BhUQI10d
試してみて
ネットワークをドライブ名にマップした場合でも
そのパス名に日本語が入っていても(表のように0x5Cが含まれている文字も含め)
問題は起こらななかった
CHKIMG()に渡すパス名が "\\machine\folder\表現\a.bmp"
のようなネットワークパスだとしても有効だった
なにか勘違いしているだけで
単純にパス名が間違っているのではないか

352デフォルトの名無しさん2019/07/01(月) 02:48:36.99ID:g5QsZuxD
例の記事でnoxマクロが誰でも組めるようになったせいでレベルの低下が著しいな

353デフォルトの名無しさん2019/07/01(月) 07:49:38.60ID:O1pDJEnN
ファイルパス・ユーザー名など、システム関係に、ASCII 以外を使ったらダメ!
半角英数字(英小文字のみ)と、アンダーバーだけを使うと安全

外人の作ったアプリは、sjis を想定していないから!

354デフォルトの名無しさん2019/07/01(月) 09:50:46.62ID:Ud6nL9Ft
ネットワークドライブでも問題ないし、Googleドライブでも問題ない
ただ意識せずに毎秒画像見に行ってたせいで転送量がすごい

355デフォルトの名無しさん2019/07/05(金) 12:06:58.79ID:alcGemYM
はじめまして、このミジンコ誰か教えてください。

noxにてadbを使ってバックグラウンドにて動作するマクロを作成しようと思っております。
単純なタップやスワイプ等のコマンド送信は出来たのですが、画像認識(chkimg)のような仕組みは可能なのでしょうか?
また可能ならどのようなソースの書き方をすればいいのか教えて頂けませんでしょうか?

よろしくお願いします

356デフォルトの名無しさん2019/07/05(金) 12:10:55.06ID:S/iigIKp
このスレもしくは前スレに同じような質問や実践的内容が書いてあるよ

357デフォルトの名無しさん2019/07/06(土) 11:03:00.32ID:szQx9Drp
すいません!pro版でRECIEを使おうとしたらL18が存在しません とでるのは、割れだからでしょうか?それとシリアルは必ず17桁でしょうか?

358デフォルトの名無しさん2019/07/06(土) 14:57:38.96ID:s7rosYjh
>>357
割れだから

359デフォルトの名無しさん2019/07/06(土) 15:40:43.73ID:szQx9Drp
>>358
そのあと正式な登録がされてません
とでるんですが

360デフォルトの名無しさん2019/07/06(土) 15:48:34.88ID:6ShlGEgv
よくまあ割れの質問なんかするな

361デフォルトの名無しさん2019/07/06(土) 16:19:04.02ID:f5b28dyd
割れ割れによる割れ割れのための割れ割れの政治

362デフォルトの名無しさん2019/07/06(土) 16:30:15.77ID:1YLcU5Mg
割れだからって言われて、それに対して正式な登録が〜って聞く意味が分からん
正式な登録してから出直してこい

363デフォルトの名無しさん2019/07/06(土) 16:33:01.72ID:o0MaAedS
どうせ釣りだろ
はい釣れた釣れた

364デフォルトの名無しさん2019/07/06(土) 18:05:48.63ID:aan9FGim
えっ、釣りだったの!?
もう通報しちゃった…

365デフォルトの名無しさん2019/07/19(金) 17:51:44.45ID:+VZsoYG6
noxのadbって別窓でフルスクリーンにすると数字がガッツリ変わるんですけど、noxの座標をどうやって調べればいいか教えてくださいお願いします

366デフォルトの名無しさん2019/07/19(金) 18:04:34.79ID:TdSe3tZb
windowID取得してstatusで取れない?

367デフォルトの名無しさん2019/07/19(金) 19:08:09.92ID:eawjkefv
話が見えないなあ
数字ってのは座標?
別窓ってのはまさかサブディスプレイ?

adbというかAndroid内で座標なんかズレやしないんだから外側からの与え方、取得の仕方に問題があるだろう
ウインドウ指定で取らずデスクトップ基準で取ってるのでは?

何言ってるのかわからんレベルならスクリプト貼ってくれた方が話しがはやい

368デフォルトの名無しさん2019/07/20(土) 06:23:49.81ID:5yy6Rgji
>>367
ありがとう、まさしくその通りでデスクトップ基準で取ってたからフルスクリーン後にタップが行ってなかったみたいです。
現在とりあえず動かすことが出来ました。ありがとうございました

369デフォルトの名無しさん2019/07/29(月) 10:35:08.27ID:OnS04pQR
UWSC総合スレという名でディスコードのコミュニティを作ってみました。
これから仕事なのでまだ何も記載してませんが、よかったらどうぞ
https://t.co/R0e07jjoOZ 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)

370デフォルトの名無しさん2019/07/29(月) 20:31:52.42ID:nFx6ozTz
メアド集めて何する気だよ?

371デフォルトの名無しさん2019/07/29(月) 21:41:55.00ID:CSar0obt
UWSC初心者用スレ 	->画像>9枚

372デフォルトの名無しさん2019/07/30(火) 20:50:17.33ID:P8HnQUDX
LDplayerでゲームを起動し、バックグラウンドで画像認識した場所をクリックという動作をしたいのですがうまくいきません。

ゲームが前面に来ている時は、画像認識して座標は取ってるがクリックせず
ブラウザなどで隠れ裏面に来ている時は画像認識を失敗しています。
IDが取れてないか最初のMOUSEORG指定がおかしいのかとおもうのですが、見てもらえないでしょうか

w_id = getid( GET_ACTIVE_WIN )
mouseorg( w_id ,2 ,MORG_BACK )

w_id = getid( "ウィンドウ名" ) //w_id にアクティブウィンドウを格納
Hnd = GETCTLHND( w_id, "RenderWindow")
MOUSEORG(Hnd, MORG_DIRECT, MORG_FORE)
どちらを使っても上記と同じ症状です

OSはWindows10 画像認識にはchkimgxを使っています。
似たような処理を作ったことある方、解決策ご教授頂けないでしょうか。

373デフォルトの名無しさん2019/07/30(火) 20:58:37.57ID:tS2fmUug
LDplayerは使ったことがないからわからないけど
バックグラウンド操作が効かないソフトもある
似たような過去スレに似たような質問たくさんあるから一読してみて

374デフォルトの名無しさん2019/08/02(金) 18:41:27.29ID:R+vlhR/4
NOX用のマクロを作ろうと思ってるのですが、画像認識でつまづいています。
>>244のサイトを参考にテスト用のuwsファイル
UWSC初心者用スレ 	->画像>9枚
を走らせた結果が
UWSC初心者用スレ 	->画像>9枚
です。

bmpファイルはsaveimgで取得したもので、PCの解像度は1920×1080、NOXの解像度は540×960、ウィンドウサイズの復元もしてあります。
この場合画像認識が上手くいかない原因としてどのような事が考えられますか?

375デフォルトの名無しさん2019/08/02(金) 19:40:31.57ID:R+vlhR/4
>>374
ちなみに
IFB CHKIMG("テスト用.bmp")
MSGBOX("画像認識に成功しました。<#CR>G_IMG_X = " + G_IMG_X + "<#CR>G_IMG_Y = " + G_IMG_Y)
で画面全体を検索するとNOX上の画像がきちんと認識されます。

376デフォルトの名無しさん2019/08/02(金) 20:36:33.96ID:zrwPHBgv
あのさあ
コード画像で貼るとか、試すのに全部手打ちさせる気?
判定画像もどんなのか分からんし

なので全く試してないが単に縦横間違ってるとかそんなレベルじゃなかろうね

377デフォルトの名無しさん2019/08/02(金) 21:02:16.41ID:R+vlhR/4
>>376申し訳ないです。
長くなってしまうので画像でと思ったのですが、言われてみれば仰るとおりでした。
改行数の関係で少し変わりますが下のコードです。
winid = getid("NoxPlayer") //ゲームウィンドウを名前で検索して取得
winPosX = STATUS(winid,ST_X)
winPosY = STATUS(winid,ST_Y)
winsizeX = STATUS(winid,ST_WIDTH)
winsizeY = STATUS(winid,ST_HEIGHT)
print "位置X 位置Y 幅 高さ"
print winPosX + " " + winPosY + " " + winsizeX + " " + winsizeY
CALL ChkImgX.uws
x1 = 0
y1 = 0
x2 = 540
y2 = 994
Detect_num = 1
Threshold_delta =20
Target_color = -1

startup_chkimgx() //CHKIMGX関数開始
While True //Wendまでの処理を繰り返す
ifb CHKIMGX("テスト用.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
print "テスト用を発見しました。" //画像を発見したらログに表示
else //上記の条件全てに当てはまらなかった場合
print "画像が見つかりません" //メッセージを出す。
endif //ifbの処理の終了地点
sleep(3) //()内の秒数待機
Wend

378デフォルトの名無しさん2019/08/02(金) 21:04:55.14ID:R+vlhR/4
>>376
デスクトップ左端に
UWSC初心者用スレ 	->画像>9枚
こう置かれてるNoxのAppCenterのアイコン(https://dotup.org/uploda/dotup.org1911829.bmp.html)で認識させてます

379デフォルトの名無しさん2019/08/02(金) 22:37:11.99ID:zrwPHBgv
うーん? コードは違和感ないけど
試しにwinidじゃなくて0を与えるとどうなる?
※chkimgと同じく全画面という指定

後はsaveimgじゃなくてprintscreenで画像作ってみるとか

380デフォルトの名無しさん2019/08/02(金) 23:11:18.56ID:R+vlhR/4
>>379
winid = 0って書き方で大丈夫ですかね?
プリントスクリーンで作ってwinid = 0で試してみると認識されたので画像位置をクリックするように書きえ変えてみたのですが実際にはクリックされませんでした。

381デフォルトの名無しさん2019/08/02(金) 23:14:15.77ID:R+vlhR/4
>>379
winid = 0
CALL ChkImgX.uws
x1 = 0
y1 = 0
x2 = 0
y2 = 0
Detect_num = 1
Threshold_delta =20
Target_color = -1

startup_chkimgx() //CHKIMGX関数開始
While True //Wendまでの処理を繰り返す
ifb CHKIMGX("テスト用.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
print "テスト用を発見しました。" //画像を発見したらログに表示

deffence_x=g_imgx_x
deffence_y=g_imgx_y
//画像認識で取得した値を代入してDOSCMDで送る内容を作成
CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + (deffence_x) + " " + (deffence_y)
print CMD //CMDの内容を確認
DOSCMD(CMD) //Noxに操作を送信

else //上記の条件全てに当てはまらなかった場合
print "画像が見つかりません" //メッセージを出す。
endif //ifbの処理の終了地点
sleep(3) //()内の秒数待機
Wend
これを走らせると
テスト用を発見しました。
cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 1358 556
と出るのですが実際にはクリックされてない状況です。

382デフォルトの名無しさん2019/08/03(土) 00:23:17.82ID:/xlhahKC
windid = 0
のときはデスクトップの座標

winid が getid()で得た値で
それが1以上なら
そのウィンドウの座標

この場合はwinidに0を渡して返ってきた座標からは
ウィンドウのx,y位置とさらに実際の表示領域までの
枠幅を引いてやらないといけない

383デフォルトの名無しさん2019/08/03(土) 00:49:19.44ID:/xlhahKC
getid()でとっていた値が対象ウィンドウの
ものでなかった場合を除いてだが
winidに0を指定しただけで認識できるというのは
不思議なので検索領域が広くなったことで単に
違った箇所が誤認識されているのかも

384デフォルトの名無しさん2019/08/03(土) 01:11:14.59ID:U4dG53It
別にwinid=0じゃなくて直接0で良かったんだけど、まあいいや
で0と画像の作り方両方同時にするんじゃなくて片方ずつではどう?
問題を切り分けたい

ちなみに仮に今の方法でadbにしたいならその座標からウインドウの座標を引いて後タイトルバー分も引けば出来ることはできる

385デフォルトの名無しさん2019/08/03(土) 01:12:38.38ID:lOZq4lm8
>>383
winid=0の時はNoxを移動しても移動先にあるアイコンの座標を出してくれるので誤認識って事は無さそうです
どうもgetid()で対象ウィンドウの値が取れていない気がするのですが
>>378の画像のようにNoxの左上にNoxPlayerとあればgetid("NoxPlayer")っていう認識で間違ってないですか?
エミュレーターの追加をしていないのでこのNoxPlayerしかないのですが…

386デフォルトの名無しさん2019/08/03(土) 01:19:42.46ID:Ks0WXhsa
>>382が既に指摘してるけどgetidの戻り値はいくつなのよ

387デフォルトの名無しさん2019/08/03(土) 01:22:44.43ID:U4dG53It
>>386
>>374
ウインドウは取れてる

chkimgx時に何か変なようだけど何かなあ
ウインドウがアクティブじゃなくてもいいはずなんだけどね

388デフォルトの名無しさん2019/08/03(土) 01:54:21.96ID:lOZq4lm8
>>384
0にする前のコードでsaveimg、WinShot、プリントスクリーンで試しても変わらずでした
逆に0にした後はどの方法で作った画像でも認識はされます

皆さん色々とご意見ありがとうございます
こういうプログラム的な事をするのが初めてなので煩わせてしまって申し訳ない

389デフォルトの名無しさん2019/08/03(土) 01:57:35.42ID:/xlhahKC
>>385
>Noxの左上にNoxPlayerとあればgetid("NoxPlayer")っていう認識で間違ってないですか?

たいていそうだが、必ずそうだとはいえない

ヘルプのGETIDを見ると
タイトル: 識別したいウィンドウのタイトル (タイトルの一部分だけでもOK)
なので
とれるIDは
"NoxPlayer_1.txt"や"NoxPlayerについて"などのうち最初にみつけたもの
また
" "などが含まれているのに気づかない場合もある
また
>>378 の画像を見ると
Windowsの標準的な形式のウィンドウスタイルではなく
タイトルバー部分に関して独自の描画をしているようなので
内部的なウィンドウタイトルがNoxPlayerで始まっていない可能性もある

GETID()でとった値の
STATUS(id,ST_X),STATUS(id,ST_Y)などはすでに見ていて
それらしい値になっているのだと思うが
いちおう
STATUS(id,ST_CLASS)がそれらしい名前になっているか
見たほうがいいかも

さらに
GETALLWIN( )
でとったリストの中に"NoxPlayer"で始まるウィンドウタイトルがほかにないことを
確かめれば完璧

390デフォルトの名無しさん2019/08/03(土) 02:38:29.78ID:lOZq4lm8
>>389
fukidasi("ゲームウィンドウ上でSキー") //Sキー入力待ちの告知
While !(GETKEYSTATE(VK_S)) //Sキー入力まで無限ループ
sleep(0.1)
Wend
fukidasi() //入力待ち告知の吹き出しを消す

winid = getid(GET_ACTIVE_WIN) //Sを押したウィンドウでIDが取得されるので確実に取得できる
cls = STATUS(winid, ST_class)
title = STATUS(winid, ST_title)
print "ウィンドウ名は" + title
print "ウィンドウIDは" + winid
print "ウィンドウクラス名は" + cls
の結果が
ウィンドウ名はNoxPlayer
ウィンドウIDは1
ウィンドウクラス名はQt5QWindowIcon

n = GETALLWIN()
PRINT "ウィンドウの数:" + n
IFB n > 0
FOR i = 0 TO (n - 1)
PRINT ALL_WIN_ID[i] + ":" + STATUS(ALL_WIN_ID[i], ST_TITLE)
NEXT
ELSE
PRINT "ウィンドウが見つかりませんでした"
ENDIF
で全ウィンドウを取得してみた所NoxPlayerは一つだけでした

にもかかわらず0以外では認識されずどうしたものかと…

391デフォルトの名無しさん2019/08/03(土) 03:03:14.23ID:U4dG53It
さて仕方ないということで>>377のままで実行してみると普通に成功するね
(テスト用を発見しました。が3秒毎に出る)

となると基本的なところを見直そう
環境としてはWindows10? 念のためUWSCのバージョンは5.3.0.2?
あと念のためNoxの設定でレンダリングモードを変えたりしてみた?

自動化ツールUWSC使いよ集まれ21 756- によれば一部の環境でOpenGLではうまく動作しないなどあるらしいよ
(Windowsなのかグラボ依存なのかはっきりとはしない)

392デフォルトの名無しさん2019/08/03(土) 08:20:35.61ID:OFX4DJO3
>>390
>ウィンドウクラス名はQt5QWindowIcon
このクラス名を見る限り実態は別にあるんじゃなかろうか

393デフォルトの名無しさん2019/08/03(土) 08:43:36.26ID:OFX4DJO3
>>392
あ失礼
Qt5QWindowIconのクラス名はこのスレにも過去に出てきていた
それであっているようですね

394デフォルトの名無しさん2019/08/03(土) 12:32:06.93ID:lOZq4lm8
>>391
すみません、理由は分からないのですが動くようになりました
というのも訳あってWin7にダウングレードしていたのですが、Win10に戻した所画像が認識されるようになりました

ご協力いただいた皆様本当にありがとうございました

395デフォルトの名無しさん2019/08/04(日) 13:50:12.50ID:z/hKv82K
画像認識のループマクロで画像が認識されず一定回数ループした場合に別の処理をさせたいのですがどのような手法をとればいいのでしょうか?

396デフォルトの名無しさん2019/08/04(日) 14:43:10.09ID:YK9Zosi+
画像が認識できないのとループ回数で処理分けたいのは別の話だし手法というほどもない
自分がやるのならwhileによるループ内に画像認識とカウンタで分岐するifなりselectなりで作るが

後のことはそのうまくいかないスクリプト見ないと何が悪いのかは分からん

397デフォルトの名無しさん2019/08/10(土) 04:37:33.43ID:7UvH5Dc6
>一定回数ループ
本当にやりたい処理はそうじゃないだろう

398デフォルトの名無しさん2019/08/25(日) 02:21:47.46ID:02nOh0YG
noxにchkimgx走らせたらたまにx:-1332736054 y:399917186
とかとんでもない座標が帰ってくるのですが原因わかりません助けてください

399デフォルトの名無しさん2019/08/25(日) 04:06:47.43ID:YF3o46xU
分からないものは分からないで済ませる方法を考えよう
たまに変になるだけならxyが指定範囲外ならもう一度走らせればいい

400デフォルトの名無しさん2019/08/26(月) 14:35:17.89ID:yberui11
確かにそうですね・・・異常値の検知やってみますありがとうございました


lud20220918114113ca

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1537758829/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「UWSC初心者用スレ ->画像>9枚 」を見た人も見ています:
【初心者】懸垂10回を目指すスレ 12【チン】
Mac初心者質問スレッド281
PC初心者にありがちなこと
【画像】JDまんさん「事故りまくったけど、もう少しでダッサイ初心者マークとれる!うれしい!」
下手くそ専用スレ
ソードワールド初心者スレ
FX初心者スレ Part98
【USD/JPY】ドル円専用スレ Part28175【$\】
【WoT】World of Tanks 初心者スレ 137
【WoT】World of Tanks 初心者スレ 129
【USD/JPY】ドル円専用スレ Part27648【$\】
マム初心者が集まるスレ
jubeat初心者スレ 32nd Tune
【目指せ】嘘PC用語辞典@PC初心者【1000】
RC初心者に教えてくれる人が集まるスレ [無断転載禁止]
自作PC初心者パーツ購入相談事務所【35列目】
くだすれDelphi(超初心者用)その55
PC初心者のワイ、充実したPCライフが送りたい。
PC初心者にも脱税者の匿名告発は簡単 [無断転載禁止]
初心者から中級者を目指す人の救済スレ(ガンプラ用)
【映画】汎用スレ 2018/08/05〜【音楽】
[SDK]iPhoneアプリ開発初心者質問箱48[touch][iPad] [無断転載禁止]
初心者が気軽に何でも撮影してUPして評価してもらうスレ 3
人狼ジャッジメント初心者スレ part13
Twitter 初心者&質問スレ Part.27
人狼ジャッジメント初心者スレ part9
くだすれDelphi(超初心者用)その16
俺、パチ初心者専用質問スレ6本目
Webサイト制作初心者用質問スレ part248 [無断転載禁止]
【キンスレ】キングスレイド初心者用スレpart3【初心者】
徳井専用スレ
UWSC初心者用スレ2
楽天ラッキーくじ専用スレ 43
ふらっとC#,C♯,C#(初心者用) Part88
新 キャンプ用テント専用スレ
将棋ウォーズ友達対局用スレ (段級位問わず)
【Rank100↓】グランブルーファンタジー超初心者スレ462 &#169;2ch.net
【Switch】Splatoon2/スプラトゥーン2 初心者スレ99【質問/雑談】
初心者におすすめのカメラを教えるスレ
上原光紀 専用スレ
みかんの戯言専用スレ Part.5
PC初心者だけど、5000円のパソコンとかないの? [無断転載禁止]
みかんの戯言専用スレ Part.4
ウクレレ初心者集まれ!! Part19 (ID有)
iPodtouchを使うには…?(初心者)
【LCC】台湾LCC初心者スレ Part.7【格安旅行】
【DQ10】ドラゴンクエストX 初心者スレ 129組目
街の自転車屋専用スレ 119店目
【海外通販】AliExpress初心者質問スレ 8
【Switch】Splatoon2/スプラトゥーン2 初心者スレ78【質問/雑談】
【USD/JPY】ドル円専用スレ Part29873【$\】
【慈悲】PC初心者をお救いください
BTS専用スレ
重度の鬱病専用スレ
自作PC初心者パーツ購入相談事務所【27列目】
【初心者用】マイニング情報交換スレ45
【初心者用】マイニング情報交換スレ34
囲碁初心者・入門者への指導法を考えるスレ
令和生まれのDTMer専用スレ
MacOSX86初心者スレッド Part6
Python初心者スレ
自演ノイローゼエタ専用スレ
【DQ10】旅芸人専用スレ ハッスルダンス79回目
PC初心者板の回答者の質を向上される為の・・・
自作PC初心者に教えて…
14:54:04 up 1 day, 5:16, 5 users, load average: 142.22, 124.98, 119.54

in 0.43400192260742 sec @[email protected] on 102403