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

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


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

このスレへの固定リンク: 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
●ダウンロード
https://www.vector.co.jp/soft/winnt/util/se115105.html
https://web.archive.org/web/20180125141222/http://www.uwsc.info/download.html

●サンプル
http://www.uwsc.info/sample.html

●FAQ
http://www.uwsc.info/faq.html
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
●使い方・基礎解説学習サイト
http://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
http://www.confrage.com/uwsc/
http://necro.jp/dev/uwsc/
http://canal22.org/
http://big.tm.land.to/handbook/uwsc.htm
http://www.game-rev.com/review/gameut/uwsc.html
5デフォルトの名無しさん
2018/09/24(月) 12:16:00.59ID:an35jPjo
●スクリプトテンプレサイト
http://siromasa.html.xdomain.jp/uwsc/index.html
http://scripts.web.fc2.com/
http://nem.symphonic-net.com/uwsct/0610uwsct.html
http://iriyak.adam.ne.jp/uwsc.html
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
念のため前後も確認したい
4542
2018/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以外を疑うなら画面全体を動画キャプチャしたら?
4945
2018/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を実行するようにしてはどうだろう
5249
2018/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初心者用スレ 	->画像>10枚
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初心者用スレ 	->画像>10枚
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初心者用スレ 	->画像>10枚
63デフォルトの名無しさん
2018/10/17(水) 22:59:23.31ID:rmV2ISLZ
アップする画像はこちらでした…

UWSC初心者用スレ 	->画像>10枚
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初心者用スレ 	->画像>10枚
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
みたいな感じ
200197
2019/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: 無期限待ち
248246
2019/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
https://junjun777.hatenablog.com/entry/20121022/uwsc_hashtbl_parameter

ググろう
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)ボタンで操作を記録しようとしたら
最初のウインドウ移動コード以降全く記録できませんがもう使えないのでしょうか
作者死亡の噂があるし…
318317
2019/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初心者用スレ 	->画像>10枚
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初心者用スレ 	->画像>10枚
を走らせた結果が
UWSC初心者用スレ 	->画像>10枚
です。

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初心者用スレ 	->画像>10枚
こう置かれてる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って見えないプログラムがしょっちゅう起動してる?から
フォーカスを奪われたようになってるんでない
418409
2019/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ってあったっけメモ帳の置換の方が早そう
454450
2019/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となるときの表現方法が正規表現で可能なのかな?
詳しくないのでごめんなさい。
482450
2019/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等使えばできるみたいですね。
485450
2019/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
496495
2019/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入れたりは適当に調整してくれ
500495
2019/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/
550549
2019/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ではないよ
時間も必須だと思ってた
詳しくありがとう
620608
2020/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)
621608
2020/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
https://www.itmedia.co.jp/news/articles/2103/03/news096.html
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
も見えてなかった…
ありがとうございます!
818807
2021/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から起動させるのは駄目?
ネットワークドライブを割り当てるとかはやってないのでわかりませんね
829827
2021/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ファイルで実行する手もある
831827
2021/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>975
2021/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
ご冥福をお祈りします
ニューススポーツなんでも実況



lud20250916122227nca

ID:8YNql35hのレス一覧:


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/
550549
2019/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エラーが出ます。
どうすればよいのでしょうか・・・

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

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

TOPへ TOPへ  

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


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

 
  ↓この板の人気?スレ↓(一覧)
 
インデントを強制しても綺麗なコードにはなりません
ふらっと C#,C♯,C#(初心者用) Part136
プログラミング用フォント
Vue vs React vs Angular vs Svelte Part.10
nim
自称次世代言語議論スレ[PHP PHP PHP]
Git 19
Prologの宿題片付けます 第二編
ユニケージ流コメントの書き方が、ひどすぎて失笑
プログラマ「Go To 禁止」
PyQt5 Python
アセンブラ 13
【人柱】自作ソフトデバッグ依頼スレ【募集所】
【PHP】Laravel【フレームワーク】 Part.7
プログラミングで通貨メーターを作りたい
[CLR] Booスレ [Unity]
次世代言語アンチスレ19
Dart part1
【Enterprise】Java EEスレ part1【開発】
共通部品ってなんのことよ?
電脳世界って実現できそうなの?
アーキテクチャ設計, 処理方針, 規約設計など
スレ立てるまでもない質問はここで 153匹目
大規模多人数開発でも耐えられる言語に必須の機能
WSH(・∀・)スレッド!
ヴァロラントとかゲームのリプレイ機能って
Excel VBA 質問スレ Part69
七行プログラミング part6
GPGPU#5
23:22:31 up 3 days, 20:31, 4 users, load average: 201.62, 139.24, 123.82

in 5.0427000522614 sec @[email protected] on 091612