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

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


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

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

1デフォルトの名無しさん2018/09/24(月) 12:13:49.92ID:an35jPjo
UWSC初心者用スレです

わかってる人はこっち
自動化ツールUWSC使いよ集まれ21
http://2chb.net/r/software/1533818531/

降臨される神々においては相手を人と思わず猿と思し召されるよう
何卒お願い申し上げます

2デフォルトの名無しさん2018/09/24(月) 12:14:19.87ID:an35jPjo

3デフォルトの名無しさん2018/09/24(月) 12:15:03.20ID:an35jPjo
●UWSC 掲示板(※作成依頼掲示版ではありません)
質問の際には自力で作ったスクリプトを晒すか、
具体的な解らない場所を提示すること
上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi

●UWSC - Wikipedia
http://ja.wikipedia.org/wiki/UWSC

4デフォルトの名無しさん2018/09/24(月) 12:15:36.86ID:an35jPjo

5デフォルトの名無しさん2018/09/24(月) 12:16:00.59ID:an35jPjo

6デフォルトの名無しさん2018/09/24(月) 12:22:09.57ID:idPCtow3
>>1
おー立ててくれたのか
プログラム板に立てたのはあえて?

7デフォルトの名無しさん2018/09/24(月) 13:25:23.39ID:OJN25ACF
板誤爆だろ

8デフォルトの名無しさん2018/09/24(月) 14:22:22.29ID:+VppQ0pu
改めて

nox(最新)でゲームを自動化しようとしてるのですが、マウスクリックなどの操作を受け付けてくれないですし、記録する時も記録出来ません。
何かやり方あるのでしょうか

あとchromeで裏マクロ作ろうとしてますが画像認識してくれません
試しにsaveimgでid クロームのハンドル webglのハンドルでそれぞれ確認したら
webglハンドルはブラウザフレームだけ取得して中身の画面は真っ黒 他はそもそも現在の画面しか取り込んでくれてないです。
よろしくお願いします

9デフォルトの名無しさん2018/09/24(月) 16:37:22.58ID:d+NkHGTT
ん〜プログラム板がよかったのかソフトウェア板がよかったのか微妙

10デフォルトの名無しさん2018/09/24(月) 17:38:14.77ID:ZwyUHgZx
>>8
noxは直接クリックはできないのでadb使う
向こうのスレに参考スクリプトはあるしググれば出てくる
記録はできないが、単純操作ならnoxのスクリプトレコード使うか、座標系の元値としてだけ使ってもいいかも?
やろうと思えば変換も出来そうだけどね

Chromeはウインドウ指定で使うにはかなり難しい
過去スレを頑張って読むか諦めた方がいい

11デフォルトの名無しさん2018/09/24(月) 20:50:55.47ID:lHcMF3Ar
>>8
自分で考えろ
聞いて解決するな
死ね
殺す

12デフォルトの名無しさん2018/09/24(月) 21:04:24.34ID:DtR7Krcw
早速スレつぶしに来ててワロタ
とにかく罵倒したくて仕方ないんだな

13デフォルトの名無しさん2018/09/24(月) 23:18:39.85ID:an35jPjo
神の啓示には感謝しなきゃダメだよ

14デフォルトの名無しさん2018/09/25(火) 11:04:29.32ID:J1FBTwPW
初心者スレとか嘘つかずに素直にゲームマクロスレとかにすりゃいいのに

15デフォルトの名無しさん2018/09/25(火) 11:20:22.77ID:HpChLXGF
気になって仕方なくて覗きに来たのかw

16デフォルトの名無しさん2018/09/25(火) 11:32:00.41ID:KxeqxPCQ
僕はもう追いかけはしない

17デフォルトの名無しさん2018/09/25(火) 19:02:27.87ID:qc/hnwWX
ありがとうございます
とりあえずfirefox系列ならバックグラウンドで画像確認とか出来たのでこちらをベースにします

18デフォルトの名無しさん2018/09/25(火) 19:16:03.81ID:GnoTTlW7
>>1
>UWSC初心者用スレ

ここはプログラム板なんだから
初心者用スレがソフト板で
スクリプトを書きまくるスレが
こっちにある方が自然な住み分けだと思う

まあ住民視線だと
隔離で他板に飛ばす方が良いんだろうけど

なおスクリプトを書く方が偉いみたいな
思想で言っている訳ではない
利便性で言っているだけ

19デフォルトの名無しさん2018/09/25(火) 22:41:38.51ID:tvEhsayp
>>18
全く仰る通りで。板の住人には誠に申し訳ない。

20デフォルトの名無しさん2018/09/26(水) 00:29:25.56ID:Mnfitxfv
まあ細かいことはええやろ
向こうはUWSCというソフト全般の話する所
こっちはUWSC初心者がプログラムの話する所
とか適当に建前言っとけば問題ない

21デフォルトの名無しさん2018/09/30(日) 21:33:27.14ID:C+d3VFtL
すみません
上に書いてあるadbって何の事ですか

22デフォルトの名無しさん2018/10/01(月) 05:32:35.05ID:2PPz6CoJ
「android adb」で検索!

23デフォルトの名無しさん2018/10/01(月) 14:21:00.29ID:cVCKaASP
検索促すだけじゃあっちと変わらんやん(笑)
調べりゃわかることでも懇切丁寧に教えてやるためにスレ建てたんじゃなかったの?(笑)

24デフォルトの名無しさん2018/10/01(月) 15:03:21.02ID:k8diFUao
わざわざこっちもチエックして煽りに来てんのか
重症やな

25デフォルトの名無しさん2018/10/01(月) 15:04:35.85ID:BPii8/gs
向こうにもリンク貼っておいて何言ってんだこの馬鹿は

26デフォルトの名無しさん2018/10/01(月) 15:08:39.88ID:Gm5J3aUY
いや真面目な話、検索しろじゃあっちと変わらなくね?
このスレなんのために立てたの?

27デフォルトの名無しさん2018/10/01(月) 19:14:57.65ID:dpHWHOw9
真面目な話、adbは板違いなので

28デフォルトの名無しさん2018/10/01(月) 19:50:08.00ID:Fhb8wAZ6
ウィンドウ上の定点を監視するために、saveimg(,gid) で
クリップボードにキャプチャした画像の PeekColor(x, y,,TRUE) を取ってるんですが、時々 -1 が返ってくる。
うまく判定できていないのだろうと思って、PeekColor(x, y,COL_R,TRUE) もとってみたけど、こちらは時々 0 が返ってくる。

定点の仕様として、R が 0 にはならないのだけれど、何らかの例外がある場合、-1 や 0 を返す仕様でしょうか?

切り分けとして、-1 や 0 が返ってきたときのキャプチャを保存して確認してみたけど、色がついている(R も存在)しているので
対応指針が決まりません。

どのような時に、-1 や特殊な(?)0 が返ってくるのかどなたかご存知でしょうか?

29デフォルトの名無しさん2018/10/01(月) 20:13:15.44ID:AvNlBg/g
>>28
その異常値が返ってきたときのキャプチャをPeekColorかけるとやはり異常値返ってくるので?

返ってくる場合は画像よく見て分析するしかないかも
返ってこない場合は非同期でグローバル領域共有しておかしなことになってないか確認する

懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…(描画乱れがランダムに起こってるんだとしたら判定後に撮っても遅い)
後は異常時にタイムスタンプ付きでログ出して周期的なものか、そのタイミング何か重い処理してないかなどを分析する

30デフォルトの名無しさん2018/10/01(月) 20:26:28.02ID:Fhb8wAZ6
>>29
キャプチャした内容(クリップボードに取り込んでた内容)を peekColor かけても、問題ないんですよねぇ。
グローバル領域かぁ。。。分からんw

> 懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…
この辺の切り分けができるように、クリップボード使用してたんですけど、分からんねぇ。困った^^;

もうちょっと調べてみます。ありがと。

31デフォルトの名無しさん2018/10/01(月) 21:06:45.73ID:k8diFUao
>>26
検索しろでも懇切丁寧に教えてあげるのでも好きにすりゃいいんじゃねぇの
そういう所に変にこだわって肝心のuwscの話から脱線するのがウザくて離れたんだから

32デフォルトの名無しさん2018/10/01(月) 21:54:24.74ID:SSJgbJ3B
>>29
そもそもクリップボードから取得って確実性あんの?
他で使ってる可能性は?入っているデータ型は都度確認してる?
あんま賢いやり方とは思えないが

33デフォルトの名無しさん2018/10/01(月) 22:25:15.19ID:fZlkxeb/
chkimgxをAutoItなどに移植って可能ですかね?

34デフォルトの名無しさん2018/10/02(火) 00:28:05.04ID:me1+gMvb
>>33
元々C++で作ってるらしいからそっちに明るいならいけるんじゃないか

35デフォルトの名無しさん2018/10/02(火) 01:10:43.02ID:HAR2y5TT
元々OpenCVの関数叩いてるだけだし

36デフォルトの名無しさん2018/10/03(水) 19:21:37.26ID:srylDUsH
すみません
While !chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
ifb SLEEP(10) then
break
endif
WEND

と書いて10秒待っても画像が無かったらループを脱出させようとしたのですが脱出できません

サンプルでは

while true
fukidasi ("ENDキーで終了",100,100)
ifb getkeystate(vk_end) then
break
endif
wend
とエンドキー押せば止まるのでこれを真似てみたのですが
よかったら分かるかたいませんでしょうか?
よろしくお願いします。

37デフォルトの名無しさん2018/10/03(水) 19:57:21.83ID:yx3nQSMn
start = gettime()
While gettime() - start < 10
if chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
break
endif
WEND

38デフォルトの名無しさん2018/10/03(水) 20:00:22.12ID:KtepAYQT
if/ifbの次には真偽値を置く
今のコードだとタイマーが置かれてて意味がわからないので無視されている

39デフォルトの名無しさん2018/10/03(水) 20:08:02.96ID:eg7MKqyj
UWSC × Noxでゲームマクロの入門編の記事を作成しました。
nox_adbについてサンプルコード付きで書いている記事は今までなかったと思うので、初心者さんが来た時にでも使ってください。
https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a

40デフォルトの名無しさん2018/10/03(水) 20:35:01.96ID:srylDUsH
>>37
>>38
神様助かりました!一日中試してたのにおかげで無事できました!ありがとうございます!

41デフォルトの名無しさん2018/10/09(火) 08:09:46.16ID:dgVIN+8N
保守s

42デフォルトの名無しさん2018/10/13(土) 16:29:34.71ID:0Iqx+GXq
友人のために作成したスクリプトで、おかしな挙動が出ています。
ACW(gid,0,0,,)
として、左上隅にウィンドウを移動させ、そこを基点に特定座標の色を拾うスクリプトを書きました。
が、時々拾えなくなると言われ、切り分けのために色を拾うタイミングで、キャプチャを実施しました。
キャプチャ結果を見ると、時々、ウィンドウが移動しているように見受けられます。

友人の操作を疑っているのですが、触っていないと言われ、原因を探っています。

ACW 以外に、ウィンドウを動かす事に注意しなければならない関数は存在しますか?

昼飯で引き受けたのですが、ずいぶん高くついてしまっています。
ヒントでもあれば教えてください。

43デフォルトの名無しさん2018/10/13(土) 20:36:39.68ID:M9OwAK6A
>>42
情報が少なすぎて何とも言えないが…まず、どう動くの? 
その場所からいなくなるという意味ではCTRLWINでもBTNでも犯人になり得るがそういう話し?

対策は面倒ならしつこくACWするか、根本対応としてMOUSEORG使うかってところが今のところ浮かぶけど
もうちょっと差し支えない範囲でコードの中身見ないと分からんことが多すぎるよ

44デフォルトの名無しさん2018/10/13(土) 20:38:31.06ID:zXFRfhuI
念のため前後も確認したい

45422018/10/13(土) 21:50:49.06ID:0Iqx+GXq
定点観測して、ログを吐き出すスクリプトなんで、ざっくりというと以下な感じ。
・ウィンドウを左上に移動
・特定座標の色を変数として記憶
・記憶した色のパターンが特定の条件に合致すれば、ログに出力

キーボード操作も、マウス操作も無くて、処理としては色の監視とその条件用の演算と出力です。

元のスクリプトを簡潔にして画面キャプチャのために作成した切り分けのためのスクリプトから
更に演算処理を全部抜くと

OPTION EXPLICIT, TOPSTOPFORM
OPTION LOGFILE = 3
OPTION LOGPATH = ".\"
logprint(TRUE)
dim gid = getid("hoge")
ACW(gid,0,0,WINDOW_SIZEx,WINDOW_SIZEy)
for id = 0 to 11
FUKIDASI(x+","+y x, y)
saveimg("debug_"+ (id) + ".bmp",gid,,,,,,,IMG_FORE)
print x+","+y
sleep(2)
next

こんな感じ。saveimg してるところで、本来は色の識別してます。
この FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。

手元の PC だと再現しないんですよねぇ^^;
なにか怪しい箇所があれば、ぜひ教えてください。

46デフォルトの名無しさん2018/10/13(土) 23:52:53.09ID:4mi4Ve5O
再現しないならその友人が怪しいだろ
本当に友人なんですかね

47デフォルトの名無しさん2018/10/13(土) 23:55:44.28ID:M9OwAK6A
>>45
で、結局どう動くの?

ワープしてデスクトップから消え失せるの? 超高速で縦横無尽に動き回るの?

48デフォルトの名無しさん2018/10/14(日) 00:39:58.87ID:TOccAP8t
>>45
昨日もうひとつのUWSCスレでふきだしの話してた人?

FUKIDASIのxとyってどうやって算出してるの?
元のスクリプトのほうでループのなかでxとyの値が更新されて
FUKIDASIの位置が変わってるんじゃないの?
それ以外吹き出しが動く要素がなさそうにおもうんだけど
それとUWSC以外を疑うなら画面全体を動画キャプチャしたら?

49452018/10/14(日) 07:47:15.28ID:pryZUL3Y
もう一つの方の人とは別です。くちばしの形状は気にしてないんでw

FUKIDASI の xy は色識別の座標です。
画面にタイル状に並んだ画像の位置情報を算出してます。
イメージとしては、ブラウザ上に同じフォーマットの画像が12個並んでいて、その特定座標の色を抜き出している感じです。
12箇所の基点座標の割り出しと、それに追加する相対座標を追加する計算をしています。
で、ぞの位置がずれていないか、FUKIDASI 出してざっくり位置確認をしたんですが、
ループの中で撮った12枚の画像で、FUKIDASI が本来の位置に無いものがある。
何度か取り直してもらったんですが、都度少しづつズレるんです。
ズレは、ちゃんと計測してないけど、xy それぞれの方向に 1 から 5 px 程度。
ループ中全部ズレるんではなくて、途中でズレるとか、最初にズレてそのままとか。
今の所、ループ内で複数回ズレた事は観測できてません(まぁ試行回数もそれほど多くないですけど)

IMG_FORE なんで、「stop ボタン」も写り込んでるんですが、そっちもズレるんでウィンドウが動いてるって判断してます。
まぁ、何が起きてるか全然分からんので、次の切り分けでは、画面全体のキャプチャ撮ろうとは思っていますが。。。
UWSC 以外は今の所疑ってませんでした。ちょっと方法を考えてみます。

50デフォルトの名無しさん2018/10/14(日) 07:48:36.02ID:pryZUL3Y
>>46
怪しいよねぇ^^;
リモートで接続させろって言ってるんだけど、見られたくないそうで。。。
めんどいwww

51デフォルトの名無しさん2018/10/14(日) 10:17:34.99ID:TOccAP8t
>>49
>>45では FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。と言ってるのに
>>49ではウィンドウが動いてるって判断してますと言ってるし結局何がずれてんの?

ずれが1〜5pxなら人間が動かしてるとは考えづらい
そうするとスクリプトの座標部分が変化してるんじゃないかと疑うんだけど
肝心の座標を算出するスクリプトが書かれてないからなんとも言えない

なので要領を得ないから提案としては
fukidasiなりpeekcolorに使うxとyを定数で定義
ウィンドウとfukidasiの座標を監視して変化を検知したらログに残して
ACWで元の位置に戻してからpeekcolorを実行するようにしてはどうだろう

52492018/10/14(日) 11:26:33.14ID:pryZUL3Y
ウィンドウが動いてるんで、座標指定して表示している FUKIDASI がキャプチャ上でズレているって事です。
FUKIDASI には座標を表示しているので、FUKIDASI の座標と計算は正しいと思う。

移動を監視するのが良さそうですね。
ありがとう!

53デフォルトの名無しさん2018/10/14(日) 15:51:35.35ID:flalwaHT
>>49
えーと、fukidasiもデバッグ用ということ?

>>43でも書いたけどウインドウ基準で相対位置決められるならMOUSEORG使えばって感じなんだけどなんかダメな要件があるので?

54デフォルトの名無しさん2018/10/14(日) 16:45:43.47ID:pryZUL3Y
FUKIDASI はデバッグ用途ですね。
元々原因不明な色の抽出がうまくいかないことがあったんで、切り分けの一環として採用しています。
そのおかげで、ウィンドウが少し移動していることが判明しました。

MOUSEORG はあまり使用したくないって程度の理由で採用してません。
今回みたいに原因不明の時に人を疑いたくなるんで、できるだけ人の操作から切り離して実行しようかと。

55デフォルトの名無しさん2018/10/14(日) 21:22:37.96ID:flalwaHT
>>54
よく分からないけど使う側を信用できないなら、なおさら動かされてもリカバリできるようにするものでは?

てかウインドウが動く原因は実のところ色々ある(UWSC外)
・画面の解像度変更、最大化以外の手段でフルスクリーン、パワポのプレビュー
・タブレットなら縦横動かした時
・デスクトップのウインドウテーマ変更
・グラボのドライバアップデート
これをやってないか、やったらいかんとか再起動せよと友人に言い含めるのとスクリプトで対策するのはどっちが楽?
(まぁ一部は再起動した方がいいと思うが)
まぁやりたくないならどうぞご自由に、自分からは特に強制するつもりはないのでね

56デフォルトの名無しさん2018/10/14(日) 23:41:27.00ID:bd+C6J+S
質問です

(1)画像1を認識したらスタートして画像4をクリックするマクロA
(2)画像2を認識したらスタートして画像2をクリックするマクロB
(3)画像3を認識したらスタートする画像3をクリックするマクロC
(画像1〜3が同時に表示されることはなく、全てのマクロを常に起動しておきたい)
このようなプログラムを作成したいのですが、お知恵を貸してください

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11135040611
ここを参考に作成してみたのですが、(1)のマクロしか動作してくれません
UWSC初心者用スレ 	->画像>9枚

57デフォルトの名無しさん2018/10/14(日) 23:52:58.88ID:flalwaHT
>>56
IFBの括りが悪い
すべてが最初のIFBの中なのでその画像がある時以外は何も動かない

58デフォルトの名無しさん2018/10/15(月) 02:43:39.99ID:9JA9/qag
たしかに1.bmpの1行とENDIFの1つを消したら2と3(4の画像が出たら4も)が動作しました

あとは添付の画像のように修正してみました
一見無事に動作しているのですがループが早すぎて気づいていないだけ…?
UWSC初心者用スレ 	->画像>9枚

59デフォルトの名無しさん2018/10/17(水) 01:08:31.52ID:rmV2ISLZ
CALLでの呼び出しについて教えてください

「マクロ1→マクロ2」の場合、マクロ2がループしていたらマクロ1に戻りませんよね?
いまはマクロ2の最後にマクロ1に戻るようにCALLを使用して、
「マクロ1→マクロ2→マクロ1」という処理にして動作させているのですが、
「マクロ1→マクロ2→マクロ1」の他に「マクロ3→マクロ2→マクロ3」や
「マクロ4→マクロ2→マクロ4」というように、呼び出し元に戻すにはどうすれば良いのでしょうか
それとも「マクロ1→マクロ2-1→マクロ1」、「マクロ3→マクロ2-3→マクロ3」のように別に作らないといけないのでしょうか

60デフォルトの名無しさん2018/10/17(水) 01:17:26.70ID:hVOihSbt
沢山のマグロがどうした
まあ落ち着け

61デフォルトの名無しさん2018/10/17(水) 05:11:55.48ID:UKmGEDWi
>>59
>マクロ2の最後にマクロ1に戻るようにCALL
勝手に呼び出し元に戻るのでCALLはいらない

というかCALLは本来インポート/インクルードに近いもので関数のように再利用するものじゃない
処理をまとめて関数化するように、関数群をまとめたファイルをCALLすることで後は好きなように関数呼び出しが出来るようになる
その際関数化してない部分がcall時に実行されるから外部スクリプトの呼び出しのように使うことができるというだけ

a.uws
public INT_A
INT_A = 1

function A()
INT_A = INT_A + 1
fend
----
main.uws
call a.uws // <-a.uwsc全体が読み込まれINT_Aの宣言と初期化だけ行われ終了する(関数化部分は自動では実行されない)

A() // <-a.uws内の関数はmain.uws内で作ったのと同じようにいつでも使える
print(INT_A) // 同様にa.uws内のpublic変数は自由にアクセスできる(G_IMG_Xみたいに)
----

仮にA()の中でループ処理をしていて抜けたい場合は単にEXITで関数を終了すればいいだけのこと

62デフォルトの名無しさん2018/10/17(水) 22:56:42.50ID:rmV2ISLZ
>>61
ありがとうございます
メインを作って各パターン毎にCALLで呼び出す…って形でしょうか

ゲームでマクロを勉強しているのですが、添付した画像のようなプログラムを作成してみました
宝箱の位置は固定ですがそれぞれクリックする場所が異なるため、このような記述にしてみました
問題なく動作はするのですが、
これだとひとつのuwsで行う処理が多すぎて実行されるのにタイムラグが発生してしまいます
何か良い改善策がありましたら教えてください


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

63デフォルトの名無しさん2018/10/17(水) 22:59:23.31ID:rmV2ISLZ
アップする画像はこちらでした…

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

64デフォルトの名無しさん2018/10/17(水) 23:42:45.42ID:hVOihSbt
>>63
そじゃない、そういうことじゃねぇんだよ兄ちゃん・・・
UWSCの場合、CALLはメインスクリプトだかの先頭辺りに列挙しておく。

CALL 戦闘開始.uws // 関数「戦闘開始」を定義
CALL 戦闘終了.uws // 関数「戦闘終了」を定義
CALL 回復.uws // 関数「回復」を定義


という風にな。
CALLで参照するスクリプトは最低限、必要な変数や関数定義にとどめておく。
ちょうど他の言語で言うライブラリやモジュールの役割に当たる。

これでスクリプト全部がオンメモリにロードされる。
後は、メインスクリプトで定義した戦闘開始()、戦闘終了()、回復()を好きなように呼べ。
IFの中でCALLは使わない。

WHILE TRUE
 IF CHKIMG(略
  戦闘開始()
 ENDIF
 :

65デフォルトの名無しさん2018/10/18(木) 06:45:36.30ID:9W5rJRye
CALLってそういう意味だったんですね…
今回の添付した画像のような感じであっていますか?
FUNCTIONはRESULTがどうたらこうたら出てきたのと>>61がまだ理解できなくて手こずってます

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

66デフォルトの名無しさん2018/10/18(木) 08:54:31.37ID:Dp9NcRGV
まあ、要するにcallの位置にファイルの中身を丸ごとペーストするだけだからね
合っているかはまず期待通りに動いたのか、君にしかわからない
理解できないとか手こずってるとか言われても困る
こう書いたら何が起きた、期待通りにならない、こうしたいと具体的に書いてくれ
そして出来ればコードはコピペしてくれ、画像貼られても見にくいしこっちで動かせねーから
ついでに言えばいつか消えるので後から見る人の参考にならない
(差し支えない範囲である程度簡略化して実際に動くのが望ましい)

あと理解出来てないままいきなり組み込まない、問題が複雑化するよ
簡単なコードでfunctionの機能だけ、callの機能だけまずは確認しよう
その際、最初はchkimgみたいな特殊な動作する関数は使わない方がいい
(動かなくてこれ変ですかって書き込まれても画像や操作対象がないと再現できないから)

まあ、長々書いてしまったけどプログラム初心者なら躓くのは普通なので色々試してくれ

67デフォルトの名無しさん2018/10/19(金) 02:45:04.72ID:TPvM9BLe
前回コードを記載して書き込みしたら、エラーが出て書き込めなかったので画像でアップしてました
zipにしてアップしてみました
https://17.gigafile.nu/1118-c64d3df20a4c37dbcd375a2808db916f7

実際>>63でも期待通りの動作はしており、CALLの指摘を受けて改めて>>65のように修正しても期待通りの動作はしています
個人的に現状で残る問題はメイン.uwsでループする箇所が多すぎて
>>65で言うと戦闘開始.bmpが表示されてるのに画像認識が遅れてしまうという点です
1つのuwsに全てを詰め込んでいたので遅れが出てしまうのかと思い
CALLを知ったのですが、結局これでも遅れることに変わりがなかったです

ただ>>61の記載されたように、戦闘開始.uwsの方に
FUNCTION 戦闘開始
目的の処理
FEND
として、メインを動かしたら「戦闘開始.uwsにRESULTが無い」とポップアップが出てきて動作がスタートしませんでした
そこで
PROCEDURE 戦闘開始
目的の処理
FEND
にしてみたら期待通りの動作はしているのですが、違いがわからずこれで問題ないのだろうか?ということでした

68デフォルトの名無しさん2018/10/19(金) 09:01:05.68ID:tiAvbHs0
つまり今の問題は
・スクリプトの動作が遅い(遅く感じる)
・functionとprocedureの違いが分からない
の二点ってことね

一つ目の問題はループ内でifを独立させているせいで、毎回頭から最後まで全てのif条件が働いている
つまり同時には一つしかヒットしないのに律儀に全部の画像を判定しようとして空振りしてので遅くなっている

対策は一つ目をifb、次以降をelseifにして最初のifbのブロック内に収める
そうするとn個目の処理した後、以後のifは飛ばす構造になる(そしてwhileでまた最初から判定)

##ifとifbの違いや動作を理解しよう##

応用としては頻出するものを最初に持ってきた方がトータルではやや早い

ただし結局はifbブロック内に大量にelseifでのchkimgがある時点で遅くなっていく
これはそもそもゲーム構造的に同時に判定すべきでないものを全て詰め込んでいるせい
簡単に言うとタイトル画面で戦闘開始の判定をしても意味がないしクエスト画面でタイトル画面のログインボタンの判定をしても意味がないよね

これも対策は出来るが長くなるのでヒントだけ
・まずはシーン(タイトル、クエストなど)を判定する為のメインループを作る
・各シーンごとの操作(画像認識)をまとめてループにする

ループ内というかifbブロック内になるべく空振りさせないように構造化させるのがポイント
これでも遅く感じる場合には、シーン内の画像認識をifbによる順次処理ではなく、スレッドによる並列処理にする必要がある
が、まあそれはまたやってみて遅いとか、スレッドやってみて詰まったら質問してくれ

次にfunctionとprocedureだけどこれは単に>>61では適当に構造のイメージで書いたのでresult書き忘れてるだけ
余計な混乱させてしまったなら悪いけど、正直に言えばそんなことで詰まるとは思いもしなかった…マニュアルとか見てる??
で、resultが何なのかはヘルプなりGoogle先生に聞いてもらうとして、多分懸念してる動作速度はどっちでも大差ない

69デフォルトの名無しさん2018/10/19(金) 13:46:23.05ID:qHVv99vL
>>67
スクリプト見たんだけどCHKIMGとCHKIMGXが混在してるのはこの通りであってるの?

>>67の切り分けによると戦闘開始関数だけで時間が掛かってるってことだよね
どこで処理に時間が掛かってるかGETTIMEで計測したらどうか?
たぶんCHKIMGかCHKIMGXだとおもうんだけど
まずは戦闘開始.bmpが表示されたらPrintでなにか表示させるとかして
処理を小さく区切って満足行く結果が出たら次の処理につなげてという風に
問題を細かく見てったほうがいい
そこがクリアされてるなら
「戦闘開始.bmpが表示されてるのに画像認識が遅れてしまう」こんなことにはならない

まず戦闘開始だけを満足に動かすことを考えたほうがいい

70デフォルトの名無しさん2018/10/19(金) 17:35:14.14ID:TPvM9BLe
>>68
つい先日マクロについて知って、下記のHPを読みながら1つの問題が解決したら都度次へって感じでやってます
https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a
まずゲーム内のどこでマクロに任せるべきなのかからスタートしてるのと、
プログラミングの知識がないので手探りになってしまっているのは申し訳ないです

>同時に判定すべきでないものを全て詰め込んでいるせい
ここは理解しているのですが、どこでどう判定させて区切るべきかわからずぐちゃぐちゃになってるのだと思います
・ダンジョン1で歩いて宝箱を回収していく
・ダンジョン1で歩き回れば敵と遭遇し戦闘が開始される
・戦闘が終わればリザルトがある
以上のようにダンジョン1で宝箱を探している間に敵は出てくるので戦闘開始と戦闘終了は必要なので、メイン.uwsの記述があのようになりました

(1)ダンジョン1を宝箱を回収しながら自動で踏破
(2)途中で敵に遭遇したら自動で戦闘開始、戦闘を終えたら(1)の続きに戻る
ちなみに最終的にはこのようにできれば良いなと思ってはいるんですが、まだまだ遠い未来です…

>>69
CHKIMGとCHKIMGXが混在しているのは、CHKIMGで認識できない画像だけをCHKIMGXで作成してます
ちなみにマクロは現状正しく動作しており、それぞれのマクロだけ動作させるなら開始も機敏です
説明が下手で申し訳ないのですが、>>68の言葉を借りるなら全てをセットにしたメイン.uwsの作り方が下手で、空振りが多いのだと思います

71デフォルトの名無しさん2018/10/19(金) 18:26:33.13ID:QAno5ZfD
どんな場合があってどの様な条件(画像、回数など)が必要なのか紙に描いて整理した方が良いですよ
uwscというより設計の問題です

72デフォルトの名無しさん2018/10/19(金) 18:28:28.54ID:5Sybigz9
>>70
すまん、ダンジョン1.uws見てなかった
これはまずいわ、メイン.uwsで宝箱1〜6の画像検索してどれか見つかったら
宝箱()を呼び出してるけど、そこでまた宝箱1〜6の画像を全て検索してるじゃん
宝箱1を見つけたら宝箱1を開封する関数だけを呼び出さないと

あとメイン.uwsで戦闘開始と戦闘終了を画像検索してるけど
戦闘が始まってもないのに戦闘終了の画像を検索する必要ある?
言い方を変えると、戦闘終了してるかチェックするのは
戦闘開始を見つけてからでいいんじゃない?
その辺の動きももう一度整理したほうがよさそう

73デフォルトの名無しさん2018/10/19(金) 18:56:25.14ID:tiAvbHs0
>>70
まあとりあえず色んな人からアドバイス出たことだし、少し手を動かして頑張って
ちなみにやろうとしてるほぼ全自動でゲーム進めるってのは初学者にはかなり難しいテーマだよ、もはやゲーム設計するのと大差ないからね
コードだけ眺めてても解決しないので絵にしたりしないと無理じゃないかな

74デフォルトの名無しさん2018/10/19(金) 23:37:36.28ID:QpJkHdff
>>73
>全自動でゲーム進めるってのは
>初学者にはかなり難しいテーマ
同意

単純なクリック連打じゃなくて
ゲームの内容を判断しながら分岐させるのは
ゲームのAIレベルだから難しい

75デフォルトの名無しさん2018/10/20(土) 00:19:23.65ID:6OPiVTnP
今回も修正したuwsのファイルをアップしてみました
無事に動作はしていますが、変なところがあればご指摘いただければと思います
https://32.gigafile.nu/1027-bf28bd15518fed74ae750f229487ea8c8

悩み中.uwsというファイルがありますが、
同じ画像を認識したとしても処理は異なるようにするにはどうしたら良いのでしょうか
現在はSLEEPを使用して1回目の表示と2回目の表示の間隔を空けて強引に処理させてます

>>71
ある程度は整理できてるのですが、処理を開始するためにどこの画像を認識させようかの判断ができないんですよね
ダンジョンの背景とかだと使い回しで別のダンジョンと間違えられても困るし…

>>72
書き込んだあとちょうどその部分に変更を加えていました
おかげで処理は高速になったと思われます…(実感はある)

>>73
全自動というのは無理だと思っているので、移動以外は自動化できないかなって思ってます
一応今のところ8割はできてると思います

76デフォルトの名無しさん2018/10/20(土) 00:57:49.14ID:69MHWzaM
>>75
>同じ画像〜
させたい処理が違うなら何かが違うんでしょとしか言えないが
画面の見た目類で判断しにくく、仮に交互に繰り返すならカウンタ/フラグ変数を持って切り替えるのはどうかな?

これに限らず全てchkimgで判断させるのは無理があるはず

77デフォルトの名無しさん2018/10/20(土) 01:01:01.66ID:90xm7L12
>>75
ボスの画像を認識した回数をカウントして処理を分ければいいんじゃない
で、パターンを戻したくなったらカウントをリセットすればいい
行動パターンがあまりにも多かったら大変だけど

ここからは今は重要なことじゃないし
処理が早くなるわけではないからわからなかったらスルーしてくれ

1つの行動を1つの関数にするのはいいんだけどファイルを分ける必要あるかな
例えばダンジョン1宝箱3とか他のダンジョンなりスクリプトで再利用する?
それぞれのファイルで毎回全く同じCALLや変数の初期化を
何度も書くのは無駄だし間違いの元になることもある
変数のスコープやProcedureやFunctionや値渡しについて知ればもっとよくなるとおもう

78デフォルトの名無しさん2018/10/20(土) 01:01:35.72ID:90xm7L12
しまった、また長文書いてる間に先越されたw

79デフォルトの名無しさん2018/10/20(土) 03:46:56.86ID:I8y7CiS+
一部のbotが非常に高度なものであるのは間違いないけど。
ここの連中が作った全自動(笑)マクロなんてゴミがほとんどじゃないの。

80デフォルトの名無しさん2018/10/20(土) 09:18:37.52ID:q084eIUp
とゴミが申しております

そういうのは本スレでやってね

81デフォルトの名無しさん2018/10/20(土) 10:13:45.64ID:ac1pPfcT
たかがUWSC作ったマクロしか組めない程度の人間のマクロ技術がゲーム制作やゲームAIと同じとはとても思えないわ。
まあ雑魚同士で自画自賛しあってればいいんじゃない。

82デフォルトの名無しさん2018/10/20(土) 10:25:26.46ID:q084eIUp
といちいち初心者スレ監視してる雑魚が申しております
自称天才意識高い系プロは本スレで暴れててね

83デフォルトの名無しさん2018/10/21(日) 03:47:50.14ID:gVw834nh
初心者スレでこれは草

84デフォルトの名無しさん2018/10/21(日) 11:27:18.44ID:ugGKSKgn
寂しがり屋さんなのかな?
本スレそれほど過疎ってるわけでもないのに
スレ分けてよかったかな今のところは

85デフォルトの名無しさん2018/10/22(月) 00:09:48.52ID:rGA5crV5
https://17.gigafile.nu/1029-dbd9d6de3c7c9d32c382d1be973850e30

カウントについて調べていろいろやってみたのですが、
「ボス戦ターン1()」を繰り返したり、
「ボス戦ターン2()」まで行っても「ボス戦ターン1()」に戻ったりしてしまいます
カウントの処理について教えていただきたいです

それと、最後の部分にある「CALL」ですが
http://kobuji.me/tips/call/
ここを参考にしてみたのですが、このCALLの使い方はあっているのでしょうか?
(前回一番上に記載するやり方だと教えてもらいましたが…)

86デフォルトの名無しさん2018/10/22(月) 00:42:44.65ID:ktdTMJw1
>>85
カウント以前の問題が多すぎる
インデントを入れると自分がどれだけ変なコード組んでるかちょっと分かるかも?

87デフォルトの名無しさん2018/10/22(月) 01:12:45.93ID:rGA5crV5
>>86
申し訳ないのですが、他のサイトを参考に組み立てたもので、そこから試行錯誤してるのですがうまくいかないのです
いまも随時修正は加えているのですが、問題の箇所を具体的に教えていただけるとありがたいです

88デフォルトの名無しさん2018/10/22(月) 01:15:13.19ID:ktdTMJw1
>>87
>>56-86に書いてある

その上で問題が認識しづらいのは「インデントのせいかも」というアドバイスをしたので、まずはインデントを入れてみてくれ

89デフォルトの名無しさん2018/10/22(月) 01:17:20.48ID:rGA5crV5
>>88
どこにカウントのことが書いてあるのでしょうか?

90デフォルトの名無しさん2018/10/22(月) 01:38:22.25ID:ktdTMJw1
>>89
カウント以前の問題だと>>86に書いているよね
カウントの処理が変なんじゃなくて、依然として最初期から指摘してるIF/IFBの書き方に問題があるということ

まずそこを直してくれないと次のステップに進むアドバイスは自分からはできない

91デフォルトの名無しさん2018/10/22(月) 02:06:06.56ID:rGA5crV5
教えを請う立場で申し訳ないですし、自分で問題解決まで知識を蓄えろというのはごもっともなのですが、
自分なりにできてるところはこちらで質問しておりませんし、いまも試行錯誤したうえで行き詰まってまして、
先ほどアップしたファイルはその試行錯誤の末、ぐちゃぐちゃになってるのは自分でも理解しています
ただ、自分なりにいろいろ手を尽くしても解決することができなかったので、
できれば具体的な解決策もしくは参考になるページを提示していただけると助かります

今回で言うとカウンタを利用して
カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ
という形にしたいのですが、カウントと画像認識を組み合わせた時の書き方、条件分岐の策がわからず、
検索しても目的の処理について出てこないので困ってるんです

92デフォルトの名無しさん2018/10/22(月) 02:12:15.48ID:ktdTMJw1
>>91
だから具体的な解決策が「インデントを入れる」なんだけど
ただ、それだけでこの数日どれだけ無駄にしてたか理解できると思うよ

93デフォルトの名無しさん2018/10/22(月) 02:18:15.10ID:rGA5crV5
>>92
それなら参考にしたいので試しに自分がアップしたファイルで、
>>92さんのインデントを入れたものを見せていただきたいです

94デフォルトの名無しさん2018/10/22(月) 02:24:04.66ID:ktdTMJw1
>>93
ま、口でいうだけじゃ分からんこともあるだろうということで今回は特別にインデントを入れてあげよう
https://paiza.io/projects/1R9_xdNXduPIL2T-pXM42Q

これを見ておかしいところが分からない? それはちょっと困る展開だが…どう?

95デフォルトの名無しさん2018/10/22(月) 02:44:54.75ID:ktdTMJw1
>>91
さてここまでやってしまったからについでに言うと
>カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
>カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
>カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ

まぁこの辺は経験とかないとこうなっちゃうのかなと思うが、簡単にすると以下だよね
>カウントが0からnまで繰り返し、Aの画像を認識した時、カウント別の処理実行後、カウントを+1して次へ

これをプログラムしやすく整形すると…
>カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1

書くべきコードのイメージも大分違ってくるでしょう

96デフォルトの名無しさん2018/10/22(月) 03:37:01.47ID:rGA5crV5
>>94-95
ありがとうございます

にっちもさっちもいかず、ぐちゃぐちゃにしてしまったファイルをアップしたせいで、
より大きな誤解を招いてしまったところがあると思います…

https://22.gigafile.nu/1029-d56268c68a387a2a9e4db0865ff3cf87f
いま試行錯誤していたファイルをアップしてみました
ちょうど>>95あたり?に近かったのではないかと思われますが…
ターン1→2→3→3→1という風に書いてあるにも関わらず、
ターン1→3→2、1→3→1、1→2→3など行動が飛ばされる時があります
戦闘開始.bmpを画像認識しなければ次へ進まないはずだと思うのですが、
異なる制御文でも入れてしまっているのでしょうか…

97デフォルトの名無しさん2018/10/22(月) 04:28:57.69ID:ktdTMJw1
>>96
肝心のカウントを判定してないんだから順番通りになるわけもない
そもそも…
> カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1
↑に近づけたつもりならwhileと画像認識はひとつ
カウントのif文で分岐を書けばいいだけ

同じ判定がいくつも出てくるのは構造がおかしいと指摘したはずだよね

てかこれだけ言ってもインデント無視する限りもうアドバイスしないのでそのつもりで

98デフォルトの名無しさん2018/10/22(月) 04:36:33.96ID:rGA5crV5
>>97
勘違いなさってるようなので訂正させていただきますが、
>>96のファイルは>>94-95を拝見する前に自力で作成していたものです

99デフォルトの名無しさん2018/10/22(月) 04:48:50.98ID:iCVScRLH
まず状況整理のためにインデントをいれろというアドバイスがあったのに
インデント入れてみてくれはさすがに乱暴だろ
インデントについて調べて理解したの?
IF文におかしいところがないか確認したの?

100デフォルトの名無しさん2018/10/22(月) 05:00:05.30ID:rGA5crV5
>>99
>>94を見ても一瞬で理解できない猿で申し訳ないとしか言えません
>>39を見て、どんなものかと始めたばかりなのでプログラムの記述式等に学が浅く、
言われてることを理解するのにも四苦八苦ですし、周りからすれば幼子に6+6の計算させたら指が足りないからわからないって言ってるようなものなのは申し訳ないです

101デフォルトの名無しさん2018/10/22(月) 05:35:05.90ID:anSnU/H2
ID違うけど>>99です
>>100
>>99に対して思いもよらないレスが返ってきたので2つ確認させてください
1.あなたは日本人ですか?
2.日本語苦手ですか?
煽りとかじゃなくてマジで中国人とかが日本のゲームやってbot使ってたりするので確認です

102デフォルトの名無しさん2018/10/22(月) 16:04:47.06ID:qAlmLxF7
初心者用スレで何言ってんだこいつ

103デフォルトの名無しさん2018/10/22(月) 17:38:03.95ID:8Ffx9AaH
インデントを入れるとどこで処理が区切られているか、どこで処理がループされているかがはっきりするのでインデントを入れましょうって話だろ

初心者相手に「インデントを入れればわかる」で投げっぱなしはそらキツいっしょ
インデントの入れ方の規則だってわからんだろうし

104デフォルトの名無しさん2018/10/22(月) 18:08:33.49ID:X1R8clvb
ここはuwscの初心者スレであってプログラミングの初心者スレではないからな

105デフォルトの名無しさん2018/10/22(月) 18:13:22.50ID:FNc64wsF
ゲームマクロなら画像認識とマウスキーボード自動化あればいいんだから言語なんてなんでもいいんだけどね。
開発環境しっかりしてるVBとかのほうがいいような気もする。

106デフォルトの名無しさん2018/10/22(月) 19:00:12.21ID:QPF2Uwab
>>104
了解。次スレで検討する。
「プログラミング初心者のためのUWSCスレ」
で、よろしいか?

107デフォルトの名無しさん2018/10/22(月) 19:36:21.25ID:ofo6/h19
>>100
多くの人にとってはインデントがあったほうが見やすいでしょうから
今インデントをしていないのは、単にインデントするのが面倒なのではないかと思います

多くのエディタでは
複数行を選んだ状態でTABを押すとインデントが深くなり
インデントのある行を複数行を選んでSHIFT+TABでインデントが浅くなるという機能があります
(※エディタによってはキー割り当てが違うこともあります)

今これというエディタを使っていないのであれば
Mery (テキストエディタ)
https://www.haijin-boys.com/wiki/
を使ってみてください。

このエディタは最初から 表示→表示モード に最初からUWSCが含まれています。
なので、UWSファイルを読み込んだだけで自動的に見やすいカラー表示をしてくれます。

ツール→オプションで最初にここだけ設定しておくと見やすいだろうという箇所は
「基本」タブで
 「タブの桁数」で1タブでなん文字分字下げするか設定できます。
 タブより空白がよければ「タブの代わりに空白を挿入」にチェック
  タブの代わりに空白でのTAB/SHIFT+TABによるインデントの増減が効きます
「基本」タブで
 見やすいテーマを選択

「記号」タブで
 タブ表示、半角空白表示、全角空白表示 にチェックを入れる

なお、自分が常用しているのは秀丸ですので、
このMeryエディタを広めたいとかいう意図ではありません。

108デフォルトの名無しさん2018/10/22(月) 19:41:11.57ID:ofo6/h19
>>107
×「基本」タブで
  見やすいテーマを選択

○「表示」タブで
  見やすいテーマを選択

109デフォルトの名無しさん2018/10/23(火) 00:50:11.50ID:UxSE6/em
自分のせいでいろいろと申し訳ありません
インデントについては普通にメモ帳でやってるのもあり、
一部HPではインデントをつけてないところもありコピペしてたので動作してから直そうと思ってました

https://11.gigafile.nu/1030-dd4e47c88d4952d781d2d600256473315
再度修正してみました
「悩み中.uws」は目的の動作をしてくれるようになりましたので「ボス戦開始.uws」に名称を変更しました

一応動作はしてくれているのですが、正しい解決策がわからない部分もあります
行動が飛ばされてた原因がおそらく戦闘開始.bmpの画像を認識するスピードが速すぎて、
行動が終わる前に画像を再度認識してカウントをプラスしていたようで、
このやり方は違うとは思いつつもSLEEPで強制的に認識を止めてます

次にカウントで「戦闘開始.uws」についても修正してみました
こちらも自分の思ったとおりの動作はしてくれているのですが、
1ターン目は完璧ですが、その後に戦闘終了の処理に移行してしまうので、
当然ながら2ターン目は動作しないということに…
「戦闘終了.uws」はメインで画像認識させた方が良いですかね…

>>107
Mery調べてみます

110デフォルトの名無しさん2018/10/23(火) 01:54:05.77ID:A3TfahIO
>>109
気づいたところをまず指摘しておきます
ボス戦開始がどういうタイミングでどこから
よばれるか今回アップされた中からは判断できませんが
当然メインからたどって何かのタイミングで呼ばれるかたちになるのだろうと思います。
ということはそこから メイン.uws をCALLしてしまうと
らどんどん深いネストに入って無限ループに陥ってしまいます
EXITEXITに達することはないはずです

111デフォルトの名無しさん2018/10/23(火) 01:57:20.66ID:A3TfahIO
単純化すると次のような状態です
破線内をCALL_TEST1_MAIN.UWS,CALL_TEST2.UWSとして保存し
CALL_TEST1_MAIN.UWSを実行してみてください
−−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST1_MAIN.UWS
STOPFORM( TRUE, G_SCREEN_W-400, 0)
LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400)
PRINT "CALL_TEST1_MAIN.UWS ファイル先頭"
CALL CALL_TEST1.UWS
SLEEP(2)
PRINT "CALL_TEST1_MAIN.UWS CALL FUNC_MAIN1"
FUNC_MAIN1();
PRINT "CALL_TEST1_MAIN.UWS ファイル末尾"
−−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST2.UWS
PRINT "CALL_TEST2.UWS TOP"
FUNCTION FUNC_MAIN1()
 RESULT = 0
 SLEEP(2)
 CALL CALL_TEST1_MAIN.UWS
 PRINT "FUNC_MAIN1 END"
 EXITEXIT
FEND
PRINT "CALL_TEST1.UWS ファイル末尾"
−−−−−−−−−−−−−−−−−−−−−−−

112デフォルトの名無しさん2018/10/23(火) 02:00:25.52ID:A3TfahIO
訂正

単純化すると次のような状態です
破線内をCALL_TEST1_MAIN.UWS,CALL_TEST1.UWSとして保存し
CALL_TEST1_MAIN.UWSを実行してみてください
−−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST1_MAIN.UWS
STOPFORM( TRUE, G_SCREEN_W-400, 0)
LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400)
PRINT "CALL_TEST1_MAIN.UWS ファイル先頭"
CALL CALL_TEST1.UWS
SLEEP(2)
PRINT "CALL_TEST1_MAIN.UWS CALL FUNC_MAIN1"
FUNC_MAIN1();
PRINT "CALL_TEST1_MAIN.UWS ファイル末尾"
−−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST1.UWS
PRINT "CALL_TEST1.UWS TOP"
FUNCTION FUNC_MAIN1()
 RESULT = 0
 SLEEP(2)
 CALL CALL_TEST1_MAIN.UWS
 PRINT "FUNC_MAIN1() 終了"
 EXITEXIT
FEND
PRINT "CALL_TEST1.UWS ファイル末尾"
−−−−−−−−−−−−−−−−−−−−−−−

113デフォルトの名無しさん2018/10/23(火) 02:07:54.16ID:mm3zor/C
次のようなかたちになるべきかと思います
CALL_TEST2_MAIN.UWS,CALL_TEST2.UWS を保存し、CALL_TEST2_MAIN.UWSを実行してみてください
−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST2_MAIN.UWS
PRINT "CALL_TEST2_MAIN.UWS ファイル先頭"
STOPFORM( TRUE, G_SCREEN_W-400, 0)
LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400)
CALL CALL_TEST2.UWS
WHILE 1
 SLEEP(1)
 PRINT "CALL_TEST2_MAIN.UWS FUNC_MAIN1() 実行"
 FUNC_MAIN1();
 IFB BTN_NO = MSGBOX( "もう一度実行しますか", BTN_YES OR BTN_NO) THEN
  MSGBOX( "OK後20秒で終了します")
  // EXEIEXIT してもいいが抜ければ自然に終了する
  BREAK
 ENDIF
WEND
PRINT "CALL_TEST2_MAIN.UWS ファイル末尾"
SLEEP(20)
−−−−−−−−−−−−−−−−−−−−−−−−
//CALL_TEST2.UWS
PRINT "CALL_TEST2.UWS ファイル先"
FUNCTION FUNC_MAIN1()
 PRINT "FUNC_MAIN1() 関数先頭"
 RESULT = 0
 SLEEP(1)
 PRINT "RETURN TO MAIN"
 PRINT "FUNC_MAIN1() 関数末尾"
FEND
PRINT "CALL_TEST2.UWS ファイル末尾"
−−−−−−−−−−−−−−−−−−−−−−−−

114デフォルトの名無しさん2018/10/23(火) 02:27:59.59ID:poTZwO/U
>>109
…二文字か四文字半角スペースにしてくれ
書いてて見にくくない?

適宜sleep入れるのは普通のこと
何も指定しなかったら常に最速でプログラムは回っちゃうから、ボタンの反応や画面切り替えを想定したウェイトを入れるべし

従って後者もwhileの最後にターンとやらの切り替わる猶予を待たせたるか、ボタンが押せる状態か判定を入れてもいい
(もちろん組み合わせてもいい、二重操作防止のsleepと操作受付判定いれれば完璧)

115デフォルトの名無しさん2018/10/23(火) 03:09:10.20ID:UxSE6/em
Mery使いやすいですね

>>112
http://kobuji.me/tips/call/
>他のマクロを呼び出し現在のマクロを終了する
ここの部分を参考にしてみて、一応動作はしているのですが、
なんとなくそうだろうとは思っていたものの、やはり問題ありますよね

メイン→ダンジョン選択→ダンジョン1→ボス戦開始(→戦闘が終わったらメインに戻る)
>>72の書き込みから意識して深い階層に行くようにして、
流れはこのように考えているのですが、再度ドツボにハマってきました

今のところの自分が考えている問題点は以下です
・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る
・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る
・「戦闘開始」の2ターン目以降とをどうするか

>>114
普通のことだったんですね、それなら「ボス戦開始」のカウント処理は問題なさそうです
あとは2ターン目以降の問題ですが、どう判定させるか考えてみます

116デフォルトの名無しさん2018/10/23(火) 06:04:39.54ID:xet0u+mg
>>115
・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る
ボス戦開始の条件はボス画像を発見したら?
それとボス戦は戦闘開始.uwsを再利用できる?
戦闘開始.bmpを画像検索してるルーチンに組み込めないかな?
それができれば宝箱の判定をしたあとにExit入れればメインに戻れる

・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る
メインに戻るための条件を組み込めばできそう

・「戦闘開始」の2ターン目以降とをどうするか
どのキャラにどういう行動をさせたいのか
今の所1つのキャラに対して行動が1パターンしかないよね

117デフォルトの名無しさん2018/10/23(火) 07:56:13.12ID:poTZwO/U
>>115
>>61-66をよく読め

118デフォルトの名無しさん2018/10/24(水) 03:06:06.77ID:JPOPYXjO
>>115

例に出したようなかたちだったら問題があるというだけで
実際に問題があるかどうかは作り方次第です。

CALL おわり.uws
EXITEXIT
だとしても
−−−−−−−−−−−−−
//おわり.uws
FUKIDASI("おわります")
SLEEP(5)
FUKIDASI()
−−−−−−−−−−−−−
だとしたら何の問題もありません。
自分が呼び出されてる元を呼んでしまうので問題がある(可能性が高くなる)わけです

戦闘が終了したら「メイン.uws」に戻る
といういいかたの通り呼び出されたところに“戻る”べきであって
メインを呼んでしまっては戻るのではなく“潜って”しまいます。

前回よりもさらに単純化していうと

PROCEDER test_proc()
 test_proc()
FEND

という状態です
再帰呼び出しといいますが
test_proc()を呼ばずに抜ける条件がなければ無限ループになります

119デフォルトの名無しさん2018/10/24(水) 08:38:49.61ID:EHDjbV6E
再帰呼び出しや無限ループになるならまだいいが、uwscでそれやると行き着く先はスタックオーバーフローである

前にも書いたがcallのところに内容をコピペすると考えて、一度テキストエディタ上で実際にペーストしてみて
どうなるのか確かめて見たらいいと思う
※メインを上からなぞりcallの行をcall先の中身に置き換える

というか最終的に別スクリプトに分割するのは悪いことじゃないが、そもそも質問者が期待するような
動作が早くなったり制御が楽になるなんてことはなく逆にミスの温床にしかなってないから1ファイルに戻した方がいいかも?

120デフォルトの名無しさん2018/10/26(金) 11:32:57.00ID:KT8sz2lK
UWSCと言えば、お絵かきソフトをプロッター代わりにして
ドラゴン曲線を描いた覚えがある

121デフォルトの名無しさん2018/10/26(金) 12:14:58.57ID:rGWXcnDl
そういう使い方があったのか
目から鱗だな

122デフォルトの名無しさん2018/10/26(金) 12:35:28.21ID:Ho1Po0zE
ペイント使って最初にやったな

123デフォルトの名無しさん2018/10/26(金) 22:49:03.24ID:EeaDtgcV
面白いけどペイントソフトのスクリプト使った方が効率的

124デフォルトの名無しさん2018/10/27(土) 12:35:52.24ID:XTWU7dAT
2ヶ所クリックをctrlキー使えばいいかなーと思ってコード書いたけど、
どうしても上手くいかなくていろいろ調べたらタブで繋げばよいと知った
知らないことたくさんあるなー

125デフォルトの名無しさん2018/10/30(火) 12:54:19.69ID:wR+aWlcX
https://github.com/DoranekoSystems/ChkImgX_Extension

ChkImgX AutoItにも対応いたしました。

126デフォルトの名無しさん2018/10/30(火) 13:07:46.54ID:QwfsTk/G
なぜuwsc専用スレに他のアプリ対応を宣伝しにくるのか…ほんと頭おかしい

127デフォルトの名無しさん2018/10/31(水) 20:55:50.19ID:Gkg/z3xB
>>125
個人情報抜き取られたりウイルス感染したりしない?

128デフォルトの名無しさん2018/10/31(水) 23:58:01.63ID:qEtCZoW0
アップしてるのはただのスクリプトなので怪しいなら見てみればわかります。
外部と通信してることなど一切ないです。
ChkImgX.uwsとほぼ同じことをしてるだけですね。

129デフォルトの名無しさん2018/11/01(木) 09:05:29.68ID:97yVLdc+
>>127
構っちゃだめですよ

130デフォルトの名無しさん2018/11/04(日) 16:41:46.76ID:4y7rUrKd
pro版のデバッガも試用期間過ぎると使えなくなりますか?
あと記憶が不確かなんですが前にpro版の試用期間を過ぎたあたりの
タイミングでスクリプトが勝手にスクランブル掛かってしまったんですが
どういう条件で起きるのでしょうか
自分でスクランブル掛けてないのは間違いないです

131デフォルトの名無しさん2018/11/04(日) 17:29:09.86ID:4dOMj00Y
>>130
自分で試用期間を過ぎたって連呼してて何言ってんだ…

132デフォルトの名無しさん2018/11/04(日) 19:29:50.98ID:WH4Iex1S
「pro版のデバッガ」はそういう意味ではないかもしれない
でも普通に読むと、何言ってんだとしか言えんわなw

133デフォルトの名無しさん2018/11/04(日) 21:26:15.36ID:4y7rUrKd
>>131-132
試用期間過ぎたら勝手にスクランブル掛けるって
ちょっと信じ難かったので質問しました
ありがとうございました

134デフォルトの名無しさん2018/11/19(月) 12:00:31.20ID:Bnz7GW+k
>>39
の見させていただいたのですが
While True //Wendまでの処理を繰り返す。
ifb chkimg("image1.bmp") //" "内に指定した画像を認識したら処理開始
btn(left,click,g_img_x,g_img_y) //画像の座標をマウスの左ボタンでクリック

elseif chkimg("image2.bmp") //1つ目の画像が見つからなかったら別の画像を検索
btn(left,click,g_img_x,g_img_y) //画像の座標をマウスの左ボタンでクリック

else //上記の条件全てに当てはまらなかった場合
print "画像が見つかりません"   //メッセージを出す。

endif

sleep(3.5) //()内の秒数待機

Wend

とありますが逆に画像が見つからなかった場合クリックする方法はありませんでしょうか?


画像が見つかればスルー

画像が見つからなかったらクリック

よろしくお願いします。

135デフォルトの名無しさん2018/11/19(月) 12:22:00.42ID:FEO3fFuI
質問に対してそのまま返答すると
else内でbtn使えばいいよ
ってなるんだけど
多分そういうことを聞きたいんじゃないのだと思ってる

136デフォルトの名無しさん2018/11/19(月) 13:23:15.10ID:F1pQ/Nbq
見つかった場合だと座標指定にchkimgのg_img_x/yが使えるけど、見つからなかった場合はどうやってということかね

あらかじめメモって数値なり変数で指定するだけだが

137デフォルトの名無しさん2018/11/19(月) 13:34:46.71ID:Bnz7GW+k
ありがとうございます。
実は目的は画像が出てくるまでenterを押し続けて画像が出てきたら
enterをストップして次の行動にうつりたいのですが

While !chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
KBD(VK_enter)
SLEEP(0.7)
WEND
で無限ループは可能なのですが画像がずっと見つからない場合抜け出せなくなるのですよね
どこかにbreakを入れれば抜け出せると思うのですが
理想としては10回enterを押して画像が見つからなければ次の行動にうつる
といった感じです。
前このスクリプトを聞いてかなり叩かれたのでちょっと別のスクリプトで応用しようとして聞きました。
難しいと思いますがもしよかったらお願いします。

138デフォルトの名無しさん2018/11/19(月) 14:20:27.92ID:L9zCa8ZR
>>137
10回押すというかそれ10回ループしたらええやん

139デフォルトの名無しさん2018/11/19(月) 14:45:20.37ID:qv8H9IjA
叩かれてそれから君は少しでも自分で調べようとしたの?
uwsc whileとかでググってでてくるサイトでも見りゃすぐに答え見つかるんだけど

140デフォルトの名無しさん2018/11/19(月) 14:54:23.56ID:J6erJctM
繰り返し回数決まっているならFor To Next文でもいいし
ヘルプ、付属サンプルみてみた?

141デフォルトの名無しさん2018/11/19(月) 15:00:05.80ID:lM8hlL/3
叩かれたのは調べればすぐわかることを聞きっぱなしで意味もわからず使って調べようともしないからだぞ
何もわかってねーのな
ググる以前にヘルプに書いてある程度のレベルじゃん

142デフォルトの名無しさん2018/11/19(月) 15:18:49.89ID:TYiI0aDU
俺が難しいと思うのは137との意思疎通であって
やりたい事も実現するコードも多分 簡単だと思ってるよ

143デフォルトの名無しさん2018/11/19(月) 15:35:41.43ID:Bnz7GW+k
>>140
ヘルプを結構読んでググっても付属サンプル見ても見つからないのでまたいきなり
聞くのも悪いのでしばらく経った後聞いてみました。
どうしても出てくる画像がランダムなので回数を決められないんですよね
向いてないと言われるかもしれませんがこのソフトのおかげでゲームマクロでかなり生活も助かってまして
すみません また荒れると悪いのでしばらくこの辺にしておきます

144デフォルトの名無しさん2018/11/19(月) 15:47:05.45ID:X6A/Pm1x
おいおい初心者スレなのにそんなにいじめたら可愛そうだろ。
お前らは何か勘違いしているようだな。よく考えろ。

向こうのスレの>>10のこいつの書き込みから3ヶ月経ったが、whileやbreakはおろか、ifやforという基礎中の基礎すら未だ理解していない。
これはもはや自分で考えたり習得する気は微塵もなく、ただ答えを教えろ、代わりに作れと言っているだけ。

そんな奴にググれだのヘルプ見ろと言うことがそもそも無意味で間違いなんだよ。
さらに言えばそれでは向こうのスレと全く同じ流れでこのスレを建てた意味がない。
ここは初心者スレらしく、ヒントやヘルプ見ろなどと意地悪するのではなく、懇切丁寧に答えを教えてあげるべき。
ちなみに僕は初心者なのでよくわからない。

145デフォルトの名無しさん2018/11/19(月) 17:04:30.02ID:+ZNV2ej4
>>143
「条件を満たしたらループから抜ける」 なんてーのは基礎中の基礎以前にら自力でも考え付くだろ
わからなきゃこのワード+uwscでググれば答えが出てたぞ。まじめに調べてないだろお前

146デフォルトの名無しさん2018/11/19(月) 19:43:37.32ID:XkF2k9TP
正常性バイアスというか、それなりに動くものが一度出来ちゃうとそれに固執しちゃうのは初心者っぽくはある
たぶんもっと簡単に抜ける条件があるのに回数(しかも不定とかイミフ)に囚われすぎ

147デフォルトの名無しさん2018/11/19(月) 20:19:06.74ID:Bnz7GW+k
>>146
回数のほかに理想としてるのは時間ですね
>>36は私なのですが
start = gettime()
While gettime() - start < 10
if chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
break
endif
WEND
>>37さんに教えてもらったこのスクリプト物凄く助かりました。
今現在も利用させてもらっています。
これは10秒の間に画像が見つからなければ次の行動に向かわせるマクロなのですが
目的のはenterを10秒間連続で押しても画像が見つからなければ
次の行動に向かうでも目的は達成できますね。
画像が見つかった場合どうしてもそれ様のスクリプトをスタートしないといけないんですよね
なので1秒ずつコレを作ってもまたenterを押してしまって
説明が下手ですみません
if 画像
見つかったときの処理
else
エンター
endif
を10個用意して試してちょっとおしいって感じだったんですけど結局途中でエンターをずっと連打
してしまうんですよね
でもこれでも別の目的のマクロでは使えてるので凄く助かっているのでuwscと
5ちゃんねるには感謝しています。

148デフォルトの名無しさん2018/11/19(月) 21:05:53.38ID:+ZNV2ej4
>>147
いったい何のゲームのマクロなんだ?w
有名なMMOの自動戦闘マクロなら結構作ったが、ひとつひとつ手順をつぶしていけばいつのまにか出来てるぞ

索敵してタゲった場合にゲージが出るゲームなら、それをpeekcolorでチェックしたほうが速くて確実
それと、見つかったら発見フラグを立てて、それが存在するときは「エンター動作」とやらをしなけりゃいいだけじゃないのか

149デフォルトの名無しさん2018/11/19(月) 21:21:32.06ID:Bnz7GW+k
>>148
すみませんゲーム名はさすがに伏せさせてください
戦闘は一通り作れたのですがもっと手を入れたいのはいわゆる生産系と特殊な行動ですね
ある程度ゲーム内通貨を稼げる生産系マクロも作れたのですがあるものにどうしても特殊な動きが必要でさきほどの内容を聞きました
わからなくても特別困ってはないのですがわかればもっと便利になるといった感じです。

150デフォルトの名無しさん2018/11/21(水) 16:57:13.35ID:Idcs0zEb
見つかるまで回す処理にwhile 変数 = falseって形でフラグ使ってるけど変数増えすぎて面倒になってきた
見つかるまで繰り返す処理を実現したい

151デフォルトの名無しさん2018/11/21(水) 17:15:39.42ID:A7QyS99w
while !chkimg("a.bmp")とか

152デフォルトの名無しさん2018/11/21(水) 17:41:08.13ID:WARGIWsC
ゲームだとカウンタを使うことも多いので、結果的にフラグと同等のものが存在することが多い
ので、それで判別しちゃうとか

153デフォルトの名無しさん2018/11/21(水) 18:12:22.90ID:R5CLMRXS
while true
if chkimg(略) breake
見つかるまで繰り返す処理
skeep(1)
wend

超適当だけどこういうのじゃいかんの?

154デフォルトの名無しさん2018/11/21(水) 20:33:04.38ID:cYYMBbSe
チェックが複雑になるならメソッドで切り出すのがいいかと

while checker(...)
exec(...)
sleep(1)
wend

155デフォルトの名無しさん2018/11/23(金) 13:16:42.45ID:WWSF1RwR
>>151>>153のやり方が簡単に取り入れられ便利でした!ありがとうございました!

156デフォルトの名無しさん2018/12/01(土) 14:30:51.62ID:mlx9p/i1
以前質問した>>137ですが

t1=GETTIME()
WHILE ((GETTIME()-t1)<3)
IF ((CHKIMG("gazou",0,,,,,,IMG_MSK_BGR4) =TRUE)) THEN BREAK
KBD(VK_enter)
SLEEP(0.7)
WEND
でついさっき解決しました
お騒がせしました
もしわからない方がいたら参考にしてください

157デフォルトの名無しさん2018/12/01(土) 16:43:58.50ID:03mmxMXD
=TRUEいらねーよ、ほんと何一つ身につかない奴だな…

158デフォルトの名無しさん2018/12/01(土) 16:55:12.78ID:0p3QcmHs
こんなゴミコードは参考にしたらあかんで

159デフォルトの名無しさん2018/12/01(土) 17:03:05.49ID:GMnbtXEB
こんなものに半月かかったのか…
よくこの有様で参考にしてくれとか言えるもんだな

160デフォルトの名無しさん2018/12/01(土) 19:53:18.31ID:sZ8MPu8b
まぁuwscの初心者スレだしいいんじゃね
普通ならpythonでChrome操作するし

161デフォルトの名無しさん2018/12/01(土) 19:56:00.80ID:sZ8MPu8b
Chromeの話してるの別のuwscスレだったわw

162デフォルトの名無しさん2018/12/01(土) 20:02:22.73ID:jvJ8ZaHQ
これはもう初心者とか言うレベルじゃねーわ
初心者でもまともな人間ならもう少しオツム使って考えるわ

163デフォルトの名無しさん2018/12/01(土) 21:36:21.31ID:WGIeQzk8
ソフト板から流れてきた普段プログラムなんか書かない奴のリテラシーはこんなもんじゃないの

164デフォルトの名無しさん2018/12/03(月) 13:56:00.28ID:w4MaeKI9
noxで以下の用にドラッグドロップを繰り返すようにしているのですが、
これをウィンドウをアクティブ化せずにバックグラウンドで行わせて手前でPCの操作を出来るようにすることは可能でしょうか?

ACW(GETID("NoxPlayer","Qt5QWindowIcon"),339,239,425,593,0)

FOR X = 1 to 5000

BTN(LEFT,DOWN,641,740,30)
MMV(641,755,11)
MMV(639,751,10)
MMV(569,653,5)
MMV(566,646,1)
BTN(LEFT,UP,565,644,3)
MMV(565,643,15)
MMV(564,600,15)
BTN(LEFT,DOWN,564,597,47)
MMV(563,597,31)
MMV(562,597,16)
MMV(518,628,16)
MMV(513,631,16)
MMV(511,633,15)
BTN(LEFT,UP,511,634,78)

NEXT

165デフォルトの名無しさん2018/12/03(月) 14:05:26.11ID:AISq9KtV
>>164
nox_adb使えばいいよ
本スレで話題に上がってた

166デフォルトの名無しさん2018/12/03(月) 14:19:38.04ID:w4MaeKI9
>>165
nox-adbでデバイスID指定して、その中の絶対座標でドラッグドロップさせればそれらすべてバックグラウンド処理できるという事でしょうか
試してみます
ありがとうございます

167デフォルトの名無しさん2018/12/26(水) 19:46:55.86ID:lZXR1qia
代数の呼び出し?ってどうやるんですか?

a = "abcd"
fukidasi("a ")
SLEEP(5)

これだと aしか表示されないです。

auto hot key だと%でくくる奴です。
a := "abcd"
MsgBox, 0, , %a%
Sleep, 5000

168デフォルトの名無しさん2018/12/26(水) 19:51:42.50ID:50Xsz/KL
fukidasi(a)

169デフォルトの名無しさん2018/12/26(水) 20:05:12.07ID:lZXR1qia
>>168
サーセン

170デフォルトの名無しさん2018/12/27(木) 16:03:50.96ID:lC6iyiD1
デスクトップにあるaaa.txtをデスクトップのa aフォルダに移動したいのですが

a = "C:\Users\xxx\Desktop\aaa.txt"
b = "C:\Users\xxx\Desktop\a a"
DOSCMD("move " + a + " <#DBL>C:\Users\N'o'Te\Desktop\a a<#DBL>")

これだと動くのですが、下の記述だと移動してくれません。

DOSCMD("move " + a + " " + b + "")
どうすれば動のでしょうか。

171デフォルトの名無しさん2018/12/27(木) 16:10:54.01ID:Lwj8mmb4
>>170
まずはdoscmdの返り値で何のエラーか確認する
てかダブルクォート外しちゃったからってだけだろうけど

172デフォルトの名無しさん2018/12/27(木) 16:41:38.79ID:lC6iyiD1
返り値の出し方わからなかったんですけどダブルクォートつけたらうごきました。

b = "<#DBL>C:\Users\xxx\Desktop\a a<#DBL>"

これで良いぽいです。

173デフォルトの名無しさん2018/12/27(木) 22:25:30.23ID:TffHzaDx
DOSCMD("move <#DBL>" + a + "<#DBL> <#DBL>" + b + "<#DBL>")
とすれば "a","b" どちらのフルパス名内にスペースがあっても大丈夫

174デフォルトの名無しさん2018/12/28(金) 06:37:12.07ID:/5L8Sx5/
>>172
返り値てかコマンドプロンプトの標準出力だけど
doscmd自体が文字列返す関数なので変数に代入してもいいし、直接fukidasiとかに突っ込んでもおk

175デフォルトの名無しさん2019/01/09(水) 18:25:52.61ID:pINC7IeU
UWSCからプログラムに初めて触れる程度の初心者です。
画像認識について質問があります
現在複数の画像を設定してクリックするというコードを書いています。
While True
ifb chking(“画像名1.bmp”)
btn()
elseif chking (“画像名2.bmp”)
btn()
....
Wend
という文章になっており無駄が多いです。
それで一度検出した画像の検出をさせないプログラムを書きたいのですがそのような事は可能なのでしょうか?その際に使用する関数などアドバイスをしていただきたいです。

176デフォルトの名無しさん2019/01/09(水) 18:34:28.37ID:+1cYlkH0
単純にチェック済みフラグ立てて画像認識の前にif置けばいいんでね

177デフォルトの名無しさん2019/01/09(水) 19:12:31.19ID:pINC7IeU
>>176
!!
その話詳しく聞かせて欲しいです。
While True
if chking(“画像名1.bmp”)
else
ifb chking(“画像名1.bmp”)
btn()
if chking(“画像名2.bmp”)
else
elseif chking (“画像名2.bmp”)
btn()
....
Wend
というわけではないですよね...

画像名1.bmp=0なら画像認識、1なら画像認識しない
のような文を追加するのでしょうか?

178デフォルトの名無しさん2019/01/09(水) 19:32:53.70ID:W2TzwIR9
そういうこと
フラグの方法だと画像の枚数分フラグが必要になる

俺の提案
画像ファイル名を配列に格納してヒットしたら配列の要素にtrue格納する
当然画像検索前に要素がtrueか否かチェックする

179デフォルトの名無しさん2019/01/09(水) 19:58:12.98ID:+1cYlkH0
>>177
まあ、実装方法は色々ある
最終的には配列を引数にした関数までいくと脱初心者って感じだが自分が言ったのは

/a = true
/b = true
/略
/while true
/ if a and chkimg(“a.bmp”) then
/ btn()
/ a = false
/ endif
/ if b and chkimg(“b.bmp”) then
/略
/wend

みたいなの
行頭の/はインデントの為なので気にしないで

180デフォルトの名無しさん2019/01/09(水) 19:58:28.44ID:pINC7IeU
>>178
本当に本当にありがとうございます!!
私の考えているコードです!!
本当にC言語等学んだ事がないので助かりました。

DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp”
DIM flag[]=0,0,0

For num = 0 to length(gazou)-1
ifb flag[num]=0
ifb chking(“gazou[num]”)
btn()
num=num+1
else
num=+1
NEXT

かなり短縮することができました。
ただフラグを追加した途端文が不安になってしまいました。

181デフォルトの名無しさん2019/01/09(水) 20:03:46.42ID:pINC7IeU
>>179
あーなるほど!考えてくださりありがとうございます
a and chkingという使い方が良さそうですね
>>180の文を少し編集してみます!

182デフォルトの名無しさん2019/01/09(水) 20:08:47.81ID:+1cYlkH0
>>180
for〜nextの中で添字操作したらダメだよ
nextが勝手にやるからいらない

てかそれだと一周しかしないからwhileと組み合わせてね

183デフォルトの名無しさん2019/01/09(水) 20:14:05.78ID:DJbFsP/v
>>182
あっー!そういえばいりませんねw
アドバイスありがとうございます
あとこれのフラグを配列化したいのですがa,b,cは定数ですよね?
配列の中に入ったままa=trueなどの情報を持てるのでしょうか?
DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp”
DIM flag[]= a,b,c

a = true
b = true
c = true

while true
for num=0 to length(gazou)-1

if a and chkimg(“gazou[num]”) then
btn()
a = false
next
wend

184デフォルトの名無しさん2019/01/09(水) 20:15:43.50ID:pINC7IeU
ごめんなさいId変わってますが同一人物です

185デフォルトの名無しさん2019/01/09(水) 20:19:13.03ID:DJbFsP/v
ごめんなさい解決しました!
付き合ってくださった方々ありがとうございます
画像が増えるたびa=trueを追加していけば以下の文章で大丈夫そうですね
DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp”
DIM flag[]= a,b,c

a = true
b = true
c = true

while true
for num=0 to length(gazou)-1

if flag[num] and chkimg(“gazou[num]”) then
btn()
flag[num] = false
next
wend

186デフォルトの名無しさん2019/01/09(水) 20:21:39.60ID:W2TzwIR9
>>185
画像がヒットしたらgazouに格納されてるファイル名をtrueで上書きすると言いたかった
そしたら配列のフラグいらなくなるでしょ

187デフォルトの名無しさん2019/01/09(水) 20:28:17.81ID:+1cYlkH0
>>185
そうやるなら
DIM flag[]= true, true, true
だね

188デフォルトの名無しさん2019/01/09(水) 20:31:57.46ID:DJbFsP/v
>>186
!!確かにそれを使えばもっと短くできますね
やってみます

189デフォルトの名無しさん2019/01/09(水) 20:36:48.88ID:DJbFsP/v
色々アドバイスありがとうございます
DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp”

while true
for num=0 to length(gazou)-1

if gazou[num]!==flase and chkimg(“gazou[num]”) then
btn()
gazou[num] = false
next
wend
これ完璧ですね!自宅に帰り次第実行させてみたいと思います!!

190デフォルトの名無しさん2019/01/09(水) 21:28:06.29ID:pINC7IeU
本日ライセンス購入の件をumiumiさんに問い合わせをしたのですがやはり購入は厳しいですよね...

191デフォルトの名無しさん2019/01/09(水) 22:51:04.96ID:W2TzwIR9
無理じゃないかねえ、返信あったらスレに報告して欲しい

192デフォルトの名無しさん2019/01/12(土) 20:42:30.37ID:0UO0qOat
この前コードの相談に乗っていたものです
コードは完成したのですが
DIM gazou[]="unko(1).bmp","unko(2).bmp","unko(3).bmp","unko(4).bmp","unko(5).bmp"
//画像名
WHILE TRUE
for num=0 to length(gazou)-1
//クリック対象マークの画像ファイルを指定
IFB gazou[num]=true and CHKIMG("gazou[num]")
//クリック対象の画像が見つかった場合、その画像をクリック
BTN()
//クリック後はプログラムを終了する
gazou[num] = true
ENDIF
//監視時間間隔[s]
SLEEP(0.1)
next
WEND
これで実行した場合chking("gazou[num]")が配列から使用されずgazou[num].bmpとして反映されてしまいunko(1)bmpとして反映されません
chkingの中では配列を使用することが出来ないのでしょうか?アドバイスお願いします
またproライセンスの購入の件ですがまだ返信が来てません

193デフォルトの名無しさん2019/01/12(土) 21:04:21.05ID:AXIFw4s9
CHKIMG(gazou[num])
ダブルクォーテーションいらない

194デフォルトの名無しさん2019/01/12(土) 21:08:06.71ID:HvhCDbr8
別にuwscに限った話でもないんだが、文字列をダブルクォートで囲うというのは、プログラム的な解釈をさせずそのままの文字列で扱って下さいということ
引数に文字列をわたしたいからといってダブルクォートで囲う必要はない

195デフォルトの名無しさん2019/01/12(土) 21:15:06.03ID:0UO0qOat
返信ありがとうございます!!
配列使うの初めてで勘違いしてました。実行する事ができました!本当にありがとうございます!

あとumiumiさんから返信が来た場合連絡に来ます

196デフォルトの名無しさん2019/01/12(土) 21:29:00.23ID:HvhCDbr8
てかtrueの時はチェックさせないんだから!=では

197デフォルトの名無しさん2019/01/17(木) 17:37:08.88ID:ywa0zm07
UWSCのスクリプトの停止をALT+F2から変えたいんですが、
設定を見たところ、2つのキーを押すしか選択肢がないみたいなんですが、
これをEscキーのみに変えられないでしょうか?

198デフォルトの名無しさん2019/01/17(木) 18:07:29.42ID:3kooyktr
設定のところでは無理みたいだからスクリプト内で
キーを監視して押されたら止めるのを組み込むしかないね

199デフォルトの名無しさん2019/01/17(木) 18:15:04.25ID:pnYdwJsv
>>197
変えられない
コードでesc押したら終了するように書いておく
ループの先頭に
if GETKEYSTATE(VK_ESC) then exit
みたいな感じ

2001972019/01/17(木) 19:51:17.64ID:ywa0zm07
どうもありがとうございます。スクリプトの方に記述しておきました。

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
確かにそうですね・・・異常値の検知やってみますありがとうございました

401デフォルトの名無しさん2019/08/26(月) 22:00:32.81ID:D4IbCpMk
DOSCMDを管理者として実行する方法ありますか?Windows7です

402デフォルトの名無しさん2019/08/26(月) 22:10:52.63ID:mEUMz2+C
そのままググれ

403デフォルトの名無しさん2019/08/26(月) 22:21:25.54ID:D4IbCpMk
UWSC.exeの設定を変更したあとUWSCを再起動してなかったわ
ありがとう

404デフォルトの名無しさん2019/08/31(土) 15:41:17.68ID:/dYnoZCL
とあるフリーゲームのセーブデータのバックアップを取りたいのですが、1時間毎にファイルサイズを比較して、変化があればバックアップを取るということをしたいです。
(現在はファイルサイズの変化に関わらずバックアップを取るようにしているため、容量がどんどん増えています)
ですが、ファイルサイズの取得方法がググってもイマイチわかりませんでした。
何方か教えていただけませんか?

405デフォルトの名無しさん2019/08/31(土) 16:30:13.80ID:7TXshm9s
BETWEENSTR(doscmd(“for %z in (ファイル名) do echo %~zz”), “<#CR>”, “<#CR>”, -1);

試してないので予めごめん。

406デフォルトの名無しさん2019/08/31(土) 17:14:37.69ID:/dYnoZCL
>>405
親切にありがとうございます。ダブルクォーテーションを半角に直して、コマンドプロンプトを直接叩くと数字が出てくるのですが、UWSCで
PRINT BETWEENSTR(doscmd("for %z in (ファイル名) do echo %~zz"), "<#CR>", "<#CR>", -1);
とすると、『ECHO は <ON> です。』と出てきて、数字になりません。どうしたらいいでしょうか。

407デフォルトの名無しさん2019/08/31(土) 17:25:18.95ID:/dYnoZCL
自己解決しました。回答ありがとうございました!

408デフォルトの名無しさん2019/08/31(土) 18:08:17.65ID:0Yc9lQY2
uwsc使う必要ないような…?

409デフォルトの名無しさん2019/09/01(日) 19:24:18.75ID:5mFrqnue
すみません、以前から同じ問題に悩まされていて、未だに原因が分かりません。
UWSCでandroidを自動化しており、scrcpyというソフトでPCから操作しています。

クリックがうまくされないことが多く、待機時間など入れても全く解決しないのですが、
クリックの前に 「print "クリックします"」という記述を入れると問題なくクリックされるようになります。
このような記述を無意味に入れたくはないのですが、原因は何なのでしょうか?

410デフォルトの名無しさん2019/09/01(日) 19:46:09.23ID:5mFrqnue
追加です。
全く同じスクリプトでその症状がWindows10のみに出ます。
Windows7ではprintの記述がなくても問題なくクリックされます。

何かPC側の設定でそのような問題が起きる項目があるのでしょうか?

411デフォルトの名無しさん2019/09/01(日) 19:46:25.58ID:zpdGYnJT
問題が再現するスクリプト貼ってくれよ
あと環境やらもね

412デフォルトの名無しさん2019/09/01(日) 20:13:35.68ID:5mFrqnue
NGワードやら、改行が多すぎるやらでスクリプトは貼れないです。

413デフォルトの名無しさん2019/09/01(日) 20:29:24.70ID:5mFrqnue
色々検証してみましたが、PRINTでなくも関係ないところを一回クリックすると動作するようです。
なのでBTN(LEFT,CLICK,,)を2回連続して書くと一回クリックされます。
もしくは10秒以上の待機を入れればクリックされました。こちらは待機時間が長すぎて実用性がありません。

414デフォルトの名無しさん2019/09/01(日) 20:41:43.66ID:N1GXnBlH
そうですか

415デフォルトの名無しさん2019/09/01(日) 21:20:42.64ID:zpdGYnJT
まあ、Windows10だとそういう問題が多々ある
更新止まってるソフトだし解決しない

まあ、幸いAndroidの操作ならadbという手があるのでbtnの代わりにdoscmdでadbコマンドに置き換えればいいよ

416デフォルトの名無しさん2019/09/01(日) 21:39:50.56ID:5mFrqnue
ありがとうございます。色々調べても同じような解決方法しかないみたいですね。
次はadb shell input touchscreen tap x yを試してみたいと思います。

417デフォルトの名無しさん2019/09/02(月) 09:23:16.27ID:IEOCJvHA
サウンドで「プログラムの起動」に何かの音付けると分かるけど
win10って見えないプログラムがしょっちゅう起動してる?から
フォーカスを奪われたようになってるんでない

4184092019/09/02(月) 15:24:43.08ID:y60Hvlvu
>>417
ありがとうございます。

My Window Loggerというソフトを使って調べてみましたが、
フォーカスは外れていないようです。

419デフォルトの名無しさん2019/09/09(月) 11:38:19.09ID:0frhp+Tu
スレチかもしれないんですが、UWSCのスクリプトファイルが複数あって、同じ個所を同時に修正するようなソフトってないですか?
WinMergeを使っていますが、3個までしか同時編集できません。

420デフォルトの名無しさん2019/09/09(月) 11:38:51.09ID:TLffwesQ
関数化する

421デフォルトの名無しさん2019/09/09(月) 12:17:09.85ID:eI5EZMSU
関数化というか同じという箇所を別ファイルに切り出してcallするだけでもいい
まあ、変数の管理があるので関数化が望ましいかもだけど

422デフォルトの名無しさん2019/09/12(木) 14:37:32.43ID:pwiI+xHT
今まで使ってた物がwin10アプデ後動かなくて調べたら、原因はわかったんだけど、対処法がわからないのでアドバイスください
https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a
ここのサイトを参考に作ったもので、「サンプルコード(完成形)」の画像を発見したあとの処理にBTN関数を入れると反応がありません。
原因は「MOUSEORGによる補正」の
MOUSEORG(winid,MORG_DIRECT,MORG_FORE)
が原因みたいです。
MOUSEORG関数について読んだのですが、正直良くわかりませんでした。
削除すれば一応動くのですが、どうしたら良いでしょうか?

423デフォルトの名無しさん2019/09/12(木) 15:12:59.56ID:psJkeShP
過去にもそれ何度か話題になってるけど直接的な解決方法はなかった気がする
NoXとかならadbで接続してタップするコマンド送信するとか

424デフォルトの名無しさん2019/09/12(木) 18:50:26.13ID:IcXkdgTx
常にデスクトップに表示してマウス取られていいなら消せばいい
それが嫌なら記事の通り

425デフォルトの名無しさん2019/09/12(木) 19:48:01.48ID:pwiI+xHT
>>423
そうなんですね。情報ありがとうございます。

426デフォルトの名無しさん2019/09/14(土) 18:38:20.96ID:J9OvsDUU
あいまい検索できるCHKIMGXって使うたびにstartup_chkimgxとshutdown_chkimgxではさまないといけないの?

startup_chkimgx()
while true
<処理>
wend
shutdown_chkimgx()

て形ではさむの1回でもあいまい検索できてる気がするんだけど

<処理>のところにいくつもchkimgxて書くこと考えると毎回はさむの大変なんだけど楽なやり方ある?

427デフォルトの名無しさん2019/09/14(土) 19:00:58.02ID:suhfvUA6
できてりゃいいし、気になるなら何やってるかスクリプトお読みなさいよ

428デフォルトの名無しさん2019/09/14(土) 19:29:28.42ID:T/fmJAyy
これはもはや初心者ではなくて考えることを放棄した猿

429デフォルトの名無しさん2019/09/16(月) 00:21:03.12ID:J++fziTo
メールアドレスをEXCELからIEのアドレス欄にコピペしようとしたら、コピペ出来ないどころか右クリックもきかない場合はコントロールCもダメなときは、どうすれば良いでしょうか?

430デフォルトの名無しさん2019/09/16(月) 02:24:56.23ID:c545q6Mo
python勉強してuwscでやってたこと移行していってるけど
chkimgxってめちゃくちゃ使い勝手良かったんだなー
うまくここまでいい具合のもの作れないや

431デフォルトの名無しさん2019/09/16(月) 03:46:26.17ID:d0MhJ3Yl
chkimgxに相当する物が無いのか
人工知能やweb巡回ロボなどで注目されていから
Pythonやってみようかと思っているのに

432デフォルトの名無しさん2019/09/16(月) 06:36:15.46ID:shGVxZhQ
>>429
シートの保護を解除する

>>430,431
ただのopenCVラッパーなので同じように関数化すれば同じ使い勝手だが…?

433デフォルトの名無しさん2019/09/16(月) 09:02:03.26ID:J++fziTo
>>432
ありがとうございます。
やってみます

434デフォルトの名無しさん2019/09/17(火) 09:29:48.59ID:Qlpvvbbr
OpenCVそのままだね、あいまい検索もパターンマッチングの閾値さげるだけ
連番ファイル名のあいまいとか細かい処理は自分で追加しなきゃいけないけど

name, ext = os.path.splitext(FileName)
multi = glob.glob(name + '.[0-9]' + ext)

435デフォルトの名無しさん2019/09/17(火) 12:15:59.14ID:W7Brc645
画像の特定の色指定してマッチングとかは?
まあここらへんまで実装するのがただのuwscユーザーとしては難しいって意味じゃないの

436デフォルトの名無しさん2019/09/17(火) 23:07:48.56ID:Qcff0eSx
何が難しいのかは本人以外には分からんが難しくたってやりゃできるお手本あるんだからその内できるだろ

437デフォルトの名無しさん2019/09/21(土) 15:31:11.62ID:MHWtiGlt
質問失礼します。
ifb chkimg("画像名",0,,,,,,IMG_MSK_BGR4)=True
SLEEP(2)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
SLEEP(1)
Else
endif

で画像をクリックしているのですが目標の画像のすぐ下をクリックする方法ってありますでしょうか?
目標の画像が見つかれば座標に関係なくその画像の下にカーソルが少し移動してクリックするといった感じです。
よろしくお願いします。

438デフォルトの名無しさん2019/09/21(土) 15:35:02.99ID:idUljkgM
あるんじゃない?
元々そういうソフトだし

439デフォルトの名無しさん2019/09/21(土) 15:47:33.83ID:mk38kF2N
画像の下とはどういう意味か

440デフォルトの名無しさん2019/09/21(土) 15:48:10.01ID:d3d5sbQS
BTNの前にいったん適当な変数へG_IMG_Yを
コピー代入し、それをずらしたい量だけ増加させてから
その変数でBTNを呼ぶ、という単純な話ではなくて?

441デフォルトの名無しさん2019/09/21(土) 18:30:07.78ID:VtT+26ja
検索画像の座標に関係あるのかないのかどっちなんだ
クリックするかの判定に画像使ってるだけで実際クリックするボタンの位置固定がなら
そもそもg_img_x/y使わず、クリックしたい場所を固定値なり別の変数/定数にしたらいい

442デフォルトの名無しさん2019/09/24(火) 21:54:56.01ID:lGKeQ6/A
Edge上でドラッグ&ドロップ動作をエミュレーションしようとしてるけどうまく行かない
Edge側の問題っぽいが

443デフォルトの名無しさん2019/09/25(水) 02:02:13.55ID:idiO5sU0
EdgeというよりUWPアプリ全般で多分うまくいかないんじゃないの

444デフォルトの名無しさん2019/09/26(木) 11:47:45.82ID:2E8AEgsX
UWSCを今日から始めました。
皆様、宜しくおねがいします。
早速なのですがSLEEPについて教えて下さい
<理解していること>
SLEEP(0.1)
0.1秒スリープ
---------------
SLEEP(RANDOM(2))
0or1or2秒スリープ
---------------
<やりたいこと>
0.01秒から1秒の範囲でランダムにスリープしたい場合は
どうしたら実現できますか?
皆様のお知恵を宜しくおねがいします。

445デフォルトの名無しさん2019/09/26(木) 11:56:29.09ID:8zbcqLQ8
Sleep(Random(100) / 100)

446デフォルトの名無しさん2019/09/26(木) 12:09:10.09ID:2E8AEgsX
>>445
早速のご回答有り難うございます。
こういう表記の仕方があるんですね
まったく思いつきもしませんでした。
有り難うございます!!!

447デフォルトの名無しさん2019/09/26(木) 12:13:50.53ID:bGOHcRaB
randomは引数の範囲最大値は出ないことに注意
例示の引数2の場合で言えば0か1しか出ない

で、要するに1〜100の値を求めて100で割れば0.01〜1.00となるわけで
randomの仕様を考慮&利用すると以下の通り

(random(100) + 1) / 100

448デフォルトの名無しさん2019/09/26(木) 12:20:51.72ID:8zbcqLQ8
>>447
>randomは引数の範囲最大値は出ないことに注意
知らなかった、申し訳ない

449デフォルトの名無しさん2019/09/26(木) 12:46:58.57ID:2E8AEgsX
>>447
更に詳しい解説及びSLEEP(RANDOM(2))についての指摘
有り難うございます。
「引数2の場合ば0か1」勉強になりました。
本当に有り難うございます。

450デフォルトの名無しさん2019/09/26(木) 13:55:37.41ID:iUaFKvJQ
すっごい初歩的な質問かもしれませんが、
メモ帳にもの凄い長い文字列がありその途中に
a
b
c
という1文字ずつの文字列が10個くらいあってそれを全部
d
e
f
に簡単に変える方法ってあるでしょうか?
最終的にはそのabcをdefに変えたもの
ghiに変えたもの、jklに変えたものなど沢山必要なため、手作業で一つ一つ変えていくのだと膨大な時間がかかってしまうためよろしくお願いします。

451デフォルトの名無しさん2019/09/26(木) 14:03:02.51ID:5T2rMbCQ
んなもんUWSCじゃなくてエディタの正規表現で置換せーや

452デフォルトの名無しさん2019/09/26(木) 14:07:22.25ID:bMINaTXu
すっごい初歩的な質問だし、やり方も何通りも思いつくけど、お前が思いつかないって事はあとから要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い。

453デフォルトの名無しさん2019/09/26(木) 14:09:46.30ID:DaWSSFTy
Replaceってあったっけメモ帳の置換の方が早そう

4544502019/09/26(木) 14:25:46.18ID:iUaFKvJQ
メモ帳の置換を使った場合
abcという横に並んだ文字列をdefという横に並んだ文字列に変えるってのだと一瞬でできたんですが、縦に並んだ
a
b
c

d
e
f
に変える場合だと上手くいかないんですが
何か方法はありますか?

455デフォルトの名無しさん2019/09/26(木) 14:29:56.39ID:ff/FN5DC
改行を含めて直列にしてから元に戻せば楽なんじゃね

つーか、改行をまたいで文字列置換してくれるエディタがあった気がするが

456デフォルトの名無しさん2019/09/26(木) 14:36:55.66ID:5T2rMbCQ
正規表現でぐぐれ
あとはスレチだ失せろ

457デフォルトの名無しさん2019/09/26(木) 14:41:33.51ID:bMINaTXu
正規表現なんていらんだろ。。。何いってんだw

458デフォルトの名無しさん2019/09/26(木) 14:47:35.38ID:PdDoKstg
>>455
それこそ、マイクロソフトのワード(苦笑)ですら
置換画面であいまい検索にチェックを入れて
a^pb^pc^p を abc へ置き換えることで可能かと。
秀丸エディタその他のエディタでも一般的にできる。

459デフォルトの名無しさん2019/09/26(木) 14:53:59.09ID:i7CtdN8G
具体的なことは一切書かず偉そうなことだけ抜かしてるお前こそ一体なんやねん
アホは黙っとけ

460デフォルトの名無しさん2019/09/26(木) 14:56:42.66ID:bMINaTXu
>>459
間違いしか書いてないやつに言われたくないぞwあほ

461デフォルトの名無しさん2019/09/26(木) 14:58:41.92ID:3k8gDmD5
別に正規表現でもできるし間違いではなくね?

462デフォルトの名無しさん2019/09/26(木) 15:00:59.83ID:5T2rMbCQ
>>460
なにがどう間違いなのか詳しく頼むわ
そしてさっさと正しいやり方を書いてくれ

それと、>>459は俺じゃないぞ阿呆w

463デフォルトの名無しさん2019/09/26(木) 15:04:09.18ID:bMINaTXu
正規表現なんて必要ない。UWSCならREPLACEでも使えばいい。
スレ内で対応可能だし、正規表現でググるとかアホ

464デフォルトの名無しさん2019/09/26(木) 15:05:49.73ID:/5glJw3r
何がしたいのかいまいちわからんが
abcをdefに変えるだけなら正規表現は必要ないかもしれんけど
他にも色々変えるんだったらさっさと正規表現でも使ったほうが速いだろ

465デフォルトの名無しさん2019/09/26(木) 15:07:24.62ID:bMINaTXu
だから「要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い」

466デフォルトの名無しさん2019/09/26(木) 15:09:23.30ID:5T2rMbCQ
マクロの流れで書き換える必要があるならreplace使うのは分かるが
単純にテキストの文字列書き換えるだけでわざわざuwscでreplace使うとかどっちがアホなんだよw

467デフォルトの名無しさん2019/09/26(木) 15:12:54.58ID:bMINaTXu
はいはい。アホとの会話は要件聞き出すより無駄だわ。
わざわざメモ帳で正規表現使う方法でもググっとけw

468デフォルトの名無しさん2019/09/26(木) 15:12:58.19ID:OcEGW6mq
>>463
んで、具体的なやり方は?

469デフォルトの名無しさん2019/09/26(木) 15:13:06.47ID:DaWSSFTy
行・列関係なく縦に並んだ指定文字なら面白い質問なのに

470デフォルトの名無しさん2019/09/26(木) 15:14:37.41ID:bMINaTXu
だから「要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い」

471デフォルトの名無しさん2019/09/26(木) 15:19:02.37ID:eZXWH36o
abcをdef、ghi、jklとかたくさん変えるとか言ってるし正規表現でやったほうが早いだろ

472デフォルトの名無しさん2019/09/26(木) 15:20:58.61ID:bMINaTXu
>>471
お前は正規表現をググったほうがいいw

473デフォルトの名無しさん2019/09/26(木) 15:24:30.08ID:VJCVWXU0
煽るだけのベテラン基地外がまた湧いたのか
向こうが過疎ってるからってこっちにくんなよ

474デフォルトの名無しさん2019/09/26(木) 15:24:57.66ID:5T2rMbCQ
何通りもやり方は思いつくとか言いながら、煽るだけで決して何一つ言わない時点でお察し
どうしようもねえなw

475デフォルトの名無しさん2019/09/26(木) 15:27:37.43ID:Dz9wKQLF
メモ帳で正規表現なんて使えるの?

476デフォルトの名無しさん2019/09/26(木) 15:32:08.31ID:bMINaTXu
おぃおぃ。本気で置換と正規表現を混同してるやつがいるのか^^;

ググるなら「置換」だし、作業するなら「改行を検索に含めることができるテキストエディタを探す」だぞ。
要件変わるから多分無意味だけどw

> メモ帳で正規表現なんて使えるの?

メモ帳のテキストを吸い出して、正規表現にマッチングさせればいいけど、普通はやらん。
対応してるテキストエディタ使う。

477デフォルトの名無しさん2019/09/26(木) 15:32:23.98ID:balOv07a
教える気もない上級者さんは>>1のスレから出てこないでください

478デフォルトの名無しさん2019/09/26(木) 15:38:07.93ID:bMINaTXu
>>477
そうする。ひどいなここ。

479デフォルトの名無しさん2019/09/26(木) 15:42:08.85ID:tLIoXhFC
それだけ長文かけるならやり方書いてあげればいいのに
uwscスレって定期的に煽りキチガイ沸くよな

480デフォルトの名無しさん2019/09/26(木) 16:15:32.47ID:2E8AEgsX
>>450
WindowsのTeraPadで置換機能つかって
検索する文字列を「\na\nb\bc\n」
置換後の文字列を「\nd\ne\nf\n」
とすれば
a
b
c

d
e
f
とに力技でできます。
UWSCは本日1日目なのでわかりません。

481デフォルトの名無しさん2019/09/26(木) 16:23:29.46ID:2E8AEgsX
上の補足
qwea
b
c
の変換はちゃんと行わないのですが
先頭から
a
b
c
となるテキストは変換できません。
先頭がaとなるときの表現方法が正規表現で可能なのかな?
詳しくないのでごめんなさい。

4824502019/09/26(木) 16:40:53.92ID:iUaFKvJQ
ありがとうございます。
やってみます。

483デフォルトの名無しさん2019/09/26(木) 17:09:08.72ID:dB4DsoxS
>>480
と同じことをUWSCでやろうとすると
kekka = REPLACE( taisyou, "<#CR>a<#CR>b<#CR>c<#CR>", "<#CR>d<#CR>e<#CR>f<#CR>")

>>481
TeraPadは正規表現は使えないと思うので
Meryを使った場合は
検索する文字列 "(^|\n)a\nb\nc"
置換後の文字列 "\1d\ne\nf"
(^|\n)で先頭か前に開業がある場合のどちらかを指し
それに一致した内容が\1に入る

484デフォルトの名無しさん2019/09/26(木) 18:14:18.26ID:2E8AEgsX
>>483
わかりやすい解説有り難うございます。
おっしゃる通り、TeraPadは正規表現使えないみたいです。

Meryを使って
検索する文字列 "(^|\n)a\nb\nc"
置換後の文字列 "\1d\ne\nf"
を使えば先頭文字aの場合も解決できて
置換後の文字列を何種類か作っておけば
>>450さんは幸せになれますね。

個人的にはでMaryをUWSCで操作すると言う手も考えちゃいますけど
スマートな方法は
UWSCで正規表現を使う場合にはVBScript等使えばできるみたいですね。

4854502019/09/26(木) 18:45:29.17ID:iUaFKvJQ
Meryだと無事に置換ができました。
本当にありがとうございます。助かりました。

486デフォルトの名無しさん2019/09/26(木) 19:56:14.78ID:2E8AEgsX
自分もMery使用したことがなかったのでインストールして
上記置換処理やってみました。
一瞬で置換され便利ですね

過去ログでもおすすめエディターみたいですので少し使ってみます。
>>483さんに感謝

487デフォルトの名無しさん2019/09/27(金) 06:24:51.56ID:HGFU/goi
ものすごく初心者な質問させて頂きます。
過去ログのソースコードを見させて頂いているのですが
人によってコマンドの記述が違います。

1.print XXXX
2.Print XXXX
3.PRINT XXXX
というように大文字と小文字を混在されています。
なにか理由があるのでしょうか?

488デフォルトの名無しさん2019/09/27(金) 08:17:47.20ID:C42tS7ey
言語的に予約語、関数名、変数名に大文字小文字の区別がなく、専用のエディタもないから好きなように書いているだけ
※専用じゃないけどvscodeやサクラエディタ用の拡張や予約語リストはあるので入れることをオススメ

ちなみに例えば自分はPCでなら関数は大文字、変数名は小文字キャメル(定数は大文字)を緩く守るが
掲示板なんかにスマホから短いコード投下する時は面倒なので小文字かな

489デフォルトの名無しさん2019/09/27(金) 08:18:23.10ID:P2udmMmf
1.個人のこだわり(ひとによっては宗教レベル)
2.タイピングの癖
3.UWSCの寛容さへの甘え

490デフォルトの名無しさん2019/09/27(金) 10:12:57.50ID:UTbYC5kd
Pascal系は大文字小文字を区別しないものが多い、C系はほとんど区別される。UWSC作った人がPascal好きだったか?

491デフォルトの名無しさん2019/09/27(金) 10:56:47.41ID:C42tS7ey
uwscはPascalというかDelphi由来

492デフォルトの名無しさん2019/09/27(金) 11:16:12.69ID:HGFU/goi
>>488
大文字と小文字に区別がないこと理解しました。
私も関数は大文字、変数名は小文字キャメル(定数は大文字)で
同じ様に記述してみます。

>>489
個性が出やすくなるんですね。

短期間でのレスありがとうございます。

493デフォルトの名無しさん2019/09/27(金) 21:12:48.80ID:swY7XTEk
スクリプト終了しても消えない変数みたいなのは作れますか?
いちいちファイルに保存しないとダメ?

494デフォルトの名無しさん2019/09/27(金) 21:18:29.42ID:szJrwaq1
ファイルに保存しないと駄目

495デフォルトの名無しさん2019/09/27(金) 22:06:37.44ID:0SGX+H6c
プログラミング自体はじめたばかりの初心者です。
データのあるexcelから1つずつセルを、別ソフトへとコピペさせるループのマクロを作っております。
終了条件として、excelからコピーしたセル内容が空白となるまでループさせたいのですが、ループが始まりません。
どうしたらよろしいでしょうか?
※excelでセル内容が空白の場合に取得される内容は改行(<#CR>)です。

A = GETSTR(0)
WHILE A = "<#CR>"
//excelをアクティブに
CTRLWIN(EXCELID, NORMAL)
CTRLWIN(EXCELID, ACTIVATE)
//セルを1つ移動させる
KBD(VK_DOWN, CLICK, 50)
//セルをコピー
KBD(VK_CTRL, DOWN) // キーを押しっぱなしにする
KBD(VK_C, CLICK, 50)
KBD(VK_CTRL, UP, 50) // キーを離す
//貼り付け先ソフトをアクティブに
CTRLWIN(pasteID, NORMAL)
CTRLWIN(pasteID, ACTIVATE)
//コピー内容を貼り付け
KBD(VK_CTRL, DOWN) // キーを押しっぱなしにする
KBD(VK_V, CLICK, 50)
KBD(VK_CTRL, UP, 50) // キーを離す
A = GETSTR(0)
WEND

4964952019/09/27(金) 22:09:22.58ID:0SGX+H6c
連投スマソ、補足です。
495では省略してしまいましたが、
ループが始まる前に、クリップボードにはなにかしらのデータをコピーしておく
プログラムを書いています。

497デフォルトの名無しさん2019/09/27(金) 22:28:07.12ID:szJrwaq1
WHILE A = "<#CR>"
これだとAが改行の間ループすることになる

498デフォルトの名無しさん2019/09/27(金) 22:34:58.29ID:Fhm0Ycov
WHILE A = "<#CR>"
だと空白である間ループするようになると思うけど

それはそうと
今やろうとしてるような表示上のセルを直接見ながらという手もあるとは思うけど
CSVなりに内容を吐き出させた上でファイルを処理したほうがよいのでは
とくにセル数が多ければそちらのほうが圧倒的に速いし
キー操作をおこなうより安全だと思う

499デフォルトの名無しさん2019/09/27(金) 23:15:06.36ID:C42tS7ey
一列程度ならリストに突っ込んでforで回せばいいと思うが
範囲選択してコピーは省略、手作業なりスクリプト化なりご自由に

//Excelでコピーした列データをリスト化
list = SPLIT(GETSTR(0),"<#CR>")

//貼り付け先をアクティブに
CTRLWIN(pasteID, NORMAL)
CTRLWIN(pasteID, ACTIVATE)

//リスト終端まで回す
FOR A = 0 TO RESIZE(list)
 SENDSTR(0, list[A])
 SCKEY(pasteID, VK_CTRL, VK_V)
NEXT

貼り付け先がどんなんかよく分からんのでSLEEP入れたりは適当に調整してくれ

5004952019/09/28(土) 00:24:45.36ID:qPxO4zq5
皆様迅速なご回答をしていただきありがとうございます。
whileの基礎的なことすら分かっていなかった自分が恥ずかしいです。
マクロは、excelデータから社内の伝票作成ソフトへ相手会社名や振込先口座、金額などを
転記したいために作っております。

>>497
おかげさまで=を<>にしたらイケました。
>>498
csvもあるんですね。確かにキー操作は不安でした。
ただ、このマクロを最終的に「B列のコピーした内容が"x"ならC列を飛ばしてD列をコピー」など
IF?で分岐させていく予定なのですが、それでもcsvで対応できるんですかね・・・
>>499
8列くらいのデータがあるんです、、、
ただ、今後使うことがあるかもしれないので、参考にさせていただきます。

501デフォルトの名無しさん2019/09/28(土) 01:21:29.50ID:Y40c4v1p
CSVカンマ区切りにしか対応してないがFGET()で読めば
戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] )
のように列を指定して取り出せる
渡す相手に対しても相手のウィンドウに直接入れるのではなく
ファイルをつくり渡すことも考えられる
相手がカンマ区切りのCSVを読み込めるならFPUT()で書き出し安いが
そうでなかったとしてもXMLやJSONあるいは相手の独自形式のファイルに
して受け渡すことは検討してみたほうがいいと思う

502デフォルトの名無しさん2019/09/28(土) 01:51:10.04ID:Y40c4v1p
あるいは1行まるごとを読んでSPLIT()で配列化して扱える

ファイルを読んで新しいファイルを作るような場合だと
もしかしたらperlやpythonで扱うほうが楽かもしれないが

503デフォルトの名無しさん2019/09/28(土) 04:36:04.09ID:va6TJWDv
>>500
ん、rpa的なことやるならuwscはやめた方がいいよ
理由は色々あるが懸念の通りexcelフォーマットを読み解き柔軟に組むのは不可能じゃないが向いてない
そういうのはVBAか標準でexcel操作可能なrpa用ソフト使った方がいい
(まあ、uwscもproはちょっとexcel専用関数あるんだけど…)

自分が組むならまずは分岐とか余りしなくて済むような、単純作業のインプットになるデータフォーマットを考える
(何なら貼り付け先のソフトの画面全項目でもいい)
そのフォーマットにexcelから落とし込むのは恐らくはVBAが適当で、転記はuwscにやらせるのがいいんじゃないかな
excelから直接別ソフトへ転記は無駄に難易度上がるだけだよ

504デフォルトの名無しさん2019/09/28(土) 06:16:08.57ID:Ct1nF35m
向いてないのか
職場でRPAが話題になってるの聞きながらuwscでいいじゃんって思ってた

505デフォルトの名無しさん2019/09/28(土) 06:30:07.11ID:CcJW/+z6
向いてないと言うか力技なんだよ
データをcsvで読みこんで対象のテキストボックスに流し込むとかやりようはありそう

506デフォルトの名無しさん2019/09/28(土) 20:20:42.41ID:2HxgDAhh
今日でこのソフトに出会って3日目なんですけど
むちゃくちゃ便利ですね。
今まで手動で3時間くらいポチポチしてたことが
皆さんのソースコードを読みながらお茶してるだけで勝手にやってくれる
もうちょい早く出会ってPro版を購入したかった。

507デフォルトの名無しさん2019/09/28(土) 21:58:40.51ID:Bvcc+55+
CSV なら、Ruby で処理するのが簡単

508デフォルトの名無しさん2019/09/29(日) 00:24:15.19ID:2oHQQmaP
いやcsv処理する話しじゃないんで…

509デフォルトの名無しさん2019/09/29(日) 17:38:04.40ID:yyfVEle8
このソフトてモニタースリープ状態のまま動かすのて無理ですかね?

510デフォルトの名無しさん2019/09/29(日) 17:42:46.79ID:4kqLeu2A
uwscでマウスのカーソルを移動させても反応しません
手動で移動させると反応します
この違いはなぜ起こるのでしょう

mmvで移動させています
クリックは両方とも反応します

511デフォルトの名無しさん2019/09/29(日) 18:04:51.80ID:4kqLeu2A
連投すみません
uwscではマウスオーバーしたという判定が出ないんです
html5の仕組みが関係しているんでしょうか

512デフォルトの名無しさん2019/09/29(日) 19:15:04.42ID:uzWuDMUd
試してみたいからスクリプト貼ってくれよ×2

513デフォルトの名無しさん2019/09/29(日) 22:43:58.25ID:NTZExMlG
>>509
たいていのことはできると思うが
POFF(P_MONIPOWER2)

POFF(P_MONIPOWER3)
との間に
試したい処理を入れてテストしてみればいい

514デフォルトの名無しさん2019/09/29(日) 22:51:03.21ID:NTZExMlG
>>511
どんなページのどういう部分かわからないけど
MMVでピタッとある座標に移動しても反応しないものが
人がマウスを移動するようにMMVで位置を少しづつ
ずらして移動すると反応する場合もある

515デフォルトの名無しさん2019/09/30(月) 06:38:09.68ID:PihPYg9U
マウスオーバーってマウスカーソルが要素の境界またいだら起きるイベントだったりしない?

516デフォルトの名無しさん2019/09/30(月) 09:37:01.91ID:n0JFz+mK
>>504
RPAはコーディングいらないんだよ
高性能なやつだとAIが操作内容を解析して最適化までしてくれる

517デフォルトの名無しさん2019/09/30(月) 11:10:24.43ID:jC4keZpM
それは幻想だ

518デフォルトの名無しさん2019/09/30(月) 14:38:39.72ID:dVa1Usr4
RPAはボタンやOCR的に画面の字を認識するのはデフォだろ
UWSCの画像認識はお世辞にもry

519デフォルトの名無しさん2019/10/01(火) 23:49:48.17ID:s21ezsHI
>>514 >>515
mmvで動かしてるだけです。
mmvを何回もやって、ゆっくりにしてもだめでした。
境界をまたいでもだめでした。

520デフォルトの名無しさん2019/10/08(火) 13:22:45.54ID:9e1T1J7x
Noxをアクティブ化せずに日本語の文字列を入力したいのですが何か良い方法は無いでしょうか

・MOUSEORG(ID,2)を使ってCtrl+VをKBDで送信、SENDSTRのACC指定を2にして実行
→反応せず
・ADBKeyBoardをインストール後、DOSCMDにて
nox_adb.exe shell ime set com.android.adbkeyboard/.AdbIME
nox_adb.exe shell am broadcast -a ADB_INPUT_TEXT --es msg 'テスト' を送信
→反応せず

521デフォルトの名無しさん2019/10/08(火) 17:10:33.10ID:Jw4k5nXF
>>520
MOUSEORG(ID,1)だとできるの?

522デフォルトの名無しさん2019/10/08(火) 19:10:24.22ID:9e1T1J7x
>>521
KBDとACC指定デフォルトのSENDSTRは入力が通ります

523デフォルトの名無しさん2019/10/08(火) 19:25:09.29ID:WUNHA4Q/
変なことせずに単に
nox_adb shell input text ‘文字列’
じゃなんか駄目なのかね
テキストボックスにフォーカスあたってる?

524デフォルトの名無しさん2019/10/08(火) 20:18:11.78ID:9e1T1J7x
>>523
input textは2バイト文字送れないようです
フォーカスはもちろん当たってます

525デフォルトの名無しさん2019/10/08(火) 20:40:35.50ID:WUNHA4Q/
なるほど、そういえば自分も同じことやった気がする
結局どうやったかなあ
input keyevent 279
(もしくはKEYCODE_PASTE)
でnox内のクリップボードから貼り付けは出来るよね

で、sendstrだと直接Windows側のクリップボードに送っちゃうから確かnox内に送れなくてなんかしたんだけど何かを忘れた
Windows側でctrl+cとかそんなレベルのことやったような…sendstrのパラメータで解決したようなうろ覚え

526デフォルトの名無しさん2019/10/09(水) 01:21:59.63ID:dWWBbVm8
>>525
確かにNox内のクリップボードにある文字列は貼り付け出来ますね
ただ同じくUWSCからNox内のクリップボードに文字列を送る方法が分からなくて、あーだこーだしてる内に解決しました

NoxでADBKeyBoardを使う場合はAndroid7でないと動作しないようで、
Android7でインスタンスを作り直したらBroadcastで2バイト文字の送信が出来ました
UWSCというよりAndroidの質問になってしまいましたが、回答してくれた方々ありがとうございました

527デフォルトの名無しさん2019/10/11(金) 02:29:57.15ID:l8XLJu9S
今pro番を使おうと思ったらどうしたらいいですか?

528デフォルトの名無しさん2019/10/11(金) 06:58:36.99ID:Td6I+Zpy
Pro版のインストールファイルを入手できれば
方法はあるけれど....

529デフォルトの名無しさん2019/10/11(金) 07:57:18.50ID:aMgrTkTz
ファイルがあってもライセンスキーがなければだめでしょ

530デフォルトの名無しさん2019/10/16(水) 21:26:16.96ID:2hMqi2nO
質問なのですが、万が一のためにマクロ実行中に、Escキーを押すと
マクロを中断させたいのですが、Escキー以外は操作を無効にさせたいです。
LockHardを覚えましたが、Escキーが効かなくなってしまいます・・・

sethotkey(VK_ESC, 0, "ForceStop")
LockHard(true)

531デフォルトの名無しさん2019/10/16(水) 23:23:09.03ID:Feea5J53
STOPFORM()出しといたらダメなの
あとLOCKHARDEX()でウィンドウ限定するとかは

532デフォルトの名無しさん2019/10/17(木) 12:12:39.95ID:A4Rdxp6g
>>525
なるほど、stopformという手もあるんですね!
マウスとキーボード操作を受け付けないようにしながら、escキーだけ受付・・・というのはやはり難しいでしょうか?

533デフォルトの名無しさん2019/10/17(木) 12:52:54.52ID:A4Rdxp6g
たびたび質問ですみません。
ものすごく初歩的なことなのかもしれませんが、chkimgxって画面に前面で表示されていないのだめなのでしょうか?
2つのソフトをsckeyでキー操作しているのですが、片方が裏にまわってしまうと認識していないような気がします。
とりあえずの対策として、acw(0,0)とctrlwin(showとtopmost)でウインドウ位置+手前表示固定しているのですが。

534デフォルトの名無しさん2019/10/17(木) 13:06:59.02ID:bO7Ftz48
MOUSEORGの引数が間違ってなければウィンドウが被ると駄目なソフトなんでしょ
その2つのソフト名は?他に使ってる人が居れば情報が得られるかもしれない

535デフォルトの名無しさん2019/10/17(木) 14:09:22.00ID:tJ4XAWvT
例えばNoxだと単発ウインドウなんで裏に隠れてても取れる
BlueStacksだと親ウインドウしか指定してないと描画してる子ウインドウが隠れると取れない、子ウインドウを指定すればいい

536デフォルトの名無しさん2019/10/17(木) 21:35:08.48ID:4XXN/n+s
>>534
>>535
ご回答ありがとうございます。
なるほどですね、そういう仕組みになっているのですね。

537デフォルトの名無しさん2019/10/22(火) 02:49:35.92ID:L/O8BxfD
UWSC+NOX環境でadb使ってダブルタップをする場合ってどうすれば良いのですか?
DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (370) + " " + (600))
sleep(0.1)
DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (370) + " " + (600))
と書いてみましたがだめでした。アドバイスお願いします

538デフォルトの名無しさん2019/10/22(火) 04:41:04.07ID:a1/9gbM9
シングルタップはできてるんだよね?

539デフォルトの名無しさん2019/10/22(火) 13:39:26.21ID:L/O8BxfD
>>538
シングルタップは問題なく動いています

540デフォルトの名無しさん2019/10/22(火) 13:46:16.17ID:a1/9gbM9
>>539
Sleepを増やしてどうか

541デフォルトの名無しさん2019/10/22(火) 13:56:35.11ID:8YNql35h
いちいち、cdから始めるから間隔空き過ぎって話じゃないの?
shell以降で連続してタップ送るとか、path通して処理時間短縮するとかそういうアプローチの仕方してみたら

542デフォルトの名無しさん2019/10/24(木) 18:01:47.14ID:xBrr20Dc
>>541
多分そうじゃないかな。
nox_adb.exe はフルパスで.exeも略さずに記載する。
sleep 0.1 は消してみる。

それでもだめなら、android本体側にダブルタップの
イベントを用意し、それをadbで起動する手がある。
試していないが例えば下記。
https://stackoverflow.com/questions/25865259/how-to-make-a-double-tap-to-expand-the-video-screen-using-android-adb-commands
https://sp.ch.nicovideo.jp/sakaki_sourai/blomaga/ar1232345

543デフォルトの名無しさん2019/10/25(金) 10:35:07.95ID:V94JerTM
Noxの話題が出ているので便乗して…
CHKIMG関数をNoxウィンドウに走らせると画面がチラついてそのまま真っ暗になることがあります
MOUSEORGでMORG_FOREを指定してもチラつきが抑えられません
発生頻度は数時間に1回発生するかどうかで偶にという感じです
解決策か原因をご存知の方はいらっしゃいませんか
環境はOSがWindows10、Noxのバージョンが6.0.8.3です

544デフォルトの名無しさん2019/10/25(金) 11:34:44.08ID:iWBj7Wic
noxの設定で描画のOpenGLをDirectXに変えてみるとか

545デフォルトの名無しさん2019/10/25(金) 12:17:47.97ID:Pn1d2knk
>>537です
>>542 フルパスで書いてみましたがだめでした
DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300")
DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300")
>>541
shell以降で連続してタップ送る、と言う書き方がわかりません
アドバイスください

546デフォルトの名無しさん2019/10/25(金) 12:53:23.96ID:gsbQkWqD
>>545
試してないから出来るか微妙な気もするけど
shellで1回区切ればリモートシェル状態になるので
nox_adb shell & input ~ & input ~ & exit
とする(exitなくてもいいかも?)
次善策としては
nox_adb shell input ~ & nox_adb shell input ~
とする

547デフォルトの名無しさん2019/10/25(金) 17:43:44.15ID:Pn1d2knk
>>546 ありがとうございます
DOSCMD("C:\Nox\bin\nox_adb.exe shell & input touchscreen tap 600 300 & input touchscreen tap 600 300 & exit")
これでやってみましたがUWSCが落ちました
一応
DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300 & C:\Nox\bin\nox_adb.exe shell input touchscreen tap 500 300")
これで2回クリックされていました。ですが2行で書くよりはわずかに早くなった程度でゲーム側でダブルタップとして認識してくれませんでした

548デフォルトの名無しさん2019/10/25(金) 18:48:26.13ID:gsbQkWqD
>>547
& exit外しても落ちる?

もし落ちたとしてダメなら>>542の提示方法
ただこれはぶっちゃけ準備面倒で現実的じゃないので
noxの仮想キーのスクリプトボタンでダブルタップ作ってuwscからはsckeyでどうかな

549デフォルトの名無しさん2019/10/29(火) 18:26:13.64ID:tLCpEMn0
Windows10については徐々に更新されているらしい

Windows Command-Line: Unicode and UTF-8 Output Text Buffer
https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/

5505492019/10/29(火) 18:33:02.66ID:tLCpEMn0
>>549
誤爆です
すみません。

551デフォルトの名無しさん2019/10/30(水) 22:06:29.29ID:zKjMcLjE
もしかしてですけど、excelのCOMオブジェクトでシート名を指定して
それをアクティブにするにはpro版じゃないとできないのでしょうか?
(XLACTIVATEというpro専用関数を見つけました・・・)
たとえば、「test1」と「test2」というシートを交互に選択したいのですが。

552デフォルトの名無しさん2019/10/30(水) 22:20:41.62ID:zKjMcLjE
たびたびすみません。
既に開いているexcelファイルに対してrange.selectなどの操作をしたいのですが、
サンプルスクリプトを改変しながらやっておりますが、
  EXCEL.Workbooks.add() // 新規ワークブック作成
を抜くとcomエラーが出ます。
どうすればよいのでしょうか・・・

553デフォルトの名無しさん2019/10/31(木) 22:19:57.30ID:2PR/MUI3
そういう場合Activeworkbookで拾うんだよ

554デフォルトの名無しさん2019/11/13(水) 14:06:54.83ID:KJOE9J4P
作者さんはお亡くなりになられたのですか?

555デフォルトの名無しさん2019/11/13(水) 21:11:38.75ID:HJ+xL4oZ
うn

556デフォルトの名無しさん2019/11/14(木) 00:26:50.94ID:1xX/pUlc
ついにFirefoxの動作が思わしくなくなったので卒業した

557デフォルトの名無しさん2019/11/24(日) 21:08:58.59ID:twqCowHe
ずっとWindows7で使用していたスクリプトをWindows10で実行したところうまく動かないので
UWSCを5.0から5.302へアップしたら今度はエラーが出て実行すらしなくなってしまいました
今まで動いていたスクリプトがなぜエラーになったのか見当がつきません
同じ経験をして解決された方いましたら教えて下さい
エラー箇所はforループで起こりネスト構造がおかしいような内容でした
よろしくおねがいします

558デフォルトの名無しさん2019/11/24(日) 22:55:11.94ID:7ZFsEzWw
ソース見せてもらえへんとなんとも

559デフォルトの名無しさん2019/11/25(月) 14:38:22.16ID:7t0vtsJ9
>>557 ですが解決しました

因みにforループの中のif文で

if xx  then 処理A
elseif yy
処理B
else
処理C

endif
といった書き方をところどころしていたのですが
1行でif xx then 処理 の後ブロック構文ががだめになったみたいで
全部
if xx
処理A
にしたら動きました

560デフォルトの名無しさん2019/11/25(月) 14:56:34.71ID:E9DgYFh2
ifb って書けば良いのでは?

561デフォルトの名無しさん2019/11/25(月) 15:52:04.30ID:zoSkKdve
>>559
5302のヘルプ見るとその書き方は載ってないからもともと非対応だったのかも

562デフォルトの名無しさん2019/11/25(月) 21:00:32.82ID:efEnk7rY
構文解釈してるのはUWSC自体のはずだと思うけど
なんでOSの影響受けるんだろう?

563デフォルトの名無しさん2019/11/25(月) 22:32:08.47ID:QpqOy3LM
x86→x64だと結構影響あるよ
特にActiveX使ってるとバグ作り込みやすい

564デフォルトの名無しさん2019/11/26(火) 00:20:42.15ID:Swtl+iDB
sckeyって裏マクロ非対応ですか?
変数に入れた文字列を送りたいのですが・・・

565デフォルトの名無しさん2019/11/26(火) 02:13:46.52ID:Swtl+iDB
すみません、sendstrの間違いでした、、、

566デフォルトの名無しさん2019/11/26(火) 16:25:19.36ID:Mtvvcsi1
>>560
どのバージョンからか忘れたけどifでも ifb でもどっちでも良くなったと説明書きがあったと思うのですが
それ以来ifb は使用してないです 結構昔です 10年以上前かも

>>561
今まで動いていたのは作者のバグだったのでしょうか?

それよりエラーメッセージが日本語になったのは驚きました

あとwin7のエラーメッセージは編集して行が変わっててもその都度エラーが発生した行番号を表示しますが 
win10は編集して行が変わっても最初に表示した行番号を表示します
ファイルを編集してもすぐには反映されないのかと思いましたがとりあえずエラーは出なくなったので原因はわかりませ

後iniファイルを起動時に読みこんだ値と変わってしまっていてまともに動きません
現在調査中ですがわかる方いたら教えて下さい

あと7ではタスクバーから起動したり終了させたり(マウス中ボタン)できてたのもできなくなって大変困ってます
他にも問題だらけでwin10への以降は不可能な気がしてきて気が重いです

567デフォルトの名無しさん2019/11/27(水) 02:18:16.73ID:7G4RG5sM
数年前の事(Win7→Win10、UWSCバージョンアップ)を今更騒いでも当時の記憶掘り出せるかは怪しいもんだと思うし
スクリプト全体像なり再現用のミニマムコードでもくれなきゃこっちで確認なんかできないよ
特にWin10では色々問題あったがほとんどの人はとっくに対応しちゃって何が問題だったか忘れてるか
UWSC自体に見切りつけて簡単に使えるところにしか使ってないというのが現状と思われる

てかね、Win10自体も最近1909出たばかリで、またUWSCの動作が何か変わっているかもしれないし変わってないかもしれない
ただ言えることはUWSCは今後更新されないので、改善は見込めないということ

568デフォルトの名無しさん2019/11/27(水) 03:42:15.27ID:DxUr7XIY
>>566
まさかと思うけどUWSCのフォルダを
Program Files
Program Files (x86)
に置いてないよね
もし置いていたら、いまからでも遅くないから、そこじゃないどこかへ

569デフォルトの名無しさん2019/11/27(水) 14:33:22.39ID:8E8c4VQb
そ〜こではないど〜こか〜へと〜

570デフォルトの名無しさん2019/11/27(水) 21:15:02.15ID:aGnYyAi4
excelブックのシートすべてに対して各シートの1行目に検索をかけ、「印刷対象」というワードが存在する場合、そのシートを印刷する
というマクロなのですが、1回目ループの印刷されたところでcomエラーが出てしまいます。
どうしたらよいのでしょうか・・・?

EXCEL = CREATEOLEOBJ("Excel.Application")
EXCEL.visible = True
EXCEL.workbooks.add()

WITH EXCEL
FOR A = 1 TO .Sheets.count
.Sheets(A).Select
printiffind = .Range("1:1").Find("印刷対象") 
printif = .Cells(printiffind.row , printiffind.column).value
msgbox(printif)
IF printif = "印刷対象" THEN
.activesheet.printout
else
ENDIF
NEXT
ENDWITH

571デフォルトの名無しさん2019/11/27(水) 22:40:20.96ID:MWZwasL9
何故それをuwsc にしようとしたのかがまったく理解できない
1つでも印刷されるのそれ?

572デフォルトの名無しさん2019/11/28(木) 10:04:18.53ID:p/uKw1d3
Excelのマクロでよくねw

573デフォルトの名無しさん2019/12/06(金) 18:31:31.17ID:43TcIdUK
noxではなくMumuで裏マクロをしたいのですが、CMD = "~~"の中身を書き換えるだけでは動きませんでした
パス部分をMumuのadbがある場所にすればいいのかなと思ってこうしたら
CMD = "cd C:\Program Files\Mumu\emulator\nemu\vmonitor\bin & adb_server shell input touchscreen tap " + 100 + " " + 100
PRINT CMD
DOSCMD(CMD)

PRINTで表示されたのはこうで
cd C:\Program Files\Mumu\emulator\nemu\vmonitor\bin & adb_server shell input touchscreen tap 100 100
コマンドフロンプトに入力するとこう返ってきました
error: device '(null)' not found

本スレ21の>>879と同じ?だと思うのですが、>>880の指す「いつものという感じ」が何なのか分かりませんでした。

574デフォルトの名無しさん2019/12/06(金) 23:53:28.48ID:56eN38dl
>>573
server叩いて何してんのよという話
まずはコマンドプロンプトなりで普通にコマンド叩けるようになってからスクリプトにしなされ

575デフォルトの名無しさん2019/12/10(火) 19:46:27.81ID:lD8f3lrI
もうここは初心者用スレとして成立してないなw

576デフォルトの名無しさん2019/12/11(水) 00:59:28.66ID:VzIBlOls
本当の初心者なんですけどどこがおすすめですか?
さっぱり分かりません

577デフォルトの名無しさん2019/12/12(木) 10:56:26.42ID:lDgwg3+p
573です。sdk?入れてそこのadb.exe指すようにしたら裏マクロ動きました
DOSCMDから実際にタップされるまで半秒ほどかかっているのと、コマンド実行したらMumuを再起動するまでやたらカクつくようになるのはなぜでしょうか

578デフォルトの名無しさん2019/12/12(木) 11:26:37.80ID:u7RWFF/r
Mumuってエミュが重いか単純にPCのスペック不足

579デフォルトの名無しさん2019/12/12(木) 12:00:09.18ID:OHjSk6WK
スクリプトが悪いのでは
本スレで話題になってたように画像認識にウエイトがないとかそういう

580デフォルトの名無しさん2019/12/12(木) 19:50:24.51ID:D8fZkyt4
コマンドプロンプトで試して同じ挙動かどうか
まずは原因がUWSCなのか、PCその他環境なのか調べないと

581デフォルトの名無しさん2019/12/17(火) 21:25:34.41ID:+LcZYIpJ
excelのfindで見つからなかったときのcomエラー回避ってあるんでしょうか?
wikiみても載ってないし、vbaにあるIS NOTHINGも使えないし・・・

582デフォルトの名無しさん2019/12/17(火) 21:31:30.08ID:+LcZYIpJ
すみません、自己解決しました

583デフォルトの名無しさん2020/02/07(金) 17:05:22.18ID:4XbBvaET
saveimg(gazou,0,200,300,30,30,,0,img_fore)

とした時は今見えている画面の200,300の位置の30,30サイズのbmpが保存されますか?

またその画像を指定して同じ画面で画像検索できますか?

584デフォルトの名無しさん2020/02/07(金) 20:48:29.13ID:SnbR1xpB
されないんじゃない
てか動かしてから聞きにきてくれよ

585デフォルトの名無しさん2020/02/09(日) 14:17:47.93ID:+d0DSBvE
f12でソース見ると色の指定は#rrggbbで統一されてるのに
iegetsrcで全文抜き出して見ると部分的にrgb(n,n,n)になっている
なぜこんなことに…

586デフォルトの名無しさん2020/03/02(月) 09:25:47.29ID:1HOipiaV
すいません質問させてください
クリップボードに取り込んだwebのタイトルをそのままファイル名にして保存したくて調べているのですが
クエスチョンやスラッシュなどファイル名に使えない文字を変換してクリップボードに上書きする方法はありますか?
よろしくお願いします

587デフォルトの名無しさん2020/03/02(月) 09:33:54.26ID:1Poklgsp
変換とはどういうこと?消せばいいの?

588デフォルトの名無しさん2020/03/02(月) 09:50:57.67ID:1HOipiaV
消すかアンダーバーなどの使える文字に変換したいと思ってまさ。

589デフォルトの名無しさん2020/03/02(月) 09:51:59.04ID:1HOipiaV
消すかアンダーバーなどの使える文字に変換したいと思ってます。

590デフォルトの名無しさん2020/03/02(月) 09:52:58.04ID:1Poklgsp
Replaceで置換は?

591デフォルトの名無しさん2020/03/02(月) 11:58:20.46ID:RHbccdbo
ありがとうございました。
Replaceでうまく変換出来ました。
助かりました。

592デフォルトの名無しさん2020/03/09(月) 21:11:27.70ID:bpMBC8cG
すみませんが、知っている方がいらしたら、教えて下さい。
Pro版のシリアルはなんですか?

593デフォルトの名無しさん2020/03/09(月) 22:23:49.27ID:xFD8Q/oe
いいえなんではないです

594デフォルトの名無しさん2020/03/19(木) 08:38:19.27ID:8+JNVm+N
ゲームでレベリングのマクロ組みたいんですが
操作としては左右移動(右移動キー押しっぱなしで左移動キーで調整するやり方)しながら左クリック連打だけです
while 1
KBD(VK_D,DOWN)
while 1
KBD(VK_A,DOWN)
sleep(1)
KBD(VK_A,UP)
sleep(1)
wend
wend
左右移動はこれでできたんですが、ここに左クリック連打入れようとすると上手くいきません
どうすればいいですか?

595デフォルトの名無しさん2020/03/19(木) 09:28:56.69ID:E5mfm90d
関数化してthreadで別々に動かす

596デフォルトの名無しさん2020/03/19(木) 09:36:31.31ID:8+JNVm+N
何やら新しいUWSC知識が必要のようですね
調べてきます

597デフォルトの名無しさん2020/03/19(木) 13:31:47.43ID:8+JNVm+N
まったく意味がわかりませんでした

598デフォルトの名無しさん2020/03/19(木) 13:39:26.52ID:Nl/flVcz
>>597
ヘルプのスクリプト構文のスレッド生成読んだ?
それに当てはめるだけなんだけど

599デフォルトの名無しさん2020/03/19(木) 14:00:08.00ID:8+JNVm+N
thread BTN()
BTN(LEFT,CLICK,666,374,200)
とかなんか色々やってみたけどだめですね

600デフォルトの名無しさん2020/03/19(木) 14:20:06.38ID:8+JNVm+N
他のマクロソフトと組み合わせて操作できました

601デフォルトの名無しさん2020/03/19(木) 14:32:16.48ID:E5mfm90d
それならuwsc2つ起動する方がマシな対処だが…まあ希望が満たせりゃあ何でもよかろ

602デフォルトの名無しさん2020/03/19(木) 15:51:14.43ID:I/ufwmzm
Threadって便利なんだけど変数に同時参照すると固まるのがな
確率的には物凄く低いんだろうけど・・・

603デフォルトの名無しさん2020/03/19(木) 16:30:35.09ID:Nl/flVcz
参照してるだけで変数を書き換えてなければ大丈夫とおもったんだけど

604デフォルトの名無しさん2020/03/19(木) 19:08:00.33ID:vTx0gGjB
スレッドが最大64個も作れるから面白いんだよな

605デフォルトの名無しさん2020/03/29(日) 20:54:34.79ID:Qbasze3R
初心的質問で申し訳ありません。
ページ内の画像を探し見つければクリック、見つからなければスクロール+画像検索、
を三回繰り返して見つからなければ処理を停止してメッセージを出すというマクロを考えているのですが、まぁ難しくて
とっかかりすらつかめていません。
ご教示いただけませんでしょうか。よろしくお願いいたします。

606デフォルトの名無しさん2020/03/29(日) 20:58:57.31ID:pPr1xaO6
自分ではどこまでできたの?コード貼ってくれ

607デフォルトの名無しさん2020/03/29(日) 21:50:02.93ID:/EyNUXLu
>>605
まずそれぞれ単体で動くものを作る
ページ内の画像を探す
クリックする
スクロールする
三回繰り返す
処理を停止する
メッセージを出す

あとは条件とかでくっ付けるだけ

608デフォルトの名無しさん2020/03/29(日) 21:59:10.97ID:Qbasze3R
>>606
>>607
すいません、一番基本的な動きすらまともに作れてません…

ifb chkimg("img.bmp")
btn(left,click,g_img_x,g_img_y)
else
KBD(VK_SPACE)
print "画像が見つかりません"
endif

609デフォルトの名無しさん2020/03/30(月) 02:39:01.09ID:bxGMTHZO
>>608
そのサイトがどうなってるかわからないからなんとも言えないけど
スクロール量をコントロールするの難しくないか?
違ったアプローチが必要な気がする

610デフォルトの名無しさん2020/03/30(月) 02:57:48.27ID:fgzboYRU
g_img_x g_img_yがどこの位置か知ってる
クリックするのはその座標で間違いない

611デフォルトの名無しさん2020/03/30(月) 03:21:30.15ID:bxGMTHZO
ああ、そうか 失礼しました

612デフォルトの名無しさん2020/03/30(月) 05:32:35.02ID:Lez7EJJt
画像 = 画像の場所.bmp
カウンター = 0

while カウンター < 3
ifb chkimg(画像,画像の色、位置指定)
sleep(1)
btn(left,click,g_img_x,g_img_y,50)
else
btn(left,down,画面のどこかx,画面のどこかy,50)
mmv(スクロール幅)
btn(left,up,上と同じx,スクロール幅y,50)
print "再検索"
カウンター = カウンター + 1
endif
wend

613デフォルトの名無しさん2020/03/30(月) 09:11:09.86ID:K5J2OuWJ
スペースキーで1ページ分スクロールするの知らないのだろうか…

614デフォルトの名無しさん2020/03/30(月) 10:27:43.27ID:Lez7EJJt
>>613
ごめん、知らなかった
それってゲームのフレンド一覧でも使えたりする?

615デフォルトの名無しさん2020/03/30(月) 11:10:38.38ID:/ApxdN83
普通は無理でしょう

616デフォルトの名無しさん2020/03/30(月) 11:26:59.29ID:8cfGBpvw
いや、>>608で、スペースキー押してるじゃん
608の勘違いの可能性も否定できないけど、スクロールでまず思いつくPgDownじゃないから、多分、普段行っている操作なんだと思う
今の段階で、スペースキーでスクロールしない対応しても、複雑になるだけで意味ないよ


あと、
>>610さんのコメント、文尾に?がついてないせいで、逆の意味になってるよ
IF文の真偽が出てないけど、printの位置から、スクロールしなかったんだと思うから、とりあえず真と仮定
真の場合は、クリックが失敗してるわけだから、まず、クリック位置を怪しむべき

617デフォルトの名無しさん2020/03/30(月) 13:03:44.81ID:Lez7EJJt
>>615
無理かぁ
じゃあこのまま行くか

>>616
btnにx軸y軸はあるけど最後に時間入れてないのって問題ないの?

618デフォルトの名無しさん2020/03/30(月) 14:25:56.44ID:8cfGBpvw
608=612,4,7 は無理があるから別人だよね

btnの時間引数は、必要な場合もあるし重要だけど、必須じゃないよ
手でクリックして動作するタイミングなら問題無いよ
時間調整が必要なのは、フォーカスの変更の様な、直前のコマンドの結果、Windows上で何かが変るのを待つ必要がある場合
調整しないと、変る前に動いちゃう事があるから、思い通りに動かないんだよ
経験上、btnで時間調整するより、sleep使った方がうまくいったし

それよりも、g_img_x,yって画像の端だから、画像の中央側にクリック位置をずらさないと画像をクリックしたことにならないよ
画像ファイルを、実際の画像よりも小さめに切取った場合は別だけど

619デフォルトの名無しさん2020/03/30(月) 15:44:58.10ID:Lez7EJJt
>>618
ごちゃごちゃと横から質問してごめんよ
自分は608ではないよ
時間も必須だと思ってた
詳しくありがとう

6206082020/03/31(火) 00:24:53.60ID:q/ETdZzS
sleep(2)
SPEAK("処理開始")
img=PARAM_STR[0]
rep = PARAM_STR[1]//繰り返す回数


counter = 0
while counter < rep
ifb chkimg(img)
sleep(1)
SPEAK("画像発見。")
 CALL called.uws(g_img_x,g_img_y)
 counter = counter + rep
else
KBD(VK_SPACE)
sleep(1)
counter = counter + 1
endif
wend

IFB counter=rep
SPEAK("ストップ")
BREAK
ELSEIF counter>rep
SPEAK("次の処理へ")


endif
KBD(VK_SPACE)

6216082020/03/31(火) 00:30:49.69ID:q/ETdZzS
誤投…orz完全に使うやつをカキコしてしまった
皆様のおかげでなんとか動かせるものが作れました!ありがとうございます
別の質問になってしまうのですが、callで呼び出した関数の…例えば上記のストップで親含めて停止させることは出来ますか?
よろしくお願いいたします

622デフォルトの名無しさん2020/03/31(火) 10:40:38.83ID:EP7/8t0I
exitとexitexitを調べよう
どうでもいいけどwhile内のifbでいずれにせよsleepするならifbの外でいいのではと思った

623デフォルトの名無しさん2020/04/04(土) 21:15:58.74ID:yfraQy7x
画像検索する範囲をちゃんと座標で指定するようにしたら早くなった

624デフォルトの名無しさん2020/04/15(水) 01:17:38.28ID:Nxi8vX8D
ChkImgXって普通に使えてる?
なんかうまく作動しない

625デフォルトの名無しさん2020/04/15(水) 05:11:08.81ID:HYKxrR9Z
長時間使ってると極稀にエラー起こすけど基本問題無いな

626デフォルトの名無しさん2020/04/15(水) 07:04:01.26ID:+ql6+04R
>>624
癖はあるけど動いている

バックグラウンド動作の画像認識はDirectX描画じゃないと駄目っぽい
chkimgではヒットするのにchkimgxでは全くヒットしない画像がある。chkimgxっていうか使ってるOpenCVライブラリの問題なんだろうけど

627デフォルトの名無しさん2020/04/25(土) 20:57:41.86ID:+DYe+iEQ
uwscを使用していると稀に external exception C0000264. と出てくるのですが、これはどうしたら出なくなりますか?

628デフォルトの名無しさん2020/04/26(日) 11:35:57.42ID:yth2UhWM
0xc0000264で調べて諦めるといい

629デフォルトの名無しさん2020/05/02(土) 19:11:57.36ID:hfp4FbZC
chkimgxを複数の並列処理で使用したいのですが上手くいきません。
一つのプロセスでしか機能しないのでしょうか?
複数で使えるのであればやり方などお教え頂きたいです。

630デフォルトの名無しさん2020/05/02(土) 22:26:35.09ID:yTTamFYE
グローバル変数に結果格納してるわけでタイミングによっては書き換えられてしまうからでは
どういううまく動かないかが分からんけど、これが原因なら実行後すぐに別の変数に退避するかスレッド別になるようにライブラリ書き換えるか、等々

631デフォルトの名無しさん2020/05/03(日) 14:58:09.85ID:J77i8eFq
procedure 並列()
while trur
if chkimgx(画像1.bmp,指定id1〜
msgbox(ok)
endif
sleep(1)
wend
fend

↑の様なものを並列処理で別のウィンドウidを指定し3つ程動かしているのですが、chkimgxでエラーが発生しました。と表示されて動作しません。
どういった方法を取れば解決出来ますでしょうか?

632デフォルトの名無しさん2020/05/03(日) 17:30:45.30ID:2n/B6drN
お前には無理だから諦めろ

633デフォルトの名無しさん2020/05/03(日) 19:36:38.64ID:JpRTnUDx
startup_chkimgx()してないだけでしょ

634デフォルトの名無しさん2020/05/04(月) 23:58:16.12ID:pqlhkoPy
>>630
> これが原因なら実行後すぐに別の変数に退避するか
それでもタイミング次第で駄目だよ

chkimgx実行前後に排他処理入れるしか解決方法ない

635デフォルトの名無しさん2020/06/26(金) 12:54:56.86ID:qsHwziaQ
サクラエディタの質問になってしまうのですが、指定した行、例えば2,6,14,32行を1度にコピーしたり挿入するにはどうすればできますか。
よろしくお願いします。

636デフォルトの名無しさん2020/06/26(金) 13:04:26.04ID:PH3cJrMz
何がよろしくお願いしますだよ、スレチ過ぎて回答なんか来ないぞ

637デフォルトの名無しさん2020/06/26(金) 13:44:24.55ID:ECSKM2w9
サクラエディタってマクロないのかよ

638デフォルトの名無しさん2020/06/26(金) 18:59:51.57ID:42Sy87qY
あったはず

639デフォルトの名無しさん2020/06/26(金) 19:24:43.88ID:nyM1H0WV
UWSCのマクロを作るのにサクラエディタを使っているけどスレチだな

640デフォルトの名無しさん2020/06/26(金) 19:32:51.02ID:nyM1H0WV
そういやサクラエディタと
大昔にMIFES、VZ、 WZエディタを使っていたけど
評判の良い秀丸エディタは使った事が無かった

641デフォルトの名無しさん2020/06/26(金) 19:59:38.01ID:ECSKM2w9
秀丸のマクロをUWSCのセレクトボックスに登録して呼び出して使ってたりする

642デフォルトの名無しさん2020/06/26(金) 20:10:29.72ID:42Sy87qY
秀丸エディタは有料だから手を出す気にならない

643デフォルトの名無しさん2020/06/27(土) 00:34:23.45ID:iUYo3nGX
秀丸=四千円もするもんな

644デフォルトの名無しさん2020/06/27(土) 07:47:14.58ID:Jk2b87/7
>>643
やめろ

645デフォルトの名無しさん2020/06/27(土) 14:33:58.98ID:LSvaexnY
このネタわかる人は高齢者

646デフォルトの名無しさん2020/07/03(金) 01:22:06.10ID:Dvup0ZMV
質問です
初めてuwsc入れたのですが記録ボタンが灰色になっていて操作が出来ません
色々調べてみたけれどもイマイチよく分からなかったのですがどうすればいいでしょうか?
win10のdynabookです

647デフォルトの名無しさん2020/07/04(土) 09:42:53.15ID:bhHjhVrL
>>646
UWSC.exeと同じフォルダにRecUws.dllありますか?

648デフォルトの名無しさん2020/07/04(土) 13:54:48.14ID:3Gp7+FfQ
>>647
あります
その後が分かりません…

649デフォルトの名無しさん2020/07/04(土) 14:06:52.81ID:BpefeSFV
     ○ ○
  ○
○      ○
    ●    ○
       ○

●が自機で、○が敵です
●から一番近い○を順にタッチしていきたいのです(●は移動するが○はその場所から消えない)
が、どうやればいいのか皆目検討がつきません
こういうアルゴリズムって何ていうんでしょう

650デフォルトの名無しさん2020/07/04(土) 14:11:12.78ID:BpefeSFV
間違えました
×(●は移動するが○はその場所から消えない)
○(●は移動する。○はタッチすると死骸×に変化する)
でした

651デフォルトの名無しさん2020/07/04(土) 16:00:55.72ID:rpET5GXf
アルゴリズムは知らんけど
CADCAMの工作機械ドリル穴あけパスの最短距離
自動生成機能みたいなやつだな

652デフォルトの名無しさん2020/07/04(土) 16:29:11.29ID:OTAHPrbr
巡回セールスマン問題?
これを真面目にやると面倒だけれど、
接近してきた画像を押すだけなら
野暮な力技で十分な気がする。

653デフォルトの名無しさん2020/07/04(土) 16:38:02.20ID:VhIEqfUN
>>649
単純に距離√(xx+yy)で当たり判定で良いんじゃまいか

654デフォルトの名無しさん2020/07/04(土) 17:17:22.17ID:DEQjmcqB
>>653
欲しいのは距離じゃなくて近い奴だから
ルート取る必要ないだろ。

655デフォルトの名無しさん2020/07/04(土) 17:38:19.56ID:TN5VprEm
>>654
は?

656デフォルトの名無しさん2020/07/04(土) 17:46:26.32ID:1QfEBuvL
ルートを計算しなくても大小関係変わらんだろ
今回に関してはバカに絡まれるデメリット背負ってまでルートの計算負荷を減らす意味はないと思うけど

657デフォルトの名無しさん2020/07/04(土) 17:56:59.79ID:VPpCSEzQ
>>650
白は移動したら移動後の位置から近い位置の黒にいくのと、それとも元の白の位置を基準にするのとどっち?
まあ、前者でも後者でもやることはchkimgなりで位置のリストが取得できるからそれ使って白位置の近似値からタップするだけよ
アルゴリズム? 知らんな

658デフォルトの名無しさん2020/07/04(土) 18:01:03.68ID:Mq6JcoKF
距離と分かる式にするか処理を少しでも軽くするかは一長一短で
自分が一番初めに思いついた方にしとく方が可読性が上がる
人に言われて変えるものではないと思う

659デフォルトの名無しさん2020/07/04(土) 18:08:20.26ID:DEQjmcqB
>>656
これさあ、昔読んだ叫ぶCプログラマっていう本に出てきた一節でさ。
それとも同じ作者のプログラマを笑えだったかな。

660デフォルトの名無しさん2020/07/04(土) 18:10:16.03ID:DEQjmcqB
>>658
この程度じゃコメントすら要らんだろ。
ま、距離の大小は2乗の時点で判明とかコメントつけときゃOK

661デフォルトの名無しさん2020/07/05(日) 14:07:22.77ID:s67fMTSC
1) 視界内の全敵位置取得
2) abs(自XY - 敵XY[数])で並べて近い敵に移動してタッチ
の繰り返しでやろうと思います
ありがとうございました

662デフォルトの名無しさん2020/07/27(月) 17:13:01.26ID:LFattNL9
noxで
1,画像Aを探してタップ(見つからなくなるまで)
2,画像Bを探して見つからなかったら下にスワイプして1に戻る
3,画像Bが見つかったら終了
のような動作をさせようと思って以下のように作って見たのですが、画像Aを発見してループ2を一周した後は画像Aと画像Bが見つからないが交互に出てループ1から抜け出せない状態です。
print "テスト開始"
while True //ループ1開始
while True //ループ2開始
ifb CHKIMGX("画像A.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
print "画像Aを発見しました。"
X1 = g_imgx_x + 5 + random(5)
Y1 = g_imgx_y - 30 + 5+ random(5) // ウィンドウ枠分の座標補正とクリック位置調整
DOSCMD("nox_adb shell input touchscreen tap " + X1 + " " + Y1)
sleep(2)
DOSCMD("nox_adb shell input touchscreen tap 384 541")
sleep(2)
DOSCMD("nox_adb shell input touchscreen tap 272 523")
sleep(2)
else
print "画像Aは見つかりませんでした。"
break
endif
wend //ループ2終了
ifb CHKIMGX("画像B.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)=FALSE
print "画像Bは見つかりませんでした。"
DOSCMD("nox_adb shell input swipe 288 600 288 300 600")
sleep(2)
else
print "画像Bを発見しました。"
break
endif
wend //ループ1終了

663デフォルトの名無しさん2020/07/27(月) 17:21:22.43ID:LFattNL9
ちなみに画像Aがない状態でスタートすると、画像Aが表示されるまで下にスワイプ(途中に画像Bがあってもスルー)してループ2を1周してからまた画像AとBが見つからないループに入ってしまいます。
また、adbを使わないマウスが取られるマクロの方は一応問題なく動いてます。

664デフォルトの名無しさん2020/07/27(月) 18:37:45.17ID:Ig/59khU
winid = getid("NoxPlayer")だろうとwinid = getid("メモ帳")だろうと関係なくwinidが1になってしまうのは何故なんでしょうか。

665デフォルトの名無しさん2020/07/27(月) 19:56:01.58ID:VYBQARBr
>>662-663
単にスワイプ後の慣性で画面が動いてて画像認識出来てないだけじゃない?

画像をタップする座標は乱数入ってるのにその後のタップやスワイプは固定座標なのとか
色々ツッコミどころはあるけど、まずはタップとスワイプを関数化しておくのをオススメする

procedure tap(x, y)
  doscmd("nox_adb shell input touchscreen tap " + x + " " + y)
fend

procedure swipe(x1, y1, x2, y2)
  doscmd("nox_adb shell input swipe " + x1 + " " + y1 + " " + x2 + " " + y2)
fend

666デフォルトの名無しさん2020/07/27(月) 20:31:25.50ID:LFattNL9
>>665
回答ありがとうございます、スワイプ後の慣性も考えてsleepを長めに取ったり、最初の時点で画像Aが複数ある状態でスタートしても結果は変わらずでした。
procedureは使ったことがなかったので、調べながら修正してみます。

667デフォルトの名無しさん2020/07/27(月) 21:12:51.27ID:2I3xUck9
サイトハッキングて意外と簡単やな
http://re-file.com/18k/1669/

668デフォルトの名無しさん2020/07/27(月) 21:21:06.80ID:Y/C2ypnr
>X1 = g_imgx_x + 5 + random(5)
>Y1 = g_imgx_y - 30 + 5+ random(5) // ウィンドウ枠分の座標補正とクリック位置調整
これさあ
変数名って大文字小文字区別するんだっけ

669デフォルトの名無しさん2020/07/27(月) 21:49:14.47ID:LFattNL9
>>668
X1とY1をaaaとbbbにしてみたらちゃんと動作してくれるようになりました。
大文字と小文字を区別するにしても変数にx or y+数字は安直過ぎました。
解決方法を教えていただきありがとうございます。

670デフォルトの名無しさん2020/07/27(月) 22:31:39.36ID:3jtmTLJJ
>>667の本当の内容

【閲覧注意】【メキシコ】麻薬カルテル、元組織のメンバーを「皮剥ぎの刑」に処す - 18禁グロ

▼カテゴリ - 18禁グロには一部、異様・奇怪・猟奇的・暴力シーン・グロテスクな表現が含まれていますので、閲覧制限をしています。

1. 18歳未満は閲覧禁止です。
2. 耐性が無い方は閲覧しないでください。
3. 閲覧は自己責任でお願い致します。

※上記、18歳以上で同意できる方は入室してください。
PASS:7777

671デフォルトの名無しさん2020/07/28(火) 01:07:54.67ID:dFO+mkSs
>>666
まず画像Aと画像Bを認識出来てる?
同じ画像に見えても表示される座標が変わると一致率も変わっているとかよくある

どこが問題か分かりやすくするために、デバッグは小さいパーツに分けてやったほうが良い
例えばスワイプ後に画像Bを探すだけのコードを試すとか

672デフォルトの名無しさん2020/07/28(火) 10:35:41.28ID:PZ7FD++0
>>671
画像Aや画像Bの認識は問題なく、>>668であるように変数にx1とy1を使っていたのが原因でした。

673デフォルトの名無しさん2020/07/28(火) 11:33:20.45ID:hWwhsWN2
どなたか>>664について分かる方みえませんか?
getid("アプリ名")をしても起動中のアプリは1、起動していないアプリは-1となり、1か-1しか結果が返ってきません。
ウインドウIDを取得したいのですが、何がいけないんでしょうか。
UWSC5.3.0.2、win10 64bitです。

674デフォルトの名無しさん2020/07/28(火) 11:45:37.39ID:PZ7FD++0
>>671
更に質問で申し訳ないのですが、procedure使ってswipe(x1, y1, x2, y2)のようにして簡略化することはできたのですが、ここから更にランダム性をprocedure上で反映させるにはどうしたら良いでしょうか?
とりあえず今のところメインとなるuwsファイルで
swipe(x1+ random(5), y1+ random(5), x2+ random(5), y2+ random(5))
のようにすれば動作することは分かったのですが、producerで一括して処理しようと思い
procedure swipe(x1, y1, x2, y2)
  doscmd("nox_adb shell input swipe " + x1+ random(100) + " " + y1+ random(100) + " " + x2+ random(100) + " " + y2+ random(100))
fend
としてみたのですがエラーは出ないもののなにも動作しない状態です。

675デフォルトの名無しさん2020/07/28(火) 12:32:50.82ID:BIndr6P+
>>673
winidはそもそも数値で表現されるオブジェクトじゃない
あえてそれを表示しようとすると1/-1で状態を返すという仕様なだけで別にidが1/-1ではない

>>674
doscmdの()内で+で記述すると加算された合計値じゃなくてそれぞれが文字列で結合されちゃうんじゃかいかな?
括弧でくくってやればいいと思うよ

676デフォルトの名無しさん2020/07/28(火) 13:09:15.41ID:PZ7FD++0
>>675
おっしゃる通りにしたところ上手く動作してくれました、ありがとうございました。

677デフォルトの名無しさん2020/08/01(土) 10:55:03.03ID:A3rem5Z4
吹き出しが下から噴き出すプログラムを作ってみた

PUBLIC RZZ=0
While true
FKIDSI()
Fukidasi(RZZ,1200,10,0,3,,,$AAAAAA)
Wend
procedure FKIDSI()
IF RZZ<64
Thread FKDSSUB()
ENDIF
fend
procedure FKDSSUB()
RZZ = RZZ + 1
Xinc = ((random(6)+1) * (random(2)*2 -1)) /1.9
Yinc = (random(8)/10+0.2) /4
z=random($FFFFFF)
X=640
Y=1010
for i=-100 TO 100
Fukidasi(" ", X, Y, 0, ,,,Z)
SLEEP(0.01)
Ymov = Yinc * i
X = X + Xinc
Y = Y + Ymov
next
RZZ = RZZ - 1
fend

678デフォルトの名無しさん2020/08/01(土) 10:59:28.16ID:Bo5IFXl7
fendって何だっけ

679デフォルトの名無しさん2020/08/01(土) 10:59:55.52ID:Bo5IFXl7
procedure閉じてるのか

680デフォルトの名無しさん2020/08/01(土) 11:05:00.24ID:A3rem5Z4
あとマウスカーソルについてくる吹き出し
PUBLIC RZZ=0
PUBLIC X=0
PUBLIC Y=0
XX=0; YY=0;
WHILE TRUE
FOR RZZ=0 TO 55
F=0;
WHILE (F=0)
XX = X; YY = Y;
X = G_MOUSE_X; Y = G_MOUSE_Y;
IF (XX <> X) OR (YY <> Y)
F=1
ENDIF
WEND
Thread FKDSSUB()
NEXT
WEND
procedure FKDSSUB()
TZ=RZZ-1
IF TZ = -1 THEN TZ = 55
Fukidasi(RZZ, X+10, Y+10, 0, ,,,random($FFFFFF))
WHILE TZ <> RZZ
SLEEP (0.01)
WEND
FEND

681デフォルトの名無しさん2020/08/01(土) 12:38:15.63ID:I5HfbaHP
死ぬほど読みづらいからコード貼る時は適度な改行とインデントつけてくれ
5chだとアンダーバー4つか全角スペース2個でインデント1つになる

while True
____ifb

while True
  ifb

682デフォルトの名無しさん2020/08/01(土) 14:01:23.40ID:U7vGE7b3
>>677 >>680
インデントされてれば引用で専ブラで見れるはず

683デフォルトの名無しさん2020/08/01(土) 14:34:06.11ID:Bo5IFXl7
自分で好きに整形しろ

684デフォルトの名無しさん2020/08/01(土) 16:55:40.92ID:Uz4ilC0D
「Harigami」を使ってみてはどうだ

https://harigami.jp/cd?hsh=8e4b495c-d3f3-4267-9154-8d83dc1cbd8b

685デフォルトの名無しさん2020/08/16(日) 21:01:17.32ID:k+kUeFyT
CHKIMGXをWHILE TRUEの外に出すとエラーが出てしまいます。
なぜなんでしょう
下記でメインからサブ関数でCHKIMGXは読んでいます

// ChkImgX関数をインクルード
CALL ChkImgX.uws;

while true
TRY
startup_chkimgx() //CHKIMGX関数開始

 ****ここにプログラム
 CHK(LOC)

FINALLY
shutdown_chkimgx() //CHKIMGX関数停止
ENDTRY

wend

function CHK(loc[])
  CHKIMGXをここで使う
FEND

686デフォルトの名無しさん2020/08/17(月) 02:52:44.83ID:UvoRp25i
何エラーよ

687デフォルトの名無しさん2020/08/17(月) 19:53:01.04ID:KciEC6qM
*_chkimgxは何度も呼び出すような関数じゃないよ
どっかでリークしてるオチじゃないの

688デフォルトの名無しさん2020/08/17(月) 23:35:10.11ID:wjXkQQv2
TRYがWHILEENDの中でずっと回っていたのだけど、
WHILEENDの外に出したら治った・・・
皆様ありがとう

689デフォルトの名無しさん2020/08/18(火) 12:57:20.18ID:suCzDasT
CHKIMGやCHKIMGXの画像検索範囲について質問です。
大きさ10x10の画像を0,0 100,100の範囲から探す場合
画像左上のピクセルが100,100に到達するまで検索しているのか
画像右下のピクセルが100,100に到達かのどちらでしょうか

690デフォルトの名無しさん2020/08/18(火) 18:59:40.87ID:5Qy/mHcW
右下かなと思うが、試してみたら?
チェッカーパターンな背景作ってマスの画像で検索

691デフォルトの名無しさん2020/09/02(水) 22:09:27.14ID:fUjg46/2
uwscの実行中に離席した場合などでディスプレイの電源が切れないようにする方法ってないでしょうか?
今は5分に1回マウスを動かす処理を入れて対応していますがネット閲覧時にいきなりマウスが動くので操作しにくいです
コントロールパネルの電源オプションで設定を変更すればよいのはわかりますがuwsc実行中だけというのが理想です
よろしくお願いします

692デフォルトの名無しさん2020/09/02(水) 22:16:34.51ID:wdeVv3mH
UWSCで電源オプションの設定を変えれば

693デフォルトの名無しさん2020/09/02(水) 22:57:57.26ID:85wlAF9N
>>691
事前に2種類の電源プランを作っておき
UWSCのスクリプト内で
doscmd関数を使い
Powercfg.exeに電源プラン変更コマンドを送る

コマンドについては以下を参考に
https://ascii.jp/elem/000/001/877/1877882/

うまく組めばマクロ終了時に電源プランを自動的に戻すことも可能

694デフォルトの名無しさん2020/09/02(水) 23:09:28.81ID:pBGvn6/E
//五分に一度 ALT を押してスリープ回避
while 1;sleep (300);kbd(vk_alt);wend;

695デフォルトの名無しさん2020/09/03(木) 00:02:11.56ID:vpra+F8w
>>691
DEF_DLL SetThreadExecutionState(DWORD): DWORD: kernel32
CONST ES_CONTINUOUS = $80000000
CONST ES_DISPLAY_REQUIRED = $02
SetThreadExecutionState(ES_CONTINUOUS or ES_DISPLAY_REQUIRED)

696デフォルトの名無しさん2020/09/03(木) 20:27:05.96ID:ha/scr+l
>>691
外部ソフト併用で良ければ
FavSleepStopはおすすめ。

697デフォルトの名無しさん2020/09/24(木) 12:33:36.91ID:eUQ7jF7Q
画像aが出るまでループし、画像aが出たらreturnという仕組みにしたいのですが
ループせず最後の所で止まってしまいます。少々省略しないと貼れないので省略しますが
これどうなっているんでしょうか?どこが間違いでしょうか?そのまま貼ります。



WHILE (CHKIMG("A.bmp")=FALSE)
SLEEP(0.5)
KBD(VK_P,DOWN,50)
KBD(VK_P,UP,50)
SLEEP(0.5)
WEND
IFB CHKIMG("A.bmp")
SLEEP(0.5)
KBD(VK_O,DOWN,50)
KBD(VK_O,UP,50)
SLEEP(0.5)
ENDIF

698デフォルトの名無しさん2020/09/24(木) 12:35:05.91ID:eUQ7jF7Q
画像aが出るまでループし、画像aが出たらOという仕組みにしたいだった

699デフォルトの名無しさん2020/09/24(木) 17:12:59.11ID:FiwMBeQt
単にループさせるだけなら

While 1

Wend
で良くね なんか条件が書いてあるからループしなくなるのでは

700デフォルトの名無しさん2020/09/24(木) 17:13:38.10ID:FiwMBeQt
あとWendより後にifbがあるからループの中に条件がないね

701デフォルトの名無しさん2020/09/24(木) 21:34:49.94ID:mGnJTDMd
>>697
これをみても特に問題があるとは思えない

>ループせず最後の所で止まってしまいます。

疑問1:ループしていないことをどう確かめたのか?
疑問2:最後の所とはどこか?
疑問3:終わるではなく止まるなのか?

ループ中、ループ後に PRINT か MSGBOX かを入れて
たしかにそこを通ってるかどうか確かめたほうがいいと思う

MSGBOXを使う場合はどうせテストなのでループ中のSLEEPは
2秒くらいとったほうが扱いやすい

702デフォルトの名無しさん2020/09/24(木) 21:45:43.40ID:/TzBJHGH
こんなこと書いてるしネタだろう
>少々省略しないと貼れないので省略しますが
>そのまま貼ります。

703デフォルトの名無しさん2020/09/29(火) 22:34:47.52ID:FsRpumhX
記録すらできないアプリがあるのか…これどうなってんだ
アプリはR2games.comのR2Client
12月末のFlash終了後このclientで引き続きプレイできるそうなのでインストールしてみたのだけど
UWSCで記録が全くできないので自動化が出来ない

704デフォルトの名無しさん2020/09/29(火) 23:38:54.63ID:0MYSuhb/
まあ、中身Flashのままみたいだからなあ

705デフォルトの名無しさん2020/09/29(火) 23:48:20.89ID:FsRpumhX
いやgetidすら取得できない

706デフォルトの名無しさん2020/09/30(水) 16:30:38.78ID:QVZpoBrX
flashのid取得するにはまずウィンドウidとって、その次にハンドル取得しなきゃダメだよ

707デフォルトの名無しさん2020/10/01(木) 19:39:40.83ID:LoI0BqO6
>>703の件は解決したというか
今日起動してみたら問題なく取得できた
なぜ取得できなかったのかはわからないけどこれで懸念事項は払拭できた

>>706は勘違いしてるけど解決したからいいです

708デフォルトの名無しさん2020/10/02(金) 14:26:32.02ID:fC3or5Mo
ある期間からある期間の月数って、
どうやったら求められる?
例えば2019年10月から2020年3月は6ヶ月。
これを求めたい。

709デフォルトの名無しさん2020/10/02(金) 14:38:31.92ID:b1fFJk4v
検索したけど分からんかった
年×12+月で引き算+1したら?

710デフォルトの名無しさん2020/10/02(金) 15:37:29.99ID:fC3or5Mo
なるほど!
頭、いいね。
やってみる

711デフォルトの名無しさん2020/10/03(土) 09:16:10.12ID:A1z8cMTv
autoitを使ってる人いる?

712デフォルトの名無しさん2020/10/09(金) 00:15:11.67ID:fWH520+c
>>711
今は使ってないが、前は結構使ってた。

713デフォルトの名無しさん2020/11/06(金) 23:06:53.83ID:362vvKB1
2つのスクリプトを同時に実行したいのですがどのような処理を書くべきでしょうか?

//同時.uwsの内容
call 処理1.uws
call 処理2.uws

こんな感じで書いても処理1.uwsが動くだけです
処理1.uwsが終わったら処理2.uwsが動くと思うのですがそうではなく1と2を同時に実行して別々の動きをして欲しいです
uwscの実行ファイルとそれぞれのスクリプトファイルは全て同一フォルダにあるものとします
よろしくお願いします

714デフォルトの名無しさん2020/11/06(金) 23:09:52.79ID:oall+sef
thread 処理1.uws
thread 処理2.uws

715デフォルトの名無しさん2020/11/07(土) 20:04:03.01ID:vukJSlcq
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つしかないので
そういう操作がある場合は
奪い合いが起こることを意識する必要がある

716デフォルトの名無しさん2020/11/08(日) 09:07:47.79ID:96WGa2GX
>>714
>>715
試行錯誤してて返事が遅くなりました
スクリプトの挙動が少しおかしいですが目的通りに動いてくれるようになりました
なんか変だけど動いてるからまあええかとなってしまうから進歩しないんだなと実感しました
ありがとうございました

717デフォルトの名無しさん2020/11/15(日) 21:51:04.27ID:PgpnhPdo
参考にしようと思って開いたnaverまとめが9月末で閉鎖してる…

718デフォルトの名無しさん2020/11/25(水) 11:53:39.76ID:Qh6houu2
>>716
同時に実行されると困るような関数使ってたりするとはまるので注意

719デフォルトの名無しさん2020/12/26(土) 22:00:19.24ID:60sfrFxz
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を認識するにはどうすればよろしいのでしょうか

720デフォルトの名無しさん2020/12/26(土) 23:50:39.26ID:c93B7w+q
>>719
SAVEIMGのIMG_BACKで取得できなかったら
アプリ自体が非アクティブ時の描画をサボってるから
どうやっても取得できない

721デフォルトの名無しさん2020/12/27(日) 00:47:30.15ID:n8fvXRaD
>>719
VMware等仮想OSの方でNOXを動作させてアクティブにすれば
Vmwareを最小化にしても内部ではアクティブですからね
こういうときは多コアのCPUが有利なので8コアや16コアのCPUを買おう!

722デフォルトの名無しさん2020/12/27(日) 01:23:55.59ID:2030r+Fs
>>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)
こちらは認識してくれているので、記述のミスはないと思います

723デフォルトの名無しさん2020/12/27(日) 06:46:05.34ID:ILpVLMzN
画像が異なるが答えなのでは…?
実物も見せず言うだけ言われても何も分からんがな

724デフォルトの名無しさん2020/12/27(日) 11:11:31.79ID:Go+qnVGA
画像が異なるってことはチェックしてる画面が違うわけで
画像以外のパラメータがどれか合ってないのでは

725デフォルトの名無しさん2020/12/27(日) 13:39:37.49ID:Xj0rz7S9
よく知らないけど、X版とCHKIMGでは判定方法が違うんじやないの?
X版は、かなり暗くても高スコアでヒットするから

726デフォルトの名無しさん2020/12/27(日) 13:58:17.99ID:lIVD6Aho
CHKIMGX( "2.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color)
これのx1,y1,x2,y2を使ってsaveimgしたbmpを2.bmpに差し替えてどうか
PrintScreenから作ったbmpがおかしいか、座標がおかしいかわかるでしょ

727デフォルトの名無しさん2020/12/27(日) 15:35:17.18ID:2030r+Fs
>>723-728
いろいろと勘違いさせてしまいました

まず2.bmpの部分はCHKIMGを用いれば画像認識されているので現状意図した動作はされています
ですので、PrintScreenしたbmpがおかしいということもないと思います
疑問なのは、あいまい画像認識のCHKIMGXの方が高確率で認識されると思うのですが、
なぜあいまい画像認識のCHKIMGXでは認識せずにCHKIMGの方でないと認識しないのかとういことです

1.bmpは関係ありません
ただ1.bmpと2.bmpでは認識してもらいたい画像の部分だけ変えてる以外にCHKIMGXの記述を変えてないので、
記述間違いなら1.bmpも画像認識されないから2.bmpが画像認識されないのも理解できるけどっていうことです

728デフォルトの名無しさん2020/12/27(日) 16:00:49.64ID:2030r+Fs
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を認識しないので動作しないということです

729デフォルトの名無しさん2020/12/27(日) 16:46:19.54ID:Go+qnVGA
PC一回再起動したら?

730デフォルトの名無しさん2020/12/27(日) 19:14:21.24ID:ILpVLMzN
>>728
だから判定したい場面も判定画像も上げずに目隠しで言われてもエスパー回答しかできねーのよ
ゲームの絵貼りたくないならマス目画像とか適当な背景画像で状況再現したセットをくれ

731デフォルトの名無しさん2020/12/27(日) 19:37:44.59ID:majDbP6B
>>728
X版はデバッグモードあるから有効にしてみたら何かわかるかも知れない

732デフォルトの名無しさん2020/12/28(月) 15:08:59.57ID:Btd6jx/E
自己解決しました、お騒がせしました

733デフォルトの名無しさん2020/12/28(月) 15:12:22.09ID:bQ1hkiX8
原因はなんだった?

734デフォルトの名無しさん2020/12/28(月) 15:20:34.10ID:A2LpudMi
>>732
実際に起きてた問題と原因と解決した方法を報告してね

735デフォルトの名無しさん2020/12/28(月) 19:16:35.66ID:lHgMwOra
>>732
ネットでの質問は、自己解決した場合もその内容を具体的に報告することがマナーとなっていますのよー

そうしないと情報の共有が出来なくて回答者は無駄足になるし、
聞き逃げが続くと誰も答えなくなるかもしれないからね

736デフォルトの名無しさん2020/12/28(月) 19:31:08.48ID:RUvOsexB
自己解決したんだから回答者は答えてないのと同じだと思いますが

737デフォルトの名無しさん2020/12/28(月) 19:36:28.69ID:rQ8H54wA
まー多分つまんない勘違いか思い込みだったんだろう
んなもん共有されても参考にならないしいんじゃね

738デフォルトの名無しさん2020/12/29(火) 02:36:48.48ID:HcXyWfHn
仰る通り、回答者もいなかったので記載するほどでもないと思っていました

CHKIMGで認識できて、あいまい認識できるCHKIMGXが認識されなかった問題ですが、CHKIMGXでの認識は無理だと判断しました
SAVEIMGで画像取得しても特に画像に違いが見当たらず、
認識する範囲を画面全体から、認識してもらいたい画像がある範囲のみに絞っても無理
判定閾値の条件を緩くしたら、今度は画像が表示されていないのに認識してしまうほどでした
CHKIMGXでは色幅が利用できないようなので、一見わかりづらいですがおそらくそこに問題があったのではないかと思います

739デフォルトの名無しさん2020/12/29(火) 08:14:52.64ID:VfYR7jYh
CHKIMGXの着目する色では対応できなかったということか

最終的に原因を書いてくれたのだからいいけど
>>719>>722にいくつか回答がついたのだから原因は書くべきでしょう
例え回答が役に立たなかったとしても、回答者は質問に対して時間を割いたのだから
それは質問者の最低限のマナーだとおもうよ
そうでなければ見返りもなく回答する人がいなくなって質問スレは成り立たくなる

740デフォルトの名無しさん2020/12/29(火) 09:42:18.91ID:kNpkOyS+
>>738
>回答者もいなかったので記載するほどでもないと思っていました

うん。それ間違いだから直そうね
それはさておき、範囲の比較じゃ無駄が多いから、peekColorでfunction作ったほうが速いんじゃね
何に使うのか知らんが、ゲームの画面監視でHP・MP・敵と第三者を常時監視して完全な自動戦闘するなら断然軽かったぜ

741デフォルトの名無しさん2020/12/29(火) 14:54:12.96ID:4L/gF/i1
昔mixiゲームにあったクライムワールドで
格下相手に粘着して5万勝以上稼いだのは僕です
マクロ様々でしたね〜!

742デフォルトの名無しさん2020/12/29(火) 15:00:52.48ID:PT/2WgOq
それって金もうかるん?

743デフォルトの名無しさん2020/12/29(火) 20:59:49.89ID:/PhRpDJG
>>738
CHKIMGXはモノクロに変換して比較するから色違いの画像とかには向いてないよ

744デフォルトの名無しさん2020/12/30(水) 14:54:33.60ID:lWlFiWq8
>>738
chkimgxで認識できなくてchkimgだと認識する画像パターンは存在するからね
chkimgxっていうか使ってるOpenCVライブラリの問題だと思う。もしかしたら、こっちのバージョン上げて作り直したら解消するかもしれない

745デフォルトの名無しさん2020/12/30(水) 15:51:05.24ID:jnop5f2w
もう書かれてる通り色の扱いでしょ

746デフォルトの名無しさん2020/12/31(木) 09:53:15.79ID:q35RE35p
windows10の1909から20H2へアップデートしたらブラウザの描画が変わって画像取得をやり直す羽目になった…
フォントはブラウザ毎で異なるのは許容できるけど画像の描画も変わるのは解せない
普段chkimgしか使ったことないけどこういうのはchkimgxで解決できるのかな?

747デフォルトの名無しさん2020/12/31(木) 16:07:02.38ID:898M8IM/
>>746
画像の大きさが同じならある程度吸収するけど
基本はRPAスレでも散々言われてるように環境変わったらその環境用に作り直すしかないよ

748デフォルトの名無しさん2021/01/18(月) 00:47:00.68ID:3GwAoqNL
こういう処理をさせたいのですが、変数?の使い方が違っていてエラー吐いて動きません
どなたか教えていていただけないでしょうか。

マクロ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

749デフォルトの名無しさん2021/01/18(月) 00:48:56.41ID:3GwAoqNL
↑のようなものを作っても
k=k+1 
これが「変数kが定義されていません」エラーを吐いて動きません

750デフォルトの名無しさん2021/01/18(月) 00:55:11.99ID:zDdtgKlc
マクロ2の変数をマクロ3では参照できない
詳しくは変数のスコープでググってくれ

751デフォルトの名無しさん2021/01/18(月) 20:36:52.82ID:3GwAoqNL
できない理由の回答ありがとう
PUBLICを使うことでなんとかなりそうです

752デフォルトの名無しさん2021/01/20(水) 13:52:57.09ID:op6U359o
excel2013以降全般でUWSCでexcelファイルをオープンにする場合と
デスクトップ上からexecelファイルをクリックしてopenする場合では何かexcelの認識が変わるのでしょうか?
excelに後から入れたアドインが上記の場合だとアドインを認識してくれず
下記の場合だとアドインを認識してくれる状態で困っています

753デフォルトの名無しさん2021/02/02(火) 19:37:28.21ID:lhBS5kaI
お気に入りだったのがサービス終了したもんで
マクロ使ってプレイすると面白いゲーム教えて下さい

754デフォルトの名無しさん2021/02/02(火) 20:24:46.86ID:CvaL/gK2
クッキークリッカーでも極めたら如何か

755デフォルトの名無しさん2021/02/05(金) 12:52:44.92ID:CE/PVw/N
裏マクロでの画像認識について質問です

w_id = getid( "エミュレーター" )
mouseorg( w_id ,2 ,MORG_BACK )
を利用した裏マクロを作り、再生してみたのですが
オンマウス状態にしないと画像認識が働かず
困っています。

【現在の状況やその具体例】
・単純なクリック操作は裏マクロとして正常に動作する
・エミュレータの外側にマウスカーソルがあると画像認識がまったく働かない
・エミュレータの内側にマウスカーソルをもっていくと即座に画像認識が行われる
・エミュレータがアクティブ状態か非アクティブ状態かは関係なく
 オンマウスかどうかで画像認識の「働く/働かない」が決まる状況
 (PC画面の最前面はメモ帳やブラウザ。裏で開いているエミュレータの先っぽだけを
 ブラウザの上にハミ出させて、そのハミ部分にマウスカーソルを移動させると画像認識動く)

この「オンマウスでないと画像認識が動かない」状況を解消する方法を知りたいです
よろしくお願いします。

756デフォルトの名無しさん2021/02/05(金) 14:06:50.35ID:CE/PVw/N
>>755
すみません。質問者です
>単純なクリック操作は裏マクロとして正常に動作する
↑これもオンマウス状態でないと動作していませんでした。勘違いしていたようです
根本的に裏マクロの作成に失敗してる気がします
もうちょっと自分で試行錯誤してから質問しなおします。

757デフォルトの名無しさん2021/02/05(金) 14:38:29.04ID:8IWMGH1a
数回滞納したら信用機関のブラックリストに載るんだろ
これ最悪じゃん

758デフォルトの名無しさん2021/02/05(金) 14:39:01.10ID:8IWMGH1a
誤爆でした

759デフォルトの名無しさん2021/02/05(金) 14:57:30.51ID:yiuLSrin
((((;゚Д゚))))

760デフォルトの名無しさん2021/02/05(金) 15:26:56.29ID:3x1rEHtV
滞納ってのは金払いますって約束を破ってるんだから信用に傷付くのは当然だと思うんだが
遅れても払えば問題ないって意識が根本的におかしい
uwscで自動化しろ

761デフォルトの名無しさん2021/02/06(土) 14:27:30.37ID:NphD2JzZ
IEでサイトをよんだら、Edgeが起動した。
もうだめだ。オレの人生はおわった。

変わりの自動化ツールを教えて下さい

762デフォルトの名無しさん2021/02/06(土) 14:37:42.46ID:e0Fl/dIF
edgeで動作するように作り直した方が早い

763デフォルトの名無しさん2021/02/06(土) 15:00:10.50ID:NphD2JzZ
>>762
そんなことできるんですか 朗報!

764デフォルトの名無しさん2021/02/06(土) 15:30:39.13ID:xKFqhvrl
ieでそのまま開くみたいな設定がedge側にあったと思うけど

765デフォルトの名無しさん2021/02/06(土) 20:25:34.70ID:+9Nz3gBm
>>764
ありがとうございます。
設定を変更してできました。

前日にはIEで表示できたのに、今朝になって突然代替表示されるようになって動転してしまいました。

766デフォルトの名無しさん2021/02/08(月) 18:06:22.89ID:sakamvjP
adbを利用したマクロのタップ位置をちょっとだけランダム化したいです

表マクロで座標(20,50)の周辺をランダムタップする場合は
20+RANDOM(1),50+RANDOM(1)
↑みたいにすれば出来ていたのですが、
adb版の裏マクロだとどういう記述にすればいいのでしょうか

767デフォルトの名無しさん2021/02/08(月) 19:54:11.87ID:rDadBMP6
>>674-675辺りを見て

768デフォルトの名無しさん2021/02/08(月) 21:20:12.83ID:sakamvjP
返答ありがとうございます
括弧でくくるとはどこをどのようにくくればいいのでしょうか…
具体例を書いていただけるとありがたいです。 頭が弱くて申し訳ない泣
下記を試してみたのですが一番上のやつだけが正常に動きます

成功(ランダム化無し)
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座標を覆えていないのですが
これは書き込みミスですか?それとも何か意図があるでしょうか

769デフォルトの名無しさん2021/02/09(火) 02:13:50.42ID:HgHOGPAh
DOSCMDで送信するのは文字列
下3つはRANDOM関数がダブルクォーテーションで囲われてるから関数ではなく文字列として認識されてる
文字列は結合が出来る

str = "aaa" + "bbb"
print str
> aaabbb

770デフォルトの名無しさん2021/02/09(火) 02:58:31.43ID:Yx4rnzv/
>>768
文法適当だけどこう
doscmd("adb shell input tap" + " " + (10 + rnd(10)) + " " + (20 + rnd(20)))
数値の加算としてて扱いたいところを括りなさいということ

doscmdで失敗したらdoscmdの返り値を吹き出しとかログに出して確認するとコマンドプロンプト上のメッセージ見れるよ
まあ、あとdoscmdで構文組み立てると使い回し的に微妙だし外で組み立ててデバッグ表示とか確認してから文字列の変数で渡す方がいいかな

771デフォルトの名無しさん2021/02/09(火) 10:28:45.04ID:w8MMFkxC
>>769
>>770
返答ありがとうございます。
教えていただいたルールと実例を見て少しずつわかってきた気がします
「+ " " +」の箇所が不思議な並びに見えていたのですが、「" +」で一塊の記号
と捉える(?)ということが何となくわかってきました。
「" +」と「関数」の組み合わせで、関数部分は括弧で両脇ガードするイメージかな、て。
理解が追いつきそうな気がします。ありがとうございます

772デフォルトの名無しさん2021/02/09(火) 12:59:51.00ID:Yx4rnzv/
いや変な理解してるよw
プログラム知識どのくらいあるか知らんけど、要はdoscmdは最少だと文字列1つが引数なのが大前提
次にuwscは文字列に対して+すると左辺右辺を文字列とし結合する
この時、数値も文字列になるし、関数は返り値が文字列になる
なのでdoscmdの1番外の括弧の中の+は基本的に文字列の結合をしている
括弧の中にある括弧内は先に数値の計算がされる

doscmd(10 + 10)
だと1010になって
doscmd((10 + 10))
だと20になる
doscmd(a + " " + b)
これはなんのことはなく単にaとbの間にスペースいれてるだけだ

773デフォルトの名無しさん2021/02/10(水) 08:32:17.00ID:JYL+31L1
ありがとうございます。今度こそわかりました
つまり、doscmd(a + " " + b)のaとbとにランダム数値を代入する、みたいな式を
これの前に書けば晴れてランダム座標の完成となるわけですね
ちなみにお察しの通りプログラムの知識はなく
録画した表マクロが読める程度です… 回答ありがとうございます

774デフォルトの名無しさん2021/02/10(水) 16:14:00.55ID:mYgax70j
>>763
IE専用ツールじゃないから、EdgeでもChromeでも動くよ

775デフォルトの名無しさん2021/02/12(金) 20:13:05.76ID:74skEOdG
>>774
それがですね問題なのは、IEの場合、ページが読み込み完了になるまで待っててくれる関数があるじゃなんですか。
ああいうことができないと、例えばボタンを押すタイミングが早すぎたとかいうことになって先へ進めなくなるんです。

他のRPAでしたっけか、そういったもので、ブラウザの読み込み完了になるまで待機するようなものが見つけられなくて
UWSCでIEをそのまま使いたいと思ってしまっているわけなんです。

776デフォルトの名無しさん2021/02/13(土) 11:45:04.70ID:ZGnem3aY
Seleniumは?

777デフォルトの名無しさん2021/02/13(土) 12:07:26.24ID:dZ6ue5BC
Seleniumでもpuppeteerでも好きなもの使え

778デフォルトの名無しさん2021/02/15(月) 20:45:26.14ID:fa+YzTlt
webdriver使えば?

779デフォルトの名無しさん2021/02/16(火) 15:50:22.10ID:+7e6mc9m
UWSCのスクリプト集が死んでるサイトしかないけど、見る方法は・・・
http://canal22.org/qanda/uwsc_script/

780デフォルトの名無しさん2021/02/16(火) 23:02:31.35ID:N5xcmHzO
archiveでどーぞー

781デフォルトの名無しさん2021/02/28(日) 12:00:54.27ID:zlvqXFLj
Aという動作をループさせながら、Bという画像が現れたら数分後にBをクリックするとかできますか?スリープだとAの動作が止まってしまうので…

782デフォルトの名無しさん2021/02/28(日) 12:04:06.87ID:Gf8vzNDu
gettimeを使うかthreadで別処理にする

783デフォルトの名無しさん2021/02/28(日) 13:15:04.71ID:rSDXD4Hw
Aを内包する大ループ作るだけでよくね
正攻法はthreadでいいと思うが

784デフォルトの名無しさん2021/02/28(日) 17:45:14.82ID:zlvqXFLj
ありがとうございます。早速試してみます。

785デフォルトの名無しさん2021/03/02(火) 13:39:10.84ID:JZpUb5F1
難しく考えすぎなのでは?

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

786デフォルトの名無しさん2021/03/02(火) 14:30:33.02ID:mCqWIBDx
782:gettimeかthread
785:考えすぎでは?gettime使え

787デフォルトの名無しさん2021/03/02(火) 18:36:17.07ID:JZpUb5F1
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

788デフォルトの名無しさん2021/03/03(水) 00:31:34.71ID:UoOyY0IM
>>787
素人考えですが
画像検出のIFブロックで発見したらBTNの第五引数で実行待ち時間を指定すればフラグ要らないような

789デフォルトの名無しさん2021/03/03(水) 00:39:48.25ID:eEFRPXrG
>>788
BTNって非同期なの?

790デフォルトの名無しさん2021/03/03(水) 20:36:38.79ID:yubedTmO
BTN(LEFT,CLICK,(G_IMG_X+5),(G_IMG_Y+5),600000) とすると、クリックするまでループ処理が止まる
止まるとA動作のループが動かない

791デフォルトの名無しさん2021/03/03(水) 20:58:42.86ID:gkb1jlIk
MSがなにやら簡単ツールを提供するようだ
自動化が簡単になる

792デフォルトの名無しさん2021/03/03(水) 22:02:40.43ID:g0RIT2ce
ソースは?
UWSCみたいには使えないと思うが・・・

793デフォルトの名無しさん2021/03/03(水) 22:08:57.07ID:gkb1jlIk

794デフォルトの名無しさん2021/03/03(水) 22:20:08.14ID:g0RIT2ce
コードを書かずに〜と書いてあることから凝った設定はできないとも読めるよ?
まあ仮に自動化できたとしてもUWSCと同等のことが出来なければ用が無い

795デフォルトの名無しさん2021/03/03(水) 22:25:44.81ID:V8Bi7ith
これとUWSCを組み合わせて使えば自動化が簡単にできるようになるんじゃないかと期待してみる

796デフォルトの名無しさん2021/03/03(水) 22:41:06.95ID:W0isZ3pe
ブラウザの読み込み完了になるまで待つ機能があるかどうかですお。

797デフォルトの名無しさん2021/03/04(木) 08:23:11.29ID:RtzC2UYg
そりゃ自動化ツールなんだから
クリックした結果を見る前に次の動作するわけなかろうw
艦これの自動化くらいすぐ出来そう

798デフォルトの名無しさん2021/03/04(木) 14:16:32.07ID:U4nDCxwI
//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

799デフォルトの名無しさん2021/03/08(月) 11:11:54.09ID:r1yNd/Vf
>>793の続きが紹介されていた
windows10homeの場合は使えない機能があるとのことProを使うのは当たり前なんで気にしたことなかったが。
homeの人はproへグレードアップしてほしい。約1万5000円支払えば可能だから当たり前にやっておこう。
また、ブラウザの自動操作は拡張機能が必要とのことだ。

800デフォルトの名無しさん2021/03/08(月) 13:19:35.29ID:p+9eWZvC
やるかボケ

801デフォルトの名無しさん2021/03/08(月) 13:36:33.15ID:r1yNd/Vf
あっそうですか
でしたら使えない機能は諦めていただく他はないですね

802デフォルトの名無しさん2021/03/08(月) 13:54:11.38ID:1eIB7vrT
マイクソからも提供されてるのか
試してみるかな

803デフォルトの名無しさん2021/03/12(金) 15:13:37.21ID:ZRLAvOku
printで表示させる文字の位置を設定する方法はありますか?
サイズも設定できるとなお良いです

804デフォルトの名無しさん2021/03/13(土) 13:10:54.59ID:cA/ebhRB
//面倒くさいやり方もあるが、無駄な労力なのでLOGPRINTを使うと良い
//なぜかx座標が7ピクセルずれるから指定座標から引く事

x = 500;y= 500

FUKIDASI("表示位置テスト1",x,y) 

LOGPRINT(TRUE,x-7,y,250,100)
PRINT "表示位置サイズ変更テスト2"

sleep(10)

805デフォルトの名無しさん2021/03/14(日) 19:17:10.26ID:MdoUOPO+
凄い初心な質問ですんません。

ID = EXEC("C:\Program Files (x86)\cameeze\cameeze.exe")
SLEEP(1.5)
ACW(GETID("cameeze","TfrmMain.UnicodeClass"),1583,450,460,300,0)

5回繰り返し(座標だけ違う)

こんな感じで作ったのですが、UWSCから設定ファイルを実行すると動くのですが、
設定ファイルから実行すると失敗してしまいます。(アクティブなウィンドウが切り替わらずにパッパッと動いてる)
重複起動していて同名なので、名前の後に(1)みたいな風に付ける方法はありませんでしょうか…

806デフォルトの名無しさん2021/03/14(日) 19:20:27.96ID:MdoUOPO+
あれ、なんでだろ書き込めない・・・

807デフォルトの名無しさん2021/03/14(日) 19:25:57.43ID:MdoUOPO+
くっそ初心者ですんません。

ID = EXEC("あああ")
SLEEP(1.5)
ACW(GETID("あああ","TfrmMain.UnicodeClass"),1583,450,330,460,0)

座標変えて5回繰り返し

こんな感じで同じソフトを多重起動させて並べようとしたのですが、失敗してしまいます。
ウィンドウタイトルが同じで同じウィンドウを色々な座標に持っていこうとしてるだけみたいな感じなのですが
ソフト名の後ろに(1)みたいなのを付けたりする方法はありませんでしょうか…
(なぜか書けなかったのであああにしてます)

808デフォルトの名無しさん2021/03/14(日) 20:13:27.68ID:E6ui2GaX
例えばこれで多重起動できる

ID = EXEC("notepad.exe")
ACW(ID,1583,450,330,460,0)

ID2 = EXEC("notepad.exe")
ACW(ID2,1583,450,330,460,0)

809デフォルトの名無しさん2021/03/14(日) 22:20:18.27ID:BQ6dfRIE
>>807
ID = EXEC("あああ")
とやってるのに、その後のACWでIDを使わない謎

810デフォルトの名無しさん2021/03/14(日) 22:32:16.30ID:MdoUOPO+
>>809
ありがとう!「SLEEPを挟んじゃうからIDが受け渡せてねぇんだよ」みたいな感じですか?
でもそのソフト起動遅いんです・・・。
続けて書いたら最初に立ち上がる時に表示されるロゴみたいなのが指定の位置に移動するだけで
肝心のウィンドウは前回の終了位置にいってしまうんです…

811デフォルトの名無しさん2021/03/15(月) 00:00:30.92ID:+CyRHPpu
//>「SLEEPを挟んじゃうからIDが受け渡せてねぇんだよ」
//変数のIDを使ってないから、渡す以前に渡してねぇだろという・・・
//SLEEPは待ち時間指定だから、好きなだけ挟んで良い

//電卓を多重起動して横に並べる
EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID1 = GETID("電卓")
ACW(ID1,100,100,500,500,0)

EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID2 = GETID("電卓")
ACW(ID2,600,100,500,500,0)

EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID3 = GETID("電卓")
ACW(ID3,1100,100,500,500,0)

812デフォルトの名無しさん2021/03/15(月) 00:36:16.10ID:/ZCKQNsi
複数個起動できないソフトなのでは?

813デフォルトの名無しさん2021/03/15(月) 01:08:44.19ID:v5Yi3qmH
ああ!そういうことか!(´・ω・`)意味が分かったかもしれない!!

ID = EXEC("あああ") ←この『ID』=という部分が自分で決めれるんすね!?
例えばaaa = EXEC("あああ")と書いて次の行に
ACW(aaa,1583,450,330,460,0)とすると
録画機能みたいなのを利用してたのでIDと書くルールなのかと思ってました…

>>812
いえ、複数個起動はできるソフトで、一応動くには動くのですが
設定ファイルから実行するとアクティブなウインドウが切り替わらず一つのウィンドウだけが座標を行ったり来たりする感じでした

814デフォルトの名無しさん2021/03/15(月) 01:09:40.14ID:v5Yi3qmH

815デフォルトの名無しさん2021/03/15(月) 09:32:47.13ID:+CyRHPpu
なるほどなぁ
そのレベルからの解説でも需要があるのか
UWSCの需要はまだ枯れてないか

816デフォルトの名無しさん2021/03/17(水) 06:59:58.16ID:TjD9TcDJ
>>808
せっかく教えてくれていたのに、専ブラの設定かで見えてませんでした
ありがとうございます

817デフォルトの名無しさん2021/03/17(水) 07:01:40.55ID:TjD9TcDJ
>>811
も見えてなかった…
ありがとうございます!

8188072021/03/17(水) 16:54:27.51ID:dsWxXXVG
皆のお陰様でちょとだけ理解ができてきました
あわよくばもう一点だけ教えて欲しいのです

>>808さんが教えてくれた方法は何故か上手く動いてくれませんでした
起動の遅れ?とかが関係あるのかとSLEEPを挟んでみたりしたのですがうまくいかず
でもそのまんまコピペするとメモ帳はその様に動きました。

そこで>>811さんの教えて貰った様に起動させた後にGETIDってので戻り値?というのをID1〜6に指定
これで思惑通り動きました!でも解せないというか理解できてないんです。

ID1 = GETID("電卓") ってのは「電卓っていうウィンドウIDを返せ」「それをID1と仮名する!」という意味であってますか?
だとすると電卓が複数個起動してたらどれのウィンドウIDを戻すのか分からなくなる気がするのは気の所為でしょうか
それとも順番に書いてるからアクティブなウィンドウから値を引っ張ってきてるのでしょうか?

1・自動で起動させてアプリを並べる。
2・別の設定ファイルでウィンドウにあるプルダウンメニューから自動で選ぶ
をやりたくて、1はできたのですが2を行う場合、GETIDではできませんでした。

初心者のクセに基礎も分からず意味不明なこと言ってるかもしれませんが、最後にしますのでお願いします…

819デフォルトの名無しさん2021/03/17(水) 19:42:27.72ID:0BuFiOnf
最初から言ってる設定ファイルがなんなのか分からん
どっかて買ったマクロ集かなんか?

まあ他の部分は推測と合っている

820デフォルトの名無しさん2021/03/17(水) 19:56:01.39ID:+PPxZeIs
省略しないで書くなら、
ID = GETID("電卓", "ApplicationFrameWindow", -1)
となるが、めんどいから省略してる
//IDはIDの数値を入れる変数なので、変数名は何でも良い
//変数は数値や文字を入れておく箱のようなイメージ
//UWSCには変数の型は無いので、数字でも文字でも区別なく入れられる

//変数の宣言 使いたい所で変数を作れるの必須ではないが、使う変数を決めておく意味で宣言しておいた方が良いとは思う
DIM ID1,ID2,ID3

EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID1 = GETID("電卓")
ACW(ID1,100,100,500,500,0)
msgbox(ID1)

EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID2 = GETID("電卓")
ACW(ID2,600,100,500,500,0)
msgbox(ID2)

EXEC(GET_SYS_DIR+"\calc.exe")
SLEEP(2)
ID3 = GETID("電卓")
ACW(ID3,1100,100,500,500,0)
msgbox(ID3)

//こうすると、起動した順にIDが1,2,3と割り振られてる事が分かる
//プルダウンメニューから選ぶのはUWSCでも出来るけどめんどい

821デフォルトの名無しさん2021/03/17(水) 20:02:51.61ID:dsWxXXVG
>>819
すんません、設定ファイルじゃなくてuwsファイルでした。

ということは、同名アプリ起動後に別のuwsファイルでIDを取得するには
マウスで座標指定してクリック→ウィンドウをアクティブに→ * = GETIDみたいなのを書いてやると良いわけですね
ありがとうございます挑戦してみます

822デフォルトの名無しさん2021/03/17(水) 20:12:09.19ID:dsWxXXVG
>>820
勉強なります。そうですかプルダウンはめんどうなんですね
プルダウンは諦めて手動にしようかと思います。

823デフォルトの名無しさん2021/03/17(水) 21:35:38.19ID:oFq5eIyC
プルダウンメニューから選ぶというのがよくわからない

824デフォルトの名無しさん2021/03/18(木) 07:40:23.96ID:8urs7GkO
>>823
防犯カメラ複数台登録して視聴ソフトを起動させると
すべて1台目のIPが指定されてしまうのです。
なのでプルダウン(ドロップダウン)から機器登録されている
IPアドレスを選択してあげないといけないんです

825デフォルトの名無しさん2021/03/18(木) 08:15:40.32ID:YmFQF9g2
全部を一つでは出来ないよ
所詮はアプリじゃなくてスクリプトだからさ
やろうと思えば出来るけど、状態を保持してる何かするのは難しい
今上がってるもので言うと
複数の監視カメラの視聴アプリとやらを一括で起動するのは特に問題ないよね
同時に整列させるのはちょっとハードル高いから考え方変えて、同じアプリを後から整列させるなら多少は簡単にできる
(ただ、uwscでやる必要性はあまり感じない)
プルダウンから自動で選ぶはまだちょっと意味が分からない
リストからカメラ指定して起動したいってこと?
それとも起動済みの視聴アプリをリストにして、それを選んで何か操作したいということ?
後者はアプリがタイトルバーに何か色つけてくれてればやりようあるけど、そうじゃないなら難しいよ

826デフォルトの名無しさん2021/03/18(木) 09:52:39.16ID:JPJY5VhO
たとえば一つの例として「Fit Win」というアプリがあって
指定したアプリを整列させるだけならこういうアプリもある

プルダウンから選ぶは座標クリックしていく原始的なやり方しかないだろうね
整列して同じ座標へウィンドウを固定させたら比較的簡単にできるし

視聴ソフトはあまり詳しくないので調べてみたら「smart viewer」というフリーのソフトが複数カメラ、複数画面に対応してるようだけど
こういうソフトじゃないと駄目なの?機器が対応してないと駄目だろうけどLAN接続するタイプなら割と対応してるっぽいが?
このソフトを採用している警備会社があるようだから悪くないと思うけどな

827デフォルトの名無しさん2021/03/18(木) 10:40:06.48ID:Y5jTQtWf
ネットワークドライブのuwsファイルを認識しないのですが、みなさんの環境でもそうですか?
\\ORE-PC\UWS\hoge.uws をダブルクリックすると問題なく起動しますが、
\\ORE-PCをZドライブに割り当てて、
Z:\UWS\hoge.uwsをダブルクリックするとFILE NOT FOUNDってでる。
右クリ→メモ帳だと問題なく開けるので、UWSCの仕様なんでしょうかね・・

828デフォルトの名無しさん2021/03/18(木) 11:08:31.02ID:JPJY5VhO
ダブルクリックして起動?
ランチャーとかUWSCから起動させるのは駄目?
ネットワークドライブを割り当てるとかはやってないのでわかりませんね

8298272021/03/18(木) 12:13:19.45ID:Y5jTQtWf
windowsのショートカットでも、ランチャーに登録してもダメですね。
だけど、UWSC本体からファイル開く→再生だといけますね・・・なんだこりゃ

830デフォルトの名無しさん2021/03/18(木) 12:38:28.87ID:Sp8r4MHz
コマンドプロンプトで実行できるなら、hoge.uwsがあるフォルダにUWSC.exeを入れて
BATファイルに
UWSC.exe hoge.uws
と書いてBATファイルで実行する手もある

8318272021/03/18(木) 13:45:17.72ID:Y5jTQtWf
>>830
やってみたら見事に
FILE not found :hoge.uws
が返ってきました。目の前にあるんですけどね・・

832デフォルトの名無しさん2021/03/18(木) 14:05:23.77ID:Y5jTQtWf
>だけど、UWSC本体からファイル開く→再生だといけますね・・・なんだこりゃ

改めてやったら、そもそもUWSC本体→開くでZドライブが見えない。
なんで開けたつもりになったんだろう・・謎
ショートカットは見えるので叩くとやっぱFILE not found

833デフォルトの名無しさん2021/03/18(木) 14:25:56.67ID:Sp8r4MHz
EXEファイルにするか、iexpress.exeでパッケージ化するか
https://wikiwiki.jp/gutchie/%E8%87%AA%E5%8B%95%E5%8C%96%E3%83%84%E3%83%BC%E3%83%AB/UWSC#y1bf8470

834デフォルトの名無しさん2021/03/24(水) 22:16:20.39ID:SjAM6MJ0
子ウィンドウを取得して操作したいのですがなかなか上手くいきません

ID=GETID("親ウインドウのタイトル")
idLength=GETALLWIN(ID)
FOR i = 0 TO idLength-1
PRINT STATUS(ALL_WIN_ID[i],ST_TITLE) 
NEXT

↑を実行したところ、返ってきたのは子ウィンドウではなく
子ウィンドウ内の要素でした。(ボタン、チェックボックス、ラジオボタン)

ID=GETID("親タイトル",,,"子タイトル")
PRINT

↑は-1になります
やり方間違ってますか

835デフォルトの名無しさん2021/03/24(水) 23:30:49.98ID:ffF9L6R4
//ウィンドウIDを全て取得してみてIDとタイトルを調べる方法もある

n = GETALLWIN()

FOR i = 0 TO n-1
PRINT ALL_WIN_ID[i] + " " +STATUS(ALL_WIN_ID[i],ST_TITLE) 
LOGPRINT(TRUE,100,50,800,1100)
NEXT

msgbox("stop")

836デフォルトの名無しさん2021/03/25(木) 00:14:40.63ID:dnI+vm3S
>>835
実行してみると
親ウィンドウのタイトルが、ウインドウの数+1表示されました
という事は自分が子ウインドウだと思っていたものは全て親ウインドウという事かな?
今日は遅いのでまた明日やってみます
ありがとうございました

837デフォルトの名無しさん2021/04/09(金) 09:20:46.01ID:vJdMFfhi
Windowsのユーザーを切り替えて、各ユーザーごとにマクロを実施していきたいのだけど、ユーザー切り替えはUWSCでは難しいですか?

838デフォルトの名無しさん2021/04/09(金) 09:27:52.43ID:Aph6z+sk
何したいか分かんないけどユーザー指定して操作対象のアプリ起動するんじゃダメなん?

839デフォルトの名無しさん2021/04/09(金) 11:17:30.70ID:RfO7RRDz
UWSCの範囲を超えるこえど
動かしたいユーザー列挙しといて
レジストリに自動ログオンと自動実行の仕掛け作っとけばいけそう
再起動→次のユーザーで自動ログオンして自動実行という流れで

840デフォルトの名無しさん2021/04/09(金) 11:58:31.99ID:AGu16ZxP
ユーザー分の台数を用意すればいい
10ユーザーいるなら10台用意するとかね

841デフォルトの名無しさん2021/04/13(火) 14:47:03.51ID:IqZsL8m5
神様ちょっと助けておくれ・・・

ブラウザのスクロールバーのボタン3回クリックの1セットを、
1セット×回数で10回行いたい(=最後は30回クリック)
forでかけ算すればいいんじゃね?とひらめいたが動くわけがなかった。

842デフォルトの名無しさん2021/04/13(火) 15:08:40.06ID:IqZsL8m5
for t=1 to 10
CHKIMG("scroll-down.bmp")
c=t*3
repeat
BTN(LEFT,CLICK, G_IMG_X,G_IMG_Y ,30)
sleep(1)
until c >c
next

untilの書き方にモヤモヤしているが・・・とりあえずエラーは出ない
永久にクリックし続けるだけで。

843デフォルトの名無しさん2021/04/13(火) 15:14:05.98ID:C7npRUyM
ブラウザの右下隅に下向きのボタンがあるが、それをクリックするという事かな?

844デフォルトの名無しさん2021/04/13(火) 15:16:34.28ID:IqZsL8m5
そうです。
ブラウザ上での作業を自動化したくて。
ボタンにかんしてはscroll-down.bmpで判定してます。
forのt使って
repeat
BTN(LEFT,CLICK, G_IMG_X,G_IMG_Y ,30)
sleep(1)
until t >t*3

にしてみましたがこれも永遠にクリック(tが1なんだから4で止まって欲しいのに・・・)

845デフォルトの名無しさん2021/04/13(火) 16:03:51.33ID:M7vT5OZZ
c > c
ワロタ
この不等式がおかしいと思わないってヤバない?
プログラムじゃなくて数学、いや算数レベルやん

846デフォルトの名無しさん2021/04/13(火) 16:11:32.97ID:C7npRUyM
//FORの入れ子でOK
//1回目 1*3、2回目 2*3・・・10回目 10*3

CHKIMG("scroll-down.bmp")

FOR i = 1 TO 10
FOR x = 1 TO i*3
SLEEP(1)
BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5)
NEXT
NEXT

msgbox("クリック完了")

847デフォルトの名無しさん2021/04/13(火) 16:36:03.26ID:IqZsL8m5
いろいろ試してる間にごちゃごちゃしてきたのですみませんね;
UWSCではforしか使ったことがないもので

>>846
入れ子でいいはずですよね・・・(同じコードだ・・・)
もう一回ためしてみます。
ありがとう。

848デフォルトの名無しさん2021/04/16(金) 14:51:43.21ID:uD9tfUyH
プログラムファイルから消した文言が表示されエラーになってしまいます
IFB CHKIMG ("C〜.BMP")を("C〜.PNG")に書き換えしたのですが、NOT FOUND 〜BMP となります

(appdataなど削除し)ソフトの入れ直しや、違う名前のプログラムファイルを作成などしましたが改善せず。terapadを使用して書いてます
ご教示お願いします

849デフォルトの名無しさん2021/04/16(金) 14:53:20.85ID:hdR99Jx3
違うファイルを読み込んでいる

850デフォルトの名無しさん2021/04/16(金) 15:17:51.55ID:jul+q2bh
実行してるファイルと編集してるファイルが違ってたとかよくある
何でこのバグ消えねぇんだ?と思ってよく見たら違ってたと

851デフォルトの名無しさん2021/04/16(金) 21:43:26.23ID:Qutb4gNt
CHKIMGはBMPしか使えないからそのエラーになるだけで消した文が影響している訳ではない
BMPに戻せ

852デフォルトの名無しさん2021/04/16(金) 21:59:57.64ID:9Ra8nUSr
ちゃんとエラーメッセージ読むタイプと読まないタイプの違いが出たな

853デフォルトの名無しさん2021/04/16(金) 23:08:42.23ID:mtyX36ii
おお!出来ました!
皆様ありがとうございます

854デフォルトの名無しさん2021/04/23(金) 04:45:57.46ID:GWiJhS53
for文について困っていることがあります。
下記の処理Aのみ 繰り返す際に処理回数を1増やしたいです。

BTN(LEFT,CLICK,13,167,10)
 For i = 1 to 100  
 KBD(VK_RALT,DOWN,50)
 KBD(VK_RIGHT,CLICK,50)
 KBD(VK_UP,CLICK,50) //処理A ※ ここの処理だけ 1回目は1回実行 2回目は2回実行 3回目は3回実行… にしたい
 KBD(VK_RALT,UP,50)
 NEXT

調べましたがどうしてもわかりませんでした。
for文の中の処理回数を増やす方法をご存じでしたら、教えていただけたら幸いです。
よろしくお願いします。

855デフォルトの名無しさん2021/04/23(金) 05:45:45.21ID:2JaREPAx
 For i = 1 to 100  
  KBD(VK_RALT,DOWN,50)
  KBD(VK_RIGHT,CLICK,50)
  For j = 1 to i
   KBD(VK_UP,CLICK,50) //処理A ※ ここの処理だけ 1回目は1回実行 2回目は2回実行 3回目は3回実行… にしたい
  Next
  KBD(VK_RALT,UP,50)
 Next

856デフォルトの名無しさん2021/04/23(金) 05:56:06.69ID:kWPc6e52
やるじゃん!

857デフォルトの名無しさん2021/04/23(金) 06:00:49.79ID:GWiJhS53
>>855
できました!
なるほどfor文の中にfor文を入れて他の変数にiを代入すればいいんですね…
お忙しいところ教えていただきありがとうございました

858デフォルトの名無しさん2021/04/23(金) 12:41:11.27ID:Fs/FdOQM
いや別に代入はいらんけど…

859デフォルトの名無しさん2021/04/23(金) 13:40:06.30ID:gAgD293m
動けばいいんだよ
猿相手に説明してもしゃーない

860デフォルトの名無しさん2021/04/23(金) 14:54:53.39ID:zpT46eZ/
キーキー喚いて他人に噛み付くだけの猿は本当にしょうがないよな

861デフォルトの名無しさん2021/04/23(金) 15:13:24.53ID:gAgD293m
>>1読んでないのかな

862デフォルトの名無しさん2021/04/23(金) 15:35:59.73ID:Qd1iaOGD
無能な猿はすっこんでろって

863デフォルトの名無しさん2021/04/23(金) 18:49:02.98ID:k2R/iVu9
サルモンキーウッキー

864デフォルトの名無しさん2021/04/30(金) 21:19:57.52ID:gWvSQQ0Q
メモ帳上だと正常に機能するけど、動かしたいソフト上だと特定のキー(十字キーとかシフトキー)だけ受け付けないんだけどなにかわかるかな?
記録は出来て、中身を見るとちゃんとキーも入ってるけど再生時に特定のキーが無視されちゃう

865デフォルトの名無しさん2021/05/01(土) 02:52:48.63ID:MA8kI4AW
まず「動かしたいソフト」の名前を書け

866デフォルトの名無しさん2021/05/14(金) 14:13:35.87ID:2RtqhEo0
画像1と画像2のどちらかを認識した場合、認識した画像の座標を取得して処理Aを行いたいです

IFB CHKIMG( "画像1.bmp", , , , , , -1, IMG_MSK_BGR1)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)//処理A
ELSEIF CHKIMG( "画像2.bmp", , , , , , -1, IMG_MSK_BGR1)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)//処理A
ENDIF

処理Aは同じですが、いまはこうして分けています
今後、画像3、画像4と増えていく可能性があるので毎回分けて記述しなくても良い方法はないでしょうか

IFB CHKIMG( "画像1.bmp", , , , , , -1, IMG_MSK_BGR1) OR CHKIMG( "画像2.bmp", , , , , , -1, IMG_MSK_BGR1)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)//処理A

このようにORを使って画像1が表示されてる最中に実行してみたところ、画像座標の取得に失敗してしまい処理Aが動作しませんでした
(PRINTで座標を確認してみたら-99999とかになってました)

867デフォルトの名無しさん2021/05/14(金) 15:09:08.52ID:K8K4yQFj
getdirでファイル一覧取ってきてfor-in-nextで画像ファイルの分だけループ回せばいいと思う

868デフォルトの名無しさん2021/05/14(金) 16:43:30.17ID:iQwZsiAA
chkimgxを使えばもっと簡単に書けるが、使わないなら

//画像1.bmp〜画像2.bmpを検索してどれかを認識したら処理Aを実行しループを抜ける
FOR x = 1 TO 2
IFB CHKIMG("画像" + x + ".bmp", , , , , , -1, IMG_MSK_BGR1)
//処理A
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
BREAK
ENDIF
NEXT

869デフォルトの名無しさん2021/05/14(金) 17:02:47.72ID:2RtqhEo0
>>867-868
ありがとうございます、ですがすいません
文にしたときにわかりづらかったので変えていたのですが、
実際の画像ファイルはファイル毎に名前を変えていて連番ではなく、画像を認識する場所もそれぞれ異なります

870デフォルトの名無しさん2021/05/14(金) 17:37:15.98ID:iQwZsiAA
//BMPファイルの数を取得する
//BMPファイルは同じフォルダに入れておくこと
N = GETDIR(GET_CUR_DIR,"*.BMP",TRUE,0)

//GETDIR_FILES配列にはGETDIRで取得したBMPファイルのファイル名が全て入る

//BMPファイルを検索してどれかを認識したら処理Aを実行しループを抜ける
//CHKIMGで座標指定しないなら、パラメータ無指定でもOK
FOR x = 0 TO N-1
IFB CHKIMG(GETDIR_FILES[x])
//処理A
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
BREAK
ENDIF
NEXT

871デフォルトの名無しさん2021/05/14(金) 22:43:48.66ID:6hlMfvtI
>>869
>画像を認識する場所もそれぞれ異なります
ってこういうことかな

CONST e_bmp=0
CONST e_xOffset=1
CONST e_yOffset=2

// 画像と認識位置のセット
DIM aMultidim[][2] = "a.bmp",2,3 _
          ,"b.bmp",-1,-1 _
          ,"c.bmp",0,1
DIM i
DIM iLastSet = length(aMultidim) - 1
FOR i = 0 TO iLastSet
 IFB TRUE = CHKIMG(aMultidim[i][e_bmp]) THEN
  // 発見位置にオフセットを加味してクリック
  BTN(LEFT, CLICK , G_IMG_X,+aMultidim[i][e_xOffset] _
          , G_IMG_Y+aMultidim[i][e_yOffsetOffset])
 ENDIF
NEXT

872デフォルトの名無しさん2021/05/15(土) 02:20:59.88ID:d0kD+s8i
やっぱchkimgxで組んだら?
わざわざ配列でチェック座標管理しなくて済むし

873デフォルトの名無しさん2021/05/15(土) 15:01:39.06ID:M0a+Mlf6
明確に座標が違うなら配列作ってforで回す方がいいと思うがね

874デフォルトの名無しさん2021/05/18(火) 01:52:43.80ID:IPcsF0ko
すいません、返事が遅れました
>>870-871の方法でいじりながら様子を見てみます、ありがとうございます
しかし元々の記述よりだいぶ複雑になるんですね…
CHKIMGXはなぜかウインドウがピカピカ光って煩わしいのでなるべく使わないようにしてます

別件ですがもうひとつ質問です
ランダムに表示される画像xを参照して処理を行う001.uwsというもののほかに、同じ画像xを参照するものの001.uwsとは異なる処理を行う002.uwsや003.uwsを作る予定です

・A.uwsの中身
WHILE TRUE
CALL B.uws
CALL C.uws
CALL 001.uws//処理が終わったらA.uwsに戻ってこさせたいので、ループ処理にはしていない
WEND

いまUWSCにはこのように記述したA.uwsを読み込ませています
説明が難しいのですが001.uwsと002.uwsを使う場面が明確に異なるので、
CHKIMGで画像1を認識したら、画像2や画像3を認識するまで以降002.uwsや003.uwsなど特定のuwsだけを読み込まなくなり、
逆に画像2を認識したら、画像1や画像3を認識するまで以降001.uwsや003.uwsだけを読み込まないようにしたいです

IFB CHKIMG( "画像1.bmp", , , , , , -1, IMG_MSK_BGR1)
CALL 001.uws
ELSEIF CHKIMG( "画像2.bmp", , , , , , -1, IMG_MSK_BGR1)
CALL 002.uws
ELSEIF CHKIMG( "画像3.bmp", , , , , , -1, IMG_MSK_BGR1)
CALL 003.uws
ENDIF

このように記述すれば良いのでしょうが、001.uws〜003.uwsはループ処理させたくないのと、画像1〜3は常に表示されているわけではないので困ってます
なにか良い解決策はないでしょうか

875デフォルトの名無しさん2021/05/18(火) 06:01:50.96ID:UDGz656x
ちょっと話しは逸れるけど
そもそもいちいちcallする必要あるのかな
関数化しちゃいかんの?

876デフォルトの名無しさん2021/05/18(火) 10:17:39.32ID:wQ5og2t5
定期的に出てくるけどCALLを関数代わりにしてる奴は頭おかしいからスルーして大丈夫

877デフォルトの名無しさん2021/05/18(火) 10:19:50.75ID:qh33yYe/
むしろファイルをcallできる言語仕様に驚きを禁じ得ない

878デフォルトの名無しさん2021/05/18(火) 10:31:01.04ID:4dF+L4dN
そこは include とか import と同じじゃないの
単機能を関数的に呼び出すのがおかしいってだけで

879デフォルトの名無しさん2021/05/18(火) 10:37:54.61ID:qh33yYe/
まあ確かにDLLと同じようなもんだと言われたらそれまでだけど
関数ポインタをディスパッチするような手間いらずで初心者でも手軽に使える点は評価したい

880デフォルトの名無しさん2021/05/18(火) 10:42:00.07ID:t/eWMALd
callもスクリプト単体で動くようにすると結構便利だけどな
スクリプトは実行時に読み込まれてるみたいだし関数と変わらん気がするが

881デフォルトの名無しさん2021/05/18(火) 11:10:02.73ID:qh33yYe/
利便性を優先すると使うための手続きが複雑になる
このトレードオフは言語開発者の永遠のテーマだろうな

882デフォルトの名無しさん2021/05/18(火) 11:14:19.63ID:4dF+L4dN
たぶん上の人は関数自体使い慣れなくてだいぶ抵抗があるんだろうな
老婆心的にはスマートな使い方教えたいけど
自分でメリット感じられないとなかなか移行は難しそうだ

883デフォルトの名無しさん2021/05/18(火) 11:30:39.35ID:qh33yYe/
DLLを使った方がカッコイイからというくだらん理由で
どう見ても静的リンクでいいだろうという場面でやたらDLLを使いたがる人もいる
シンプルにEXE一本で動かせるのにランタイムライブラリという必要条件が増えるけど
素人は複雑イコール技術が高度と感じることがあるのでなんとも言えない

884デフォルトの名無しさん2021/05/18(火) 12:16:39.91ID:AZFZk1uK
そもそも、起動した時点でcall先のファイルは一括して読み込まれるってのを分かってないよね
だから、読み込まないようにしたいっていう一文が出てくる

885デフォルトの名無しさん2021/05/18(火) 12:24:17.39ID:4dF+L4dN
>>884
それはそうなんだろうけど
874の人は関数的に使ってるから読み込ませたくない=実行させたくない って意図でしょう

それはそうと874の実際の質問内容考えてる人俺含めていない件w
後ででもしっかり読んでみようと思ってるけど論理問題のようだから意図や齟齬たどるの面倒よね

886デフォルトの名無しさん2021/05/18(火) 13:30:39.30ID:9AUeHlwd
>>874
CALLの使い方を間違ってる

887デフォルトの名無しさん2021/05/18(火) 13:51:29.74ID:qh33yYe/
CALLの正しい使い方のお手本を出してくれるそうだから
よく聞くように

888デフォルトの名無しさん2021/05/18(火) 14:17:24.85ID:XOsT82We
874です
以前、こちらのスレで長々と書くのではなく、ひとつの処理に対してひとつのファイルにしてCALLで読み込ませろって書いてあったのを読んだ気がしてそうしてました
よろしくおねがいします

889デフォルトの名無しさん2021/05/18(火) 16:19:21.98ID:KFxGhSSQ
CALLは意味が沢山あって意外と日本人に馴染みのない言葉だから仕方ないね

890デフォルトの名無しさん2021/05/18(火) 16:53:51.17ID:9AUeHlwd
>ランダムに表示される画像xを参照して処理を行う001.uwsというもののほかに、同じ画像xを参照するものの001.uwsとは異なる処理を行う002.uwsや003.uwsを作る予定です
ファイルを分ける必要がない

動けばどう書いても良いけど、難しく考えすぎて面倒くさい書き方をしてるようにしか思えん

891デフォルトの名無しさん2021/05/18(火) 16:58:47.86ID:0sQ29iV7
関数の使い方を覚えるべきだよね

892デフォルトの名無しさん2021/05/18(火) 20:28:58.68ID:9AUeHlwd
認識した画像ごとに処理を分ける例
IFBでダラダラ書くより読みやすく書ける

WHILE TRUE

SELECT TRUE
 CASE CHKIMG("画像1.bmp")
  処理1
 CASE CHKIMG("画像2.bmp")
  処理2
 CASE CHKIMG("画像3.bmp")
  処理3
 DEFAULT
  例外処理 //例外処理
SELEND

WEND

893デフォルトの名無しさん2021/05/18(火) 21:40:52.44ID:pImCnyq0
>>892
これは凄い発想
caseに式や関数使えるとか知らなんだ

894デフォルトの名無しさん2021/05/18(火) 22:21:22.88ID:wQ5og2t5
CALLしてるファイルの中でも関数化してるわけじゃなさそうだし
ファイルが増えればそのうち変数がバグってどこが原因か分からなくなる

895デフォルトの名無しさん2021/05/20(木) 05:48:05.89ID:xogd6JER
874です

CALLにしていた処理をまとめる方向で修正してます

>>892
自分はIFB〜ELSEIFとの違いがわからず悩んでいます
CASE CHKIMG("画像1.bmp")で画像を読み取れば、
IFB〜ELSEIFと同じひとつの処理に対してENDIFが必要ないってことでしょうか?

896デフォルトの名無しさん2021/05/20(木) 09:42:02.88ID:j8DWMRqC
>>895
書いてある通り>>892にとってはselectの方が読みやすいってだけだろ
IFBとELSEIFで段差ができる部分が揃う
CASEの方が文字数少ない
CHKIMGは書き方のバリエーションだからIFBと違いはないのでは

897デフォルトの名無しさん2021/05/20(木) 11:13:41.40ID:1BZg1gED
コードの可読性を意識して書いてるだけだがね

可読性の概念とかは プログラミング 可読性 でググれ
動けばどうでも良いという主義ならそれはそれで

898デフォルトの名無しさん2021/05/20(木) 11:22:16.62ID:HONoZ+FD
892のコンセプトしだいだけど
メンテナンス性拡張性とか加味するとifのほうがいいかもね

899デフォルトの名無しさん2021/05/20(木) 12:20:19.57ID:1BZg1gED
CASE CHKIMG("画像1.bmp") AND (CC = 1)
とかIFBの条件式と同じように書けるし、どうでも良い事ではあるがね

900デフォルトの名無しさん2021/05/20(木) 13:26:28.17ID:dsnUQ917
on N goto 1000,1100,1200,1300…でいけるよ

901デフォルトの名無しさん2021/05/21(金) 08:55:27.51ID:jCHc9CEs
874です

メインにしてるuwsの中に複数の処理をまとめた処理群AをCALLで呼び出してましたが、処理群Aをクラス化して、処理群Aのなかの各処理をPROCEDUREなどでメインのuwsに記述する

CALL 処理群A.uws
クラス名は処理群A、関数名は処理Aと処理B

IFB CHKIMG( "画像1.bmp", , , , , , -1, IMG_MSK_BGR1)
処理群A.処理A
ELSEIF CHKIMG( "画像2.bmp", , , , , , -1, IMG_MSK_BGR1)
処理群A.処理B
ENDIF

CALLの使い方はこれで大丈夫でしょうか?

902デフォルトの名無しさん2021/05/21(金) 09:47:46.96ID:hKnIbAZ8
UWSCってクラス使えたんだっけ!?使ったことなかった
>>901
それはともかくそれでいいと思うよ
処理A,Bを他のスクリプトから使わず規模も大きくないなら
CALL使わず1ファイル内の関数だけで済ますんでいいと思うけど
----.uws ここから
IFB CHKIMG( "画像1.bmp", , , , , , -1, IMG_MSK_BGR1)
 処理A()
ELSEIF CHKIMG( "画像2.bmp", , , , , , -1, IMG_MSK_BGR1)
 処理B()
ENDIF

procedure 処理A()
 //Aの処理
fend

procedure 処理B()
//Bの処理
fend
----.uws ここまで
あと下部のprocedureをクラス化せずそのまま別ファイルにしてCALLするんでも動くよ
知ってるかもだけど念の為

903デフォルトの名無しさん2021/05/21(金) 12:44:57.04ID:04KdsCb/
話をループさせるなよw

904デフォルトの名無しさん2021/05/21(金) 12:55:06.38ID:hKnIbAZ8
スクリプト直CALLしてたのをクラス関数CALLにはしたけど
それはそれでいいがもっと簡単にはできるよ
って話なのでループではないと思うが

902みたいな関数の一番簡単な使い方も把握してるのか怪しかったし

905デフォルトの名無しさん2021/05/24(月) 09:07:34.94ID:j7BJolv/
CHKIMGの色幅がCHKIMGX1でも認識するくらいシビアな画像でも
CHKIMGXにすると判定できなくなる場合ってどうすれば良いですか?
CHKIMG使うしかないですか?

906デフォルトの名無しさん2021/05/24(月) 15:27:04.53ID:j7BJolv/
読み直したら間違えてた
CHKIMGX1じゃなくてIMG_MSK_BGR1で認識するくらいシビア

907デフォルトの名無しさん2021/05/24(月) 15:38:58.41ID:ULoozdN2
chkimgで認識できてchkimgxで認識できないってのがよくわからないんだけど
chkimgxのthresholdとかcolorの引数弄っても認識できてないの?

908デフォルトの名無しさん2021/05/24(月) 15:47:05.47ID:/wIz9r2w
>>907
画像によってはchkimgで認識してchkimgxだとしないのがあるね
見た目で緑系色が多いと認識しない感じ

909デフォルトの名無しさん2021/05/24(月) 16:22:49.00ID:ULoozdN2
>>908
chkimgxはキャプチャしたイメージをグレースケール化するので色は引数のcolorを弄らない限り関係ない

910デフォルトの名無しさん2021/05/24(月) 16:30:11.09ID:jIebElNo
btnでクリックできなくなったね。

911デフォルトの名無しさん2021/05/24(月) 17:28:10.19ID:VAxBPl7R
>>909
ソースのコメントみる限り、色指定した場合はグレースケール化と読めるが

指定した色とどれだけ近いかでグレースケール化した画像を使って マッチングの計算を行う
文字の色などを指定することで背景の変化に強いマッチング判定を行う

912デフォルトの名無しさん2021/05/24(月) 18:21:59.68ID:qg+aTsN4
>>911
ソースコードの関数も確認した
色指定あるときはgrayscale化

913デフォルトの名無しさん2021/05/26(水) 08:10:53.62ID:K14fqcy/
CHKIMGからのクリックができなくなってるなぁ。
画像認識まではするけど、クリックはしない。
管理権限で起動しても、だめだったなぁ。
WINDOWSのアップデート前後で変わってるから、そこかなぁ。

914デフォルトの名無しさん2021/05/26(水) 11:01:01.07ID:XORx725k
>>913
ついに使えなくなったか

915デフォルトの名無しさん2021/05/26(水) 13:05:07.61ID:yYro70ts
アップデートは停止してるからわからないけど
使えなくなるならアップデートはしないでおこう。人柱サンキュー!ワハハハ!

916デフォルトの名無しさん2021/05/26(水) 13:56:10.97ID:9QyAf03y
バージョン 2004のままにしておくか

917デフォルトの名無しさん2021/05/26(水) 14:14:16.02ID:eqZO3XDC
Windows はいじらないほうがいいですね。

918デフォルトの名無しさん2021/05/26(水) 17:01:33.65ID:9QyAf03y
WEBツールの仕様変更でCLICKが使えなくなったのをDOWN,UPで対応させてるがバージョン変わったら使えなくなるんだろうか
待ち時間をランダムにして人間がクリックしてるように偽装して何とかなってる

BTN(LEFT,DOWN,G_IMG_X,G_IMG_Y,(RANDOM(500)+2000))
BTN(LEFT,UP,G_IMG_X,G_IMG_Y,RANDOM(500))

919デフォルトの名無しさん2021/06/03(木) 12:51:13.08ID:q8TMEvZw
MEMUというandroidエミュを使っているんですが
MOUSEORGでMEMUのウィンドウIDを指定して裏マクロにしようとすると、CHKIMGやPEEKCOLOR1回ごとにウィンドウの周りが白くなって一瞬(0.1秒くらい?)だけフリーズします
例えばIFB並べてCHKIMGの画像6個探すときは6回分のプチフリーズしてループ、6個のうち上から3個目がヒットするときは3回分の長さのフリーズの後に処理が始まるみたいになります
SAVEIMGの取得をMEMUのウィンドウIDではなくデスクトップにして、クリップボードからPEEKCOLORすれば止まらずに動きますが裏マクロになりませんし…
キーボードマッピング(MEMUの機能)で設定したキーをKBDで押すときは上のプチフリーズは起こらないんですが

920デフォルトの名無しさん2021/06/03(木) 13:55:27.25ID:8BEM7SHC
こちらからの報告は以上です。どうぞ

921デフォルトの名無しさん2021/06/03(木) 14:53:36.50ID:yaZ7gTV4
ラジャー、次の質問者どうぞっ!?

922デフォルトの名無しさん2021/06/03(木) 15:02:00.58ID:uxUjlRum
DorectXだと思うけど、peekcolor多量に回すmemuの画面がフリーズする
フレームバッファをその度にフル転送してるからじゃないのかなあ

で、画面フリーズするとどういう弊害がでてんの?

923デフォルトの名無しさん2021/06/03(木) 15:22:40.86ID:mewPK9u+
そうですか

924デフォルトの名無しさん2021/06/03(木) 15:43:58.08ID:PveMLo3f
特定のソフトに依存する質問については、そのソフトの環境を構築する手間暇掛けてまで答える気になれない

925デフォルトの名無しさん2021/06/04(金) 03:13:49.55ID:HrGwVRMF
Androidエミュごときで環境構築面倒とかいうのもどうかと
中華エミュだから入れたくないとかならまだしも

926デフォルトの名無しさん2021/06/04(金) 04:55:22.58ID:8MiFu8j6
ガイジあらわるw

927デフォルトの名無しさん2021/06/04(金) 09:57:52.95ID:AmUi7cYO
わざわざ無能な人のために環境構築してあげてやる道理なんかないでしょ
自分で頑張れと冷たく言い放っておしまい。ぶっちゃけ自分には関係ないからな。困ってるのは私ではなくアイツなのだからアイツが苦しむのはOK
私は上から目線で笑いながらからかってやるだけですよ

928デフォルトの名無しさん2021/06/04(金) 12:17:23.70ID:oeJhT1F4
環境作る義理ないならついでにいちいちそんなお気持ち表明しにこなくてええんやで

929デフォルトの名無しさん2021/06/04(金) 12:31:28.73ID:U0nNGufy
匿名掲示板で環境作る義理あるやつなんているのかな?

930デフォルトの名無しさん2021/06/04(金) 12:45:19.55ID:DM+caa8E
>>925
そう思うなら、答えてあげなさい
オレはやらん

931デフォルトの名無しさん2021/06/04(金) 19:32:48.15ID:AmUi7cYO
かくして、彼は泣きながら手動で頑張るのでしたとさ
チャンチャン♪

932デフォルトの名無しさん2021/06/05(土) 20:12:02.91ID:AuKRvxXh
表マクロなら動くんだろ
それでいいじゃん

933デフォルトの名無しさん2021/06/06(日) 07:09:26.47ID:nFBl7Kad
昨日触り始めた信じられないくらいの初心者で申し訳ないですが知識をお借りしたく
・画像AとBの画像が同時に存在する時のみに画像Cをクリックしたい
・画像AとBの画像が無い場合は次に書いた処理を行いたい
これをしたいのですが1つ目の時点で画像Cをクリックしてくれないです
おかしなところだらけとは思いますがお助けください

While True
ifb CHKIMG("A.bmp") _
and CHKIMG("B.bmp") _
and CHKIMG("C.bmp")
    BTN(LEFT,CLICK, G_IMG_X, G_IMG_Y)
sleep(1/64)

elseif CHKIMG("D.bmp")
    BTN(LEFT,CLICK, G_IMG_X, G_IMG_Y)
sleep(1/64)

934デフォルトの名無しさん2021/06/06(日) 07:55:07.27ID:rQ15Fo4h
>>933
Andで一行にせずに書いて原因究明
横着しない

935デフォルトの名無しさん2021/06/06(日) 08:14:21.20ID:NIzk3ndz
横着のつもりはなくAndしか使えそうなのがわからず…
バラで使えそうな何かを探す旅に出てきます

936デフォルトの名無しさん2021/06/06(日) 08:27:55.32ID:rQ15Fo4h
>>935
そこまで書けてるのに、ifを分けて書くこと出来ない?
その書き方じゃ、本当にABCの画像が同時に存在して認識出来ているか確認できないでしょ?
画像って目視じゃ同じに見えても実は全く同じじゃなかったりするし

937デフォルトの名無しさん2021/06/06(日) 08:42:55.09ID:NIzk3ndz
>>936
一度に全て探そうとせずにtrue thenで次の画像を探させる方向で考えればいいのです?

938デフォルトの名無しさん2021/06/06(日) 08:53:18.19ID:Y/jc2SzG
>>937
ifb CHKIMG("A.bmp") then
print "found A"
endif

これでAを本当に認識できてるかどうか確認できる

939デフォルトの名無しさん2021/06/06(日) 09:09:30.18ID:BeC5o1Q9
いつもmsgbox使ってた

ifb chkimg("a.bmp")
print "g_img_x:"+g_img_x+" g_img_y:"+g_img_y
ifb chkimg("b.bmp")
print "g_img_x:"+g_img_x+" g_img_y:"+g_img_y
ifb chkimg("c.bmp")
print "g_img_x:"+g_img_x+" g_img_y:"+g_img_y
btn(left,click,g_img_x,g_img_y)
sleep(1/64)
endif
endif
endif

940デフォルトの名無しさん2021/06/06(日) 09:40:11.66ID:NIzk3ndz
ありがとうございます
今は出先なので帰ったらまた試してみます
また詰まったら力を貸してください

941デフォルトの名無しさん2021/06/06(日) 13:21:06.69ID:IWgw88U5
初心者が増えるのは良いな
UWSCがまだ死んでないという事だし
初心者向けの参考書書いても需要ありそうだから、何か書いてみるか

942デフォルトの名無しさん2021/06/19(土) 20:28:31.54ID:h+5L1XCT
素人質問で大変恐縮なのですが
乱数を用いてcall先をランダムにする事って可能でしょうか?
rondam(5)
で1の時に
call a.uwsを呼ぶというようなことがしたいのですが

943デフォルトの名無しさん2021/06/19(土) 20:43:34.89ID:EQ2vKl4E
可能です

944デフォルトの名無しさん2021/06/19(土) 20:54:33.63ID:Lk+y+wSz
//0〜e.uwsがあるとして、

SELECT RANDOM(5)
 CASE 0
  call 0.uws
 CASE 1
  call a.uws
 CASE 2
  call b.uws
 CASE 3
  call c.uws
 CASE 4
  call d.uws
 CASE 5
  call e.uws
SELEND

945デフォルトの名無しさん2021/06/19(土) 20:56:22.82ID:Lk+y+wSz
RANDOM(5) なら 0-4だったな

SELECT RANDOM(5)
 CASE 0
  call 0.uws
 CASE 1
  call a.uws
 CASE 2
  call b.uws
 CASE 3
  call c.uws
 CASE 4
  call d.uws
SELEND

946デフォルトの名無しさん2021/06/19(土) 21:22:37.66ID:h+5L1XCT
>>943-945
具体的な記述もありできそうです
ありがとうございました

947デフォルトの名無しさん2021/06/19(土) 21:25:16.67ID:H3JZ4m/K
callはそういう使い方するものじゃないって
これだけ言われても理解しないんだな

948デフォルトの名無しさん2021/06/19(土) 21:29:01.75ID:ptUlvasO
アホの質問にまともに理解していない馬鹿が得意げに答えるからこうやって誤った使用法が広まっていくのさ

949デフォルトの名無しさん2021/06/19(土) 21:31:09.82ID:Lk+y+wSz
低レベルな質問には低レベルに答える
それだけの事
使い方が間違ってる事にはあえて突っ込まない優しさ

950デフォルトの名無しさん2021/06/19(土) 21:39:01.24ID:Lk+y+wSz
公式のサンプルの#1、#2のようなCALLの使い方もあるから、別に良いんじゃねという気もしないでもない

公式サンプル
http://web.archive.org/web/20180428070202/http://www.uwsc.info/sample.html

951デフォルトの名無しさん2021/06/19(土) 21:39:10.21ID:uJ2Gt/N3
あ、僕でも答えられる質問だ!
よーし張り切って教えちゃうぞ!

そしてこのざま

952デフォルトの名無しさん2021/06/19(土) 22:00:38.89ID:Lk+y+wSz
この程度のことで凄い事になっとるなw
ギスギスしすぎ

953デフォルトの名無しさん2021/06/19(土) 22:40:03.07ID:A8n9fwTn
初心者スレでも可能ではなく最適なものを理解した上で質問しなければならなかったのですね、スレが荒れる原因を作ってしまい失礼いたしました猿未満だったようなので猿レベルになるまで勉強してから質問するようにします

954デフォルトの名無しさん2021/06/19(土) 23:21:45.35ID:25IvVjLU
質問することで質問したこと以外に発見することもあるからええんやで

955デフォルトの名無しさん2021/06/20(日) 00:05:04.52ID:YihnOY9y
UWSCはそんな高尚なもんじゃないから気にするな
いい歳したおっさんには、一行もコードを書かずに喜々として叩いてる人の気持ちは分からん

956デフォルトの名無しさん2021/06/20(日) 02:46:28.68ID:rWaLY8jt
説明が難しいんですけど一部分の動作だけオンオフってできますか?

AndroidエミュのNOXでゲームマクロってのに興味が出ていろいろやってるんですけど、
いろんな処理をwhileとfendの中に入れてるんですけど、その中の一部分だけ画像1を見つけた場合に画像2を見つけるまで他の処理に追加して繰り返し実行されるようにして、
画像1がいなければすっ飛ばすって処理を組み込みたいです
問題は画像1が1回しか表示されないので、都度chkimgで画像1を見つけて実行ってのができなくて、
オンオフみたいに画像1を1回でも見つけたら以降は画像2を見つけるまでwhileとfendの中に組み込めないかなって考えてるんです

957デフォルトの名無しさん2021/06/20(日) 02:55:34.48ID:rWaLY8jt
call a.uws

while
//開始ボタンを押す
開始ボタンを押す処理

//終了ボタンを押す
終了ボタンを押す処理

//ここから
画像1を1回見つけたら以降は画像1がなくても画像2を見つけるまでa.uwsの中の処理を上2つの処理に加えたい処理()
//ここまで
fend

こんな感じのことをやりたいです

958デフォルトの名無しさん2021/06/20(日) 06:27:18.41ID:tvAYOSZI
NOXの場合の考慮とか
画像1が1回しか見つからないこととか
chkimgを余分に実行して時間がかかることとか
置いておく
状態を変更できる変数を使って画像1と画像2を
見つけたかどうかという状態を管理する
変数の名前はgazou1mitsuketaじゃなくていい

call a.uws
gazou1mitsuketa = False
while True
(省略)
//ここから
ifb chkimg("画像1")
gazou1mitsuketa = True
endif
ifb chkimg("画像2")
gazou1mitsuketa = False
endif
ifb gazou1mitsuketa
a.tsuika()
endif
//ここまで
wend

959デフォルトの名無しさん2021/06/20(日) 08:03:31.93ID:2nwNcO+1
>>958
option shortcircuit

call a.uws
gazou1mitsuketa = False

while True
(省略)
 //ここから
 ifb gazou1mitsuketa or chkimg("画像1")
  gazou1mitsuketa = True
  ifb chkimg("画像2")
   gazou1mitsuketa = False
  else
   a.tsuika()
  endif
 endif
 //ここまで
wend

960デフォルトの名無しさん2021/06/20(日) 22:13:34.21ID:rWaLY8jt
while trueにwendでした、寝ぼけてました
>>959が正しいってことですかね?やってみます

961デフォルトの名無しさん2021/06/20(日) 23:06:19.83ID:xqcz4eEH
>>960
959は958を効率よくした感じのはず
958でやってること理解できるなら959の方がいいと思う

962デフォルトの名無しさん2021/06/21(月) 19:36:45.44ID:qUhNELyw
>>961
ありがとうございます
でもoption shortcircuitってどんな意味があるんですか?
調べてもいまいちわからなくて

963デフォルトの名無しさん2021/06/21(月) 19:57:25.10ID:xAMfoQlc
短絡評価でググって分からなければとりあえずおまじないでいいよ
変な動作すると思ったらまた調べてみると分かるかもね

964デフォルトの名無しさん2021/06/23(水) 09:11:36.97ID:mNR5QgFC
result = funcA() AND funcB()
という式があった時 funcAの戻りがFALSEなら
funcBを評価しなくてもresultの値はFALSEで確定となる
だからfuncBを評価しても時間の無駄なのでfuncBを呼び出さないのが短絡評価

ちなみに旧VBやVBAは短絡評価が無いが、C系やPythonは短絡評価が標準
後者に慣れてるならOPTION SHORTCIRCUITを有効にすると幸せになれる

965デフォルトの名無しさん2021/06/23(水) 23:02:39.31ID:ZOV9Dozi
//ここから
 ifb gazou1mitsuketa or chkimg("画像1")
  gazou1mitsuketa = True

この場合、gazou1mitsuketa を見つけた場合、chkimg("画像1")を探さずにgazou1mitsuketa = True
で確定するってことであってます?

966デフォルトの名無しさん2021/06/24(木) 02:23:59.47ID:00iTQ5wf
gazou1mitsuketaがTrueの場合(=すでに1回chkimg("画像1")がTrueになった後)は
gazou1mitsuketaの評価だけでTrueが確定するから2回目以降のchkimg("画像1")は実行されない

967デフォルトの名無しさん2021/06/24(木) 19:13:43.20ID:PWbklwVl
>>966
すいません、短絡評価についてです

968デフォルトの名無しさん2021/06/24(木) 20:30:05.47ID:dP2DIBfG
>>967
言葉が足りないからちゃんと書いて
そもそも「gazou1mitsuketaを見つけた場合」ておかしい
gazou1mitsuketaは見つけるものじゃない

969デフォルトの名無しさん2021/06/25(金) 00:17:46.49ID:vMtaTkKe
すいません、それも言葉遣いだったようですが、>>965の部分が>>964の言う短絡評価ってことであってますか?

970デフォルトの名無しさん2021/06/25(金) 09:53:18.96ID:EowRs67i
もうすでに答え出てるけど、複数条件式がある場合に、最初の条件一致のみでその条件式を評価できる場合、それ以降の追加条件をスルーするという事

971デフォルトの名無しさん2021/06/25(金) 23:47:56.00ID:vMtaTkKe
じゃああってそうですね、ありがとうございます

972デフォルトの名無しさん2021/07/03(土) 12:53:45.98ID:7+9XI9UL
Andoroidエミュでゲームの周回マクロ組んでるんですけれど画像認識の処理を範囲指定じゃなくて指定のプロセス内のみで行う方法ってありませんか?

973デフォルトの名無しさん2021/07/03(土) 12:58:50.69ID:7+9XI9UL
エミュレーターウィンドウが他のウィンドウに隠れちゃうと画像認識処理が進まなくて困っているということです。

974デフォルトの名無しさん2021/07/03(土) 15:31:03.86ID:m1bhd94m
MOUSEORG関数を使って頑張ると可能

975デフォルトの名無しさん2021/07/06(火) 03:06:28.27ID:amsSEIe8
> id = GETID("**** - FANZA GAMES - Iron")
> Hnd = GETCTLHND(id, "Chrome_RenderWidgetHostHWND")
> MOUSEORG(Hnd, MORG_DIRECT, MORG_BACK)
>
> While True
>
> IFB CHKIMG("****_1.bmp")
> BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,10)
> endif
>
> IFB CHKIMG("****_2.bmp")
> BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,10)
> SLEEP(1)
> BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,10)
> endif
>
> SLEEP(1)
>
> Wend


これでバックグラウンドでのブラゲの自動周回自体は機能するのですが
なぜか実行中はブラウザのタイトルバーなどがバグったかのようにずっとチラつきます
これが起こらないようにするにはどうしたらいいんでしょう?

上のものは解説サイトを元にしたもので
そこでの3行目は本来 MOUSEORG(Hnd, 2) でしたが何故かこれでは機能しなかったので
さらに調べてみたところ別のサイトにて MOUSEORG(Hnd, MORG_DIRECT, MORG_BACK) を見つけました
後者で正しく動きはしたもののチラつくようになってしまったという次第です

記述の仕方などが間違っているんでしょうか
教えてください

976デフォルトの名無しさん2021/07/06(火) 07:20:51.43ID:/RjXbpw3
UWSCはヘルプファイルが優秀だから分からなくなったら読むことをオススメする

MOUSEORGでMORG_BACKを指定している時の画面のチラつきはどうしようもなかったと思う
諦めてそのまま使うか、MORG_FOREにしてウィンドウを最前面に表示させておくか

977>9752021/07/08(木) 00:39:02.57ID:gAnN6jGv
そうなんですか
特に害も無いようなので気にしないことにします

ありがとうございました

978デフォルトの名無しさん2021/07/10(土) 20:08:14.26ID:XM4MvmXG
ifb chkimg("img.bmp")
btn(left,click,g_img_x,g_img_y)

これで画像の中央または右下をクリックしたいのですが
xとyに画像サイズを手打ちする以外の方法ありますか?

979デフォルトの名無しさん2021/07/10(土) 20:44:43.14ID:CnuMoVdC
>>978
btn(left,click,g_img_x + 50,g_img_y + 30)
こういうのではないってこと?

980デフォルトの名無しさん2021/07/10(土) 21:58:25.41ID:QRyBoOzw
>>978
画像の縦横の幅から中央の座標は計算できるだろ

981デフォルトの名無しさん2021/07/12(月) 01:07:25.55ID:8PUM0aGH
>>979
はい。頻繁に新しい画像に差し替える上に
毎回画像サイズが微妙に違うので画像の
右端と中央の値も自動で検出ないでしょうか?

982デフォルトの名無しさん2021/07/12(月) 05:22:18.76ID:vUaIVbuw
>>981
それぞれの画像のサイズはお前が知ってるんだから指定したらいいのでは?

983デフォルトの名無しさん2021/07/12(月) 10:24:19.84ID:H6QXN1y/
BMP画像の幅と高さを得る関数
https://poku.blog/pc/code/uwsc/img-height-wifth.html

984デフォルトの名無しさん2021/07/12(月) 13:04:37.72ID:IDkhHauo
自分はchkimgxの関数使ってるな

985デフォルトの名無しさん2021/07/12(月) 22:40:23.83ID:huq3V1Ev
>>982
サイズは調べないと分かりません。
頻繁に変わるサイズをいちいち確認するのは
中々手間な作業なので省けるなら省きたいです。

986デフォルトの名無しさん2021/07/12(月) 23:51:06.13ID:8VMj3XKP
>>983で出来ました
ソース貼り付けただけだとうまく動かなかったので文字を囲う"と計算式のマイナスを直したらちゃんと動きました
情報公開する方はちゃんと動くものを出してほしいですね

987デフォルトの名無しさん2021/07/15(木) 05:11:03.79ID:mj6R5ge4
> 情報公開する方はちゃんと動くものを出してほしいですね
清々しいまでの乞食だw

988デフォルトの名無しさん2021/07/15(木) 07:09:47.12ID:BwKcyqiC
>>987
気持ちよくしてくれた方に対して乞食呼ばわりは失礼です
まだ義務教育を受けている段階の方なら意味をはっきり理解していない言葉は辞書を引く癖をつければ間に合います

989デフォルトの名無しさん2021/07/15(木) 07:28:32.91ID:9d/0yVjN
清々しい(きよきよしい)キチガイ

990デフォルトの名無しさん2021/10/30(土) 19:25:40.38ID:tA37D2o5
昔PRO購入していたUWSCを最近ちゃんと使い始めて、初めてこのUWSCスレみつけた!
初〜中級者な自分に有益な情報多くてほんと助かります(言い争いも多いけど)。
本スレのほうも楽しみ。
あと作者が亡くなられてたということで本当に残念です。昨日知りました。
このスレが消える前に自分メモ用にログ残したった。
みんな初心者卒業しちゃってて継続なさそうだし。

991デフォルトの名無しさん2021/10/30(土) 19:40:25.15ID:BIRu0arL
なんで書き込みないのかと思ったらこっちは初心者用だからなのか

992デフォルトの名無しさん2021/11/12(金) 20:31:09.08ID:9I9Wghw5
UWSCはwindows10で動作するんですか?

993デフォルトの名無しさん2021/11/12(金) 20:33:23.14ID:JKu/AJc8
>>992
全機能が使えるかは分からんが、俺の用途では普通に使えてる

994デフォルトの名無しさん2021/11/12(金) 22:56:54.17ID:xoJHoay5
>>992
普通に使える
IE関係の機能は使えないのがあるかもしれないが、IE使ってないから分からん

995デフォルトの名無しさん2021/11/13(土) 09:59:44.60ID:CrYSxUjw
>>993-994ありがとう
画像認証が出来ないOSの設定なのかな?

996デフォルトの名無しさん2021/11/13(土) 11:16:47.86ID:Oi0tyZlY
実際にうまく動作しないならそう書け
具体的に書けば教えてもらえるだろう

997デフォルトの名無しさん2021/11/14(日) 00:12:11.79ID:tEJjUPzv
うめ

998デフォルトの名無しさん2021/11/14(日) 07:53:25.02ID:xN0MYk0E
誰か作者の魂を呼んでくれ

999デフォルトの名無しさん2021/11/16(火) 01:02:55.97ID:fqXCMnDe
999

1000デフォルトの名無しさん2021/11/16(火) 01:10:18.00ID:b0ZMvWtK
ご冥福をお祈りします


lud20220918114113ca
このスレへの固定リンク: 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枚 」を見た人も見ています:
【初心者】PC初心者 購入相談スレ 3台目
【初心者】PC初心者 購入相談スレ 1台目
【LCC】台湾LCC初心者スレ Part.7【格安旅行】
TOEIC初心者が頑張るスレ
【第五人格】IdentityV 初心者用スレ 16
pc初心者なんだが質問したい
Mac初心者質問スレッド281
Mac初心者質問スレッド283
PC初心者のJKだけど質問ある?
PC初心者のワイ、充実したPCライフが送りたい。
PC初心者
PC初心者にありがちなこと
PC初心者板の回答者の質を向上される為の・・・
自作PC初心者パーツ購入相談事務所【27列目】
たけしの自作PC初心者パーツ購入相談事務所【26列目
【FF14】メンター専用スレ【初心者救済】 [無断転載禁止]
Python初心者スレ
JS初心者の集まるスレ
マム初心者が集まるスレ
FX初心者スレ 199pips
FX初心者スレ Part109
FX初心者スレ 153pips
FX初心者スレ 196pips
FX初心者スレ 184pips
FX初心者スレ 167pips
冬山初心者スレ その46
台湾旅行初心者スレ Part.6
日向坂46 初心者向け質問スレ
MTB初心者質問スレ part106
真空管アンプ自作初心者を救うスレ 23
ロード初心者質問スレ part457
ロード初心者質問スレ part426
初心者におすすめのカメラを教えるスレ
真空管アンプ自作初心者を救うスレ 25
真空管アンプ自作初心者を救うスレ 22
お絵描き初心者に適当に返答するスレ
初心者のための優しい質問スレ その3
Java入門・初心者質問スレ Part.4
【初心者歓迎】メギド72質問スレ 7
【初心者】懸垂10回を目指すスレ 12【チン】
ラジコンヘリ初心者が集うスレ 3機目
人狼ジャッジメント初心者スレ part13
【海外通販】Aliexpress初心者質問スレ 2
将棋初心者のための質問&雑談スレ 35局目
人狼ジャッジメント初心者スレ part12
【スクスト】初心者・質問スレ part38
【WoT】World of Tanks 初心者スレ 119
【WoT】World of Tanks 初心者スレ 144
【WoT】World of Tanks 初心者スレ 133
レザクラ初心者の質問に親切に答えるスレ ★19
【海外通販】AliExpress初心者質問スレ 12
遊戯王 初心者・復帰組交流支援スレ Part18
【LoL】League of Legends 初心者スレ Part338
【LoL】League of Legends 初心者スレ Part346
【LoL】League of Legends 初心者スレ Part284
【LoL】League of Legends 初心者スレ Part297
【質問】Ingress初心者支援スレ LV99【活動報告OK】
【LoL】League of Legends 初心者スレ Part313
初心者が気軽に何でも撮影してUPして評価してもらうスレ 3
クルセイドシステムTCG総合質問・初心者スレ Q.10
【初心者】懸垂10回を目指すスレ 13【プルプル】
【LoL】League of Legends 初心者スレ Part314
【LoL】League of Legends 初心者スレ Part327
【LoL】League of Legends 初心者スレ Part306
【DQ10】ドラゴンクエストX 初心者スレ 128組目
幻獣契約クリプトラクト 初心者&質問スレ part20
11:01:29 up 3 days, 8:10, 4 users, load average: 27.44, 30.11, 31.74

in 0.04120397567749 sec @[email protected] on 091600