2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

自動化ツールUWSC使いよ集まれ16

1 :名無しさん@お腹いっぱい。:2015/11/11(水) 13:45:28.80 ID:+oPzgSay0.net
Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html

●UWSC 掲示板(※作成依頼掲示版ではありません)
 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi
http://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past

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

●使い方・基礎解説学習サイト
http://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
http://www.confrage.com/uwsc/
http://necro.jp/dev/uwsc/
http://park14.wakwak.com/~simizu/uwsc/fruwsc.html
http://canal22.org/
http://big.tm.land.to/handbook/uwsc.htm
http://www.game-rev.com/review/gameut/uwsc.html

●スクリプトテンプレサイト
http://izagne.com/uwsc/
http://scripts.web.fc2.com/
http://www.nagomi-jp.net/~liners/
http://nem.symphonic-net.com/uwsct/0610uwsct.html
http://siromasa.digi2.jp/uwsc/
http://iriyak.adam.ne.jp/uwsc.html

前スレ 自動化ツールUWSC使いよ集まれ15
http://anago.2ch.net/test/read.cgi/software/1436671958/

2 :名無しさん@お腹いっぱい。:2015/11/11(水) 13:46:14.33 ID:+oPzgSay0.net
Q.シェアウェア版で「L20が存在しません」「L22が存在しません」とエラーが出て一部機能が動作しない
A.割れシリアルを使った時に出る、ささやかな割れ対策

Q.購入したのに上記エラーが出る
A.ライセンスキーが正しいか確認(ベクターで購入した場合、登録するのは 伝票番号の xxxxxxxxx ではありません)
UWSCをアンインストール後、再インストールして正しい17桁のライセンスキーを入力してください。

●Pro版の追加機能
EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます)
IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます)
HTMLを利用した画面関数が使えます。
EXCELシート用関数が使えます。(OpenOffice.org/LibreOfficeの表計算(Calc)に対しても可)
デバッガが付属しています。

●質問したい方へ
「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」
「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる
「○○作って下さい」→ 依頼スレじゃありません。
過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。
備考:PRI NT文を利用してデバッグする。管理者権限で起動してみる。AEROを切る。fcuc.uwsを走らせてみる。

●スクリプトを晒す上での注意
他人が読みやすいようにインデントを付けるように。解らない人はググレ。
(タブインデントは使えないんだぜ 全角スペース等に 変換しておくべし)
言いたい事に関係無い部分は 〜○○の処理〜 や 処理A 等のようにし、
必要な部分を晒すようにする。

●他人の書いたスクリプトを安易に実行しないように。
ハードディスクをフォーマットされたりしても、自己責任。

3 :名無しさん@お腹いっぱい。:2015/11/11(水) 13:46:50.79 ID:+oPzgSay0.net
画像認識関数 ChkImgX-ver1.2.1(2015/02/03)
https://googledrive.com/host/0B83tioTzFacPQkFKWm52dVhsaXc/ChkImgX-ver1.2.1.zip
http://anago.2ch.net/test/read.cgi/software/1413600379/673

UWSC向け画像認識関数です。CHKIMGは(ほぼ)一致画像しか探すことができませんが、
CHKIMGXは似た画像の検出が可能です。使い方は中身のsample.uws や ChkImgX.uws を見てください。

4 : 【だん吉】 :2015/11/11(水) 13:54:22.45 ID:k95kaPQv0.net
      _
      |O\
      |   \ キリキリ
    ∧|∧   \ キリキリ
ググゥ>(;⌒ヽ    \
    ∪  |     (~)
     ∪∪   γ´⌒`ヽ
     ) )    {i:i:i:i:i:i:i:i:}
     ( (    ( ´・ω・)、>>1
           (O ⌒ )O
            ⊂_)∪

5 :名無しさん@お腹いっぱい。:2015/11/11(水) 15:15:54.45 ID:QGUfCker0.net
>>前スレ1000
>そんな当たり前の事一々指摘せんでもいいわw
>UWSC単独で出来ないのが残念って言ってるだけだろ

え、UWSC単独でできるよね・・・何言っ・・え?

6 :名無しさん@お腹いっぱい。:2015/11/11(水) 15:40:01.62 ID:DWR2WWEp0.net
当たり前の事指摘されたくなかったら条件や情報を後出しにしないことだな
コードまで貼って教えてくれた丁寧な回答者に対する態度じゃないだろ二度と来るな

7 :名無しさん@お腹いっぱい。:2015/11/11(水) 16:00:51.36 ID:uAtR0Bu+0.net
知識のないぼくちゃんは別プロセスで常時表示させてるslctboxとかinputでWriteiniして
threadでReadiniして無理矢理変更してたわ
前スレのやり方も試してみようかな

8 :名無しさん@お腹いっぱい。:2015/11/11(水) 16:28:56.45 ID:MrsBdBBf0.net
シェアウェア版に付いて来るデバッガで、変数の書き換えとか出来るといいね。知らんけど

9 :名無しさん@お腹いっぱい。:2015/11/11(水) 17:06:46.18 ID:rpEewyDo0.net
実行中の UWSC の挙動をGUIで変えるために、
AutoIt3 + KODA FormDesigner で .ini ファイルを編集するGUIアプリ作って
UWSC からは、必要に応じて .ini を読み直すという構成にしたよ。

10 :名無しさん@お腹いっぱい。:2015/11/11(水) 17:07:15.29 ID:oN5GYFPP0.net
そもそもoleevent使えばcreateformだろうが
非シェアのIEを使った擬似createformだろうが
イベントドリブンなスクリプト作れるしなぁ

まぁ其処までする位ならGUI構築、連動できる言語の出番って考え方もあるけれどね
(自分はどちらかと言うとそっち派)

11 :名無しさん@お腹いっぱい。:2015/11/11(水) 17:26:50.51 ID:jGEVW+4x6
過去ログ
自動化ツールUWSC使いよ集まれ15
http://anago.2ch.sc/test/read.cgi/software/1436671958/

自動化ツールUWSC使いよ集まれ14
http://anago.2ch.sc/test/read.cgi/software/1425741537/

自動化ツールUWSC使いよ集まれ13
http://anago.2ch.sc/test/read.cgi/software/1413600379/

自動化ツールUWSC使いよ集まれ12
http://anago.2ch.sc/test/read.cgi/software/1405162342/

自動化ツールUWSC使いよ集まれ11
http://anago.2ch.sc/test/read.cgi/software/1389240960/

10 http://anago.2ch.net/test/read.cgi/software/1367340336/
9 http://anago.2ch.net/test/read.cgi/software/1350040751/
8 http://anago.2ch.net/test/read.cgi/software/1333915056/
7 http://anago.2ch.net/test/read.cgi/software/1312390804/
6 http://hibari.2ch.net/test/read.cgi/software/1291347103/
5 http://hibari.2ch.net/test/read.cgi/software/1260304053/
4 http://pc12.2ch.net/test/read.cgi/software/1235990960/
3 http://pc11.2ch.net/test/read.cgi/software/1176677869/
2 http://pc11.2ch.net/test/read.cgi/software/1156416884/
1 http://pc7.2ch.net/test/read.cgi/software/1107738590/

12 :名無しさん@お腹いっぱい。:2015/11/11(水) 20:30:11.22 ID:mvp9IgBe0.net
UWSCでシェアウェアのシリアル入力欄に値を・・・
3日かかってやっと1つ見つけた

13 :名無しさん@お腹いっぱい。:2015/11/13(金) 08:45:57.85 ID:3qksjFX10.net
uwsファイルをexe化したいんですがfree上位版じゃなく何かやり方ありませんか?

14 :名無しさん@お腹いっぱい。:2015/11/13(金) 08:54:17.45 ID:Mcz5MFKc0.net
Free上位版て何だ? 金払えよ。その機能は無料じゃねえんだよ

15 :名無しさん@お腹いっぱい。:2015/11/13(金) 10:01:53.16 ID:NDAx3tp60.net
>>13
exe化できる人に 金払ってやってもらう。

16 :名無しさん@お腹いっぱい。:2015/11/13(金) 15:46:47.76 ID:wNx4EtEV0.net
自己解凍アーカイブでも作ればいいんじゃないかな

17 :名無しさん@お腹いっぱい。:2015/11/13(金) 22:05:27.26 ID:Uo/qbExH0.net
UWSCに備わっているマウスの移動を手動で記録(座標指定や画像指定とか無し)
させたものをブラウザゲームにて使いたいのですが運営側に不振な動きとかってばれるものなんでしょうか?
24時間使うとかじゃなく1日数時間程度なのですが、どなたか教えて下さい。

18 :名無しさん@お腹いっぱい。:2015/11/13(金) 22:06:59.66 ID:Z3RRarm70.net
巣に帰れ

19 :名無しさん@お腹いっぱい。:2015/11/13(金) 22:13:32.82 ID:b0VOgiyP0.net
UWSCの質問ですらねぇwww

20 :名無しさん@お腹いっぱい。:2015/11/13(金) 22:49:34.51 ID:xAhnpw3q0.net
運営に問い合わせして どうぞ

21 :名無しさん@お腹いっぱい。:2015/11/13(金) 23:13:38.61 ID:b445lS/m0.net
league of legendsってゲームでmouseorg(pvp.net Client, 1)
使うとPVPが定義されてません って出てくるんだけどGETIDでアクティブ取得してPRINTしてやったらpvp.net Clientで間違っては無いんだがなんなのこれ?

22 :名無しさん@お腹いっぱい。:2015/11/14(土) 00:17:35.92 ID:FIcKEvAv0.net
巣に帰れ

23 :名無しさん@お腹いっぱい。:2015/11/14(土) 00:18:11.82 ID:mvqgNrFZ0.net
>>21
""

24 :名無しさん@お腹いっぱい。:2015/11/14(土) 03:37:05.40 ID:BoPLs7GB0.net
ぐぐってみたのですがわからないので教えてください。
UWSC初心者ですが、bluestacks上のアプリを画像認識で無限ループするマクロを作りました。
しかし、アプリがフリーズすると画像が表示されずマクロが止まってしまいます。

そこで、マクロのループ処理が止まった場合、アプリを再起動してループを再開するような例外処理を作りたいのですが良い関数があれば教えてください。
ループ処理の前に時間を設定してもしタイムアウトが発生したら再起動をするといったものを作りたいです。

25 :名無しさん@お腹いっぱい。:2015/11/14(土) 03:49:36.32 ID:mvqgNrFZ0.net
>>24
自分がコードを書けるように日本語を変換する

「マクロのループ処理が止まった場合」というのは「画像がなかった場合」のことで大丈夫だろう
それ以外で止まるならその条件も加える

「ループ処理の前に時間を設定してもしタイムアウトが発生したら」というのを、
「画像がなかった場合の回数を設定してもしその回数を超えたら」とすればいい

26 :名無しさん@お腹いっぱい。:2015/11/14(土) 04:43:03.64 ID:uyToSXci0.net
while chkimg("a.bmp")
〜処理〜
wend

みたいに書いてるからループを抜け出して止まってしまうとかいうことなのかな?

27 :名無しさん@お腹いっぱい。:2015/11/14(土) 08:59:23.55 ID:IhUc+KMu0.net
初歩的でスマンが質問させてくれ

去年の12月にDLしたフリー版を使ってたんだがwin10環境で動くのか試したら動かなかった
最新版DLしてもう一回動かしてみたら今度はIF文が閉じてませんみたいな構文エラーが出た

UWSC本体のバージョンで構文まで変わっちゃうのか?
win10で使おうと思ったらまた組み直さないとダメ?

28 :名無しさん@お腹いっぱい。:2015/11/14(土) 09:42:35.18 ID:IpRJAxcj0.net
破壊的な仕様変更があれば更新履歴にあるさ
IF絡みだと
14/02/03 ver4.9c IF文のブロック文にてIFB-ENDIFではなく、IF-ENDIFでも可にした
これかな

29 :名無しさん@お腹いっぱい。:2015/11/14(土) 09:52:52.41 ID:IhUc+KMu0.net
使ってた方のバージョン見たらVer 5.0.4.0 2014-12-14ってなってるから多分違うかな
でも更新履歴ざっと見てもそれらしいのが見当たらないし、ちょっと弄ってみるか

30 :名無しさん@お腹いっぱい。:2015/11/14(土) 09:56:22.61 ID:tGYrtzLK0.net
仮想化でwin10使ってるが、win7で組んだ物をそのまま持って行っても動く
特定の構文にバグが起きてる可能性もあるが、勘違いの可能性のほうが大きいだろうな

31 :名無しさん@お腹いっぱい。:2015/11/14(土) 10:01:32.40 ID:IhUc+KMu0.net
最新版をwin7でやってみたらやっぱり今まで使えてたのが構文エラー出たわ
過去のバージョンで大丈夫だったのがダメになってるっぽい

32 :名無しさん@お腹いっぱい。:2015/11/14(土) 10:59:52.55 ID:PfOb/o3h0.net
そういうのは大体お前の記述ミスだ

33 :名無しさん@お腹いっぱい。:2015/11/14(土) 11:48:55.59 ID:BNINhbNt0.net
>>27
せめて動いたUWSCのバージョンとOS、動かないUWSCのバージョンとOSを教えてあげないと
>>29さんでもエスパーしきれないかもしれない

34 :名無しさん@お腹いっぱい。:2015/11/14(土) 13:03:47.71 ID:9wBwsNfQ0.net
構文エラーが出るソースコードを提示できないってことは
そもそも過去に動いてたってのが勘違い、あるいは妄想だろう

どうせコードを全行コピーしてなかったとかいうオチだろ

35 :名無しさん@お腹いっぱい。:2015/11/14(土) 13:10:52.02 ID:NA9ksDwd0.net
>>31
いいからさっさとコードうpしてみろよ解析好きなおせっかいがいっぱいいるぞ

36 :名無しさん@お腹いっぱい。:2015/11/14(土) 13:22:40.54 ID:IIbYKaCR0.net
win7からwin10にしたらスクリプトエラーではなくてフリーズするようになったな
そこまで実害はないけどちょっと面倒

37 :名無しさん@お腹いっぱい。:2015/11/14(土) 13:22:56.45 ID:GE7AjOYz0.net
俺も5以上のバージョンのUWSCだと頻繁にフリーズするので未だに4.9c使ってる。
構文エラーだとどこの行がおかしいってすぐにわかるんだが固まるだけなのでわからん。
5000行近くあるのでどこがどうなってるのか調べる気が起きない…

38 :名無しさん@お腹いっぱい。:2015/11/14(土) 16:56:44.98 ID:RCUdLg7b0.net
5000行とか。どんだけ低レベルなコーディングしてんだよ

39 :名無しさん@お腹いっぱい。:2015/11/14(土) 17:18:01.21 ID:GE7AjOYz0.net
流石に1ファイルじゃないよ。
関数は分類して5つほどの別ファイルにして
CALLで一まとめにしてるけど、関数のどこがガンなのかわからんし。

40 :名無しさん@お腹いっぱい。:2015/11/14(土) 17:58:18.92 ID:IpRJAxcj0.net
ある程度以上の規模になったら
デバッグ(トレース)フラグを用意して開発
普段はオフにしつつ運用
何かあったらオンにして診断するでしょ

41 :名無しさん@お腹いっぱい。:2015/11/14(土) 18:38:55.24 ID:GE7AjOYz0.net
やたら大きくなってしまって収拾がつかないけど、プログラミング全般において素人で
遊びでやってるもんなので所謂デバッグとかやり方知らない。

触らぬ神にたたりなしって感じでバージョンアップできずにいる

42 :名無しさん@お腹いっぱい。:2015/11/14(土) 22:00:21.04 ID:oICue9LH0.net
いつやるの?今でしょ!

書き溜めた無駄に長いコードの整理は考えてる以上に身になる
これとないチャンスやで

43 :名無しさん@お腹いっぱい。:2015/11/15(日) 01:28:43.76 ID:l+eb1X660.net
おれが300行にまとめてやんよ

44 :名無しさん@お腹いっぱい。:2015/11/15(日) 11:15:02.57 ID:De6xOu7/0.net
ちゃんと確認したら11ファイルに267個の関数になってた
どの関数がどの関数から呼び出されてるのかちゃんと把握してないし
フローチャートとか書いてないし、あんまりコメントも残してないから
我ながら訳が分からん。大体の流れしか把握してない…
こっちを書き換えたらあっちでトラブってとか日常茶飯事orz

45 :名無しさん@お腹いっぱい。:2015/11/15(日) 11:27:52.84 ID:hnZ7/qL70.net
> ある程度以上の規模になったら
> デバッグ(トレース)フラグを用意して開発
> 普段はオフにしつつ運用
> 何かあったらオンにして診断するでしょ


フラグだと On/Off しかできないから DebugLevel で制御してる。

46 :名無しさん@お腹いっぱい。:2015/11/15(日) 11:29:41.24 ID:tIw6v2Vv0.net
変更が怖いならバージョン管理導入すればいいよ

47 :名無しさん@お腹いっぱい。:2015/11/15(日) 12:10:43.83 ID:wd/6nnII0.net
ちゃんと動いて目的果たしてるなら
バージョンアップとかいらなくね

48 :名無しさん@お腹いっぱい。:2015/11/15(日) 12:23:24.06 ID:De6xOu7/0.net
それ。

ただ、4.9cではfor-in構文が使えない。使いたいなとは思ってるんだけど。

49 :名無しさん@お腹いっぱい。:2015/11/15(日) 13:26:11.73 ID:L+1ycDEI0.net
言うほど使うか? for to で十分なんだけど

50 :名無しさん@お腹いっぱい。:2015/11/15(日) 13:51:26.50 ID:3LQPqe8Y0.net
for inてfor eachと同じ内容?

51 :名無しさん@お腹いっぱい。:2015/11/15(日) 14:11:04.40 ID:yRPypCxb0.net
Dim array[2];
print VARTYPE(array);

上記を実行すると、以下のエラーがでます。
なぜなのでしょうか。(uwscのverは5.2.0)

変数:ARRAY 次元数が合いません
2行目:PRINT VARTYPE(ARRAY);

52 :名無しさん@お腹いっぱい。:2015/11/15(日) 14:44:31.81 ID:3LQPqe8Y0.net
>>51
引数の配列に添字追加

53 :名無しさん@お腹いっぱい。:2015/11/15(日) 17:30:57.89 ID:Xc7Hv4el0.net
SafeArray()で取った配列ならVAR_ARRAYが返るのに
DIMの配列だとVAR_ARRAYが返らないどころかエラーになるのは何故?って質問なのでは?

54 :名無しさん@お腹いっぱい。:2015/11/15(日) 18:03:21.92 ID:JWUP4/i00.net
普通の配列はLENGTHかRESIZE使って判断しろって事でしょ
要するにVARTYPEは配列の中身のチェックしか出来ない

55 :50:2015/11/15(日) 18:37:18.45 ID:yRPypCxb0.net
>>53さんが書いてくれている通りの疑問です。

56 :名無しさん@お腹いっぱい。:2015/11/15(日) 20:41:38.88 ID:YS+SiHiA0.net
>>55
作者がそう作ったからそうなのであって、作者以外の誰がその疑問に答えられると思ったの?

57 :名無しさん@お腹いっぱい。:2015/11/15(日) 23:16:55.13 ID:UTZQ0cqw0.net
Dimで0〜9を定義した配列から最後の数字(9)を取り除くにはどうしたらいいでょうか。
再定義するとエラーになり、SETCLEAR、RESIZEはうまく扱うことができませんでした・・・。

現在定義した数をシャッフルしていて、その結果から9を省きたいのです。
単純に任意の配列を削除、或いは再定義できればいいのですが・・・。
初心者のため発想が貧弱でして手詰まりです・・・アドバイスお願いします!

シャッフルはこんな感じのをCallで呼び出してます。
Procedure shuffle(var CarSel[])

Dim n = length(CarSel)
Dim i, r, tmp
for i = 0 to n -1

r = random(n)

tmp = CarSel[r]
CarSel[r] = CarSel[i]
CarSel[i] = tmp
next

Fend

58 :名無しさん@お腹いっぱい。:2015/11/15(日) 23:44:35.20 ID:De6xOu7/0.net
普通にRESIZEすればいいだけの話では?

RESIZE(CarSel, 8)

59 :名無しさん@お腹いっぱい。:2015/11/15(日) 23:45:03.04 ID:YS+SiHiA0.net
>>57
本当に配列のサイズを変更して最後を取り除くことができないなら、
扱う配列の長さをlengthで取るのではなく、
別の変数や配列の頭に入れるなりして管理すればいいのでは?

ちなみに
DIM CarSel[]=1,2,3,4,5,6,7,8,9
print length(CarSel) + ":" + JOIN(CarSel,",")
RESIZE( CarSel, length(CarSel)-2 )
print length(CarSel) + ":" + JOIN(CarSel,",")
を実行したら
9:1,2,3,4,5,6,7,8,9
8:1,2,3,4,5,6,7,8
となる

60 :名無しさん@お腹いっぱい。:2015/11/16(月) 11:34:56.95 ID:kzKcDPQp0.net
シャッフルで混ぜてるせいかうまくいかないですね・・・
ttp://i.imgur.com/4XcV618.png

Dim n = length(CarSel) を毎回変化させられればResizeと合わせて実現できるっぽいんですが、
引数で変化させようとCALL ShuffleNumbers.uws(10)
として Dim n = PARAM_STR[0]にするとエラー、
Resizeのあとに手動で Dim n = 9 と
記述しても再定義でエラーになってしまいます。

多分Procedureで10桁用、9桁用みたいにそれぞれ作ればいいんでしょうが
できればシンプルなコードで柔軟に使っていけたらいいなと思っております・・・

61 :名無しさん@お腹いっぱい。:2015/11/16(月) 12:07:44.32 ID:Xu2hTlmU0.net
>>60
shuffle関数に要素数の引数追加してみたら?

62 :名無しさん@お腹いっぱい。:2015/11/16(月) 12:45:32.71 ID:9wFZf3al0.net
>>60
再定義でエラーってことは、nを2回定義してるんじゃないの?

63 :名無しさん@お腹いっぱい。:2015/11/16(月) 14:40:41.84 ID:W0rLrKGS0.net
>>60
期待値が良くわからないけど、こういうこと?

Dim Original[] =0,1,2,3,4,5,6,7,8,9
Dim CarSel[0]

copyArray(Original, CarSel)
shuffle(CarSel)
print Length(CarSel) +":"+Join(CarSel,",")

copyArray(Original, CarSel)
Resize(CarSel,8)
shuffle(CarSel)
print Length(CarSel) +":"+Join(CarSel,",")

Function copyArray(var src[], var dst[])
  for i=0 to Length(src)-1
    Resize(dst, i)
    dst[i] =src[i]
  next
  Result =i
Fend

64 :名無しさん@お腹いっぱい。:2015/11/16(月) 15:44:23.25 ID:9tIhQjLx0.net
再定義でエラーになってるってことはその言葉通り定義が再び行われてるからエラーになってるんであって…
定義している部分を見れば一目瞭然なんでは?

既に定義された変数に値を代入するなら定義をする必要ないんだから
その部分のDIM外せばいいだけなんじゃ…

65 :名無しさん@お腹いっぱい。:2015/11/16(月) 15:55:39.20 ID:9tIhQjLx0.net
今まで何を問題としてるかわからなかったけど、もしかして問題となってるのはここ?

> //結果(9通り最大8)
> 9: 9,1,4,6,8,5,7,3

2回目のシャッフル結果に9が入ってて最大が8ではないのは
1回目にシャッフルされた配列を入力してるから当然の話だよ。
resizeでは配列の最後を切り飛ばすだけで、内容の最大値を定義するなんて機能は無いから
1回目の結果の最後が9で無ければ2回目の結果に9が入る。

66 :名無しさん@お腹いっぱい。:2015/11/16(月) 16:32:44.46 ID:NGCV+QQo0.net
「0-9の数字をランダムに使用するが、ある条件下で0-8、0-7のように振れ幅が変わる」
というような挙動をするものが必要だったのですが、>>63さんのコードで実現できました。

エラーになってる原因はわかるが、それに対する解決法がわからないため質問してました。
引数で渡すのはA = PARAM_STR[0]として、Aを関数に代入しても「Aが定義されてない」といわれよく分からず…

とりあえず自分が配列や要素について基本的な理解が足りていないことがよくわかりました。
引数の扱いやFunctionとProcedureの使い分けなど、皆さんのアドバイスを基に研究したいと思います。
ありがとうございました・・・

67 :名無しさん@お腹いっぱい。:2015/11/16(月) 17:41:55.59 ID:U7RMM+Pu0.net
少し前に重複しない乱数を希望した数だけ予め用意したいって質問していた人かな?
その実装方法だと関数を呼ぶ側と呼ばれる側の連携密度が高すぎると思うよ
こんな感じで乱数配列が欲しい時に一度作成したらそれは捨てる位の方が疎結合になって保守性が上がると思う

For item In GetRandomArray(10)
 print item
Next

Function GetRandomArray(value)
 result = SAFEARRAY(0, value - 1)

 For i = 0 To value - 1
  result[i] = i
 Next

 For i = 0 To value - 1
  r = Random(value - 1)
  swapValue = result[i]
  result[r] = result[i]
  result[i] = swapValue
 Next
Fend

68 :名無しさん@お腹いっぱい。:2015/11/16(月) 17:47:31.69 ID:U7RMM+Pu0.net
繰り返しテストしてみたらこれ入替えでバグってるねw
すまん

69 :名無しさん@お腹いっぱい。:2015/11/16(月) 17:50:15.00 ID:U7RMM+Pu0.net
入替え部分の添字だけ差し替え

  r = Random(value - 1)
  swapValue = result[i]
  result[i] = result[r]
  result[r] = swapValue

70 :名無しさん@お腹いっぱい。:2015/11/16(月) 22:57:57.42 ID:NGCV+QQo0.net
>>67-69
おぉ、参考にさせていただきます!
そうです前スレの終わり頃に質問した者です。
運用することを考えたら独立させたほうが柔軟になると…なるほど
関数やSafeArray等ちゃんと理解して使えるよう頑張ってみます、ありがとうございました

71 :名無しさん@お腹いっぱい。:2015/11/17(火) 00:19:41.16 ID:r3ygr5190.net
IE = GETACTIVEOLEOBJ("InternetExplorer.Application")
IE.document.querySelector("#hogehoge").click()

このようなスクリプトで、querySelectorで実際には無いセレクタを指定した時
COMエラーで落ちるのですが、存在しない場合にエラー無しでスルーするような方法は
try-exceptを使ったり、あらかじめ存在確認してからクリック

if IE.document.querySelector("#hogehoge")<>NULL then IE.document.querySelector("#hogehoge").click()

というような方法しかないのでしょうか?
スクリプト実行中にページの内容が書き換わって目標とするセレクタが消えて
COMエラーで落ちるというパターンが時々あって困っています。

72 :名無しさん@お腹いっぱい。:2015/11/17(火) 01:11:47.62 ID:EmLKpCk20.net
// COMエラーメッセージの抑止
COM_ERR_IGN
  // 何等かのCOM処理
COM_ERR_RET
でどうですか

73 :名無しさん@お腹いっぱい。:2015/11/17(火) 02:35:05.29 ID:X+X/Girc0.net
ハンゲのリングドリーム(Flashゲーム)でマクロを組んでるんだけど、MOUSEORGをMORG_DIRECTにするとフラッシュ上の
ボタンをうまく押せない(当該ボタン上にカーソルを合わせると押そうとしているような挙動はするんだけど実際には押せていない)
状態になってMORG_CLIENTを指定するとしっかりボタンを押せるんだけど、これってどうにかMORG_DIRECTでボタンを押せるよう
にすることは出来ないのかな?

74 :名無しさん@お腹いっぱい。:2015/11/17(火) 08:30:36.92 ID:r3ygr5190.net
>>72
こんな機能あったんですね。ありがとうございます。

75 :名無しさん@お腹いっぱい。:2015/11/17(火) 15:14:10.19 ID:r3ygr5190.net
> CALL UWSファイル名.uws(xxx, xxx, ...)  // 引数を付けた場合に値は PARAM_STR[] 変数に入る

CALLでスクリプトを呼んだ時のように、不定個の引数を受け取って
内部で配列として扱う関数を作りたいのですが、どうしたら出来るでしょうか?

76 :名無しさん@お腹いっぱい。:2015/11/17(火) 16:20:50.27 ID:t2yi2j7b0.net
SafeArry使いなよ

77 :名無しさん@お腹いっぱい。:2015/11/17(火) 16:58:26.39 ID:r3ygr5190.net
SafeArrayを使うとは具体的には?

引数が不定数だと、実行時に引数の数が違うと怒られてしまうんですが。
配列を作る関数が欲しいのですが、順序が逆の
先に配列を作ってから関数に入れる事しか思いつかないです。

78 :名無しさん@お腹いっぱい。:2015/11/17(火) 19:35:50.10 ID:kvx4k+FL0.net
pram[] が使える言語も受け側は配列として処理するだけの糖衣構文
あると便利な機能だけど無いとコレが出来ないって事はない
結果に加工した配列が欲しい場合はSafeArray使えって話でしょ

UWSCはpram[] は使えないので配列長なしの配列を引数に使うしか無いので
こんな感じで引数用の配列を用意する必要があるのは仕方ない

Dim a[] = 1,2,3
Dim b[] = 5,10
Print JOIN(test(a), ",")
Print JOIN(test(b), ",")

Function Test(value[])
 Dim iMax = Length(value) - 1
 result = SAFEARRAY(0, iMax)
 For i = 0 To iMax
  result[i] = value[i] * 2 //2倍に加工
 Next
Fend

//実行結果
//2,4,6
//10,20

79 :名無しさん@お腹いっぱい。:2015/11/17(火) 23:27:48.86 ID:3Sfs5iCK0.net
引数を多目に書いておいて関数内で処理するんはダメなのか?

80 :名無しさん@お腹いっぱい。:2015/11/18(水) 00:57:58.26 ID:DCQo+QOr0.net
要するに不特定の因数を受け取って配列を吐き出したいんだろ?

関数内で配列を作るか関数外で用意しておいたところに入れるかの差はあるが
関数内で配列を作って外に放り出すにはSafeArrayしかないし
関数外であらかじめ用意しておくなら配列数でリサイズすればいいだけじゃないっていう話

関数に不特定の因数を渡す際には
セパレータ記号を付けて一つの因数にしておいて、関数内で分解すればよろし

dim array = test(a+"#"+b+"#"+c+"#"+d+"#"+e)

function test(param)
testarray = safearray(0, 0); testarray[0] = token("#", param)
while pos("#", param); testarray[resize(testarray, resize(testarray)+1)] = token("#", param); wend
result = testarray; fend

81 :名無しさん@お腹いっぱい。:2015/11/18(水) 10:58:24.63 ID:R9oruk2c0.net
UWSC初心者です。つまづいてしまったのでどなたかお教えください。
Bluestacks上でアプリを起動してマウス操作などの自動化を行いたいのですが記録されても再生するとマウスがBluestacks上動いたりクリックしたりしません。PCゲーでは今まで動いていたのですが‥
なぜでしょう?どなたかお願いします。

82 :名無しさん@お腹いっぱい。:2015/11/18(水) 11:08:48.43 ID:6gzLq2020.net
>>80
内部で配列として扱いたいだけで、出力は配列というわけではないのです。
結局のところ、不特定数の引数を受け取りたいだけなんですが、
そのままの入力はどうやら無理のようですね。
素直に配列作って渡すことにします。
無名配列でも作れたらよかったのですが。

ありがとうございました。

83 :名無しさん@お腹いっぱい。:2015/11/18(水) 11:24:54.22 ID:zICgyZ9/0.net
>>82
単純に受け側でsplitで良いような…

84 :名無しさん@お腹いっぱい。:2015/11/18(水) 11:37:45.83 ID:6gzLq2020.net
受け取る変数も不特定なのでセパレータが被る恐れがあります

85 :名無しさん@お腹いっぱい。:2015/11/18(水) 14:17:53.45 ID:95T98vMj0.net
特定の画像が出た時に直前の作業をもう一度起こす事で安定性を上げたいです
a→b→cと処理勧めてきて
while
if checking
処理dに進む
break

elseif checkingエラー画面
call b→c処理を書いた別ファイル
endif
wend
みたいな形でなんとか動かせてはいるんですけど修正の作業とかが面倒なので別のアイデア無いでしょうか

86 :名無しさん@お腹いっぱい。:2015/11/18(水) 15:02:48.84 ID:WUTAg8ze0.net
>>85
b→cを別ファイルにするだけではあかんの?


a→
call b→c処理を書いた別ファイル
while
if checking
処理dに進む
break

elseif checkingエラー画面
call b→c処理を書いた別ファイル
endif
wend

87 :名無しさん@お腹いっぱい。:2015/11/18(水) 15:07:24.77 ID:WUTAg8ze0.net
安定性を上げる手段としては、状態判定と処理をループにしておくという手も。

while true
状態判定 a →処理 a
状態判定 b →処理 b
状態判定 c →処理 c
状態判定 d →ループ抜ける
wend

処理 d

88 :名無しさん@お腹いっぱい。:2015/11/18(水) 15:15:35.51 ID:gRViVlbY0.net
>>84
分ってるかもだけれど
セパレータは2文字でも3文字でもOK

89 :名無しさん@お腹いっぱい。:2015/11/18(水) 15:38:20.45 ID:bJyAh8OV0.net
>>88
自前でセパレータを仕込むのなら
もう自分で配列造るのと何も変わらないさ

90 :名無しさん@お腹いっぱい。:2015/11/18(水) 16:34:39.80 ID:95T98vMj0.net
>>87
なるほど
手探りで一本で書いて後から必要な部分だけ別ファイル用意してcall・・・みたいな事してぐちゃぐちゃになってしまったんですが最初かは処理毎に作っておいて判定してcallする形にすればあちこち修正しなくても済みそうですね
その方向で整理してみます ありがとうございました

91 :名無しさん@お腹いっぱい。:2015/11/18(水) 16:56:34.30 ID:nYaQHfF60.net
>>90
お前は次に、長時間動作させているとエラーでUWSCが落ちる、と書き込む

92 :名無しさん@お腹いっぱい。:2015/11/18(水) 17:20:08.96 ID:bJyAh8OV0.net
そして私はスタックオーバーフローしないようにCALLは出来るだけ最初に1回
CALL先のスクリプトは関数化して本処理ではその関数を呼ぶと安定するよとFAQなアドバイスしておくのだった

CALLをループ内に仕込むのは展開された動作を把握しきっていないと
資源の衝突や初期化周りで予期しない動作が発生するトラブルの原因のトップランカーさんです

93 :名無しさん@お腹いっぱい。:2015/11/18(水) 20:34:52.95 ID:ya19mM+o0.net
下記のように画像判定を使ってループを処理した際に

repeat
状態判定a →処理a
状態判定b →処理b
until chkimg(処理abが実行された後の画像)

ループ中にエラー(Flashがクラッシュするなど)が発生した際にどのように対処すればいいでしょうか。
現在苦肉の策としてFlashがクラッシュした際に出る画像を判定するプロシージャをThreadで走らせておいて
エラー画像を検出したらエラーフラグ(Publicなエラーフラグ変数)をTrueにして各repeat内でフラグが立っていたら
breakするように記述しているのですが、repeatすべてにこの処理を導入しているため大変見苦しいコードとなって
しまっているので何かいい方法はないかと・・・

94 :名無しさん@お腹いっぱい。:2015/11/18(水) 20:52:19.47 ID:bJyAh8OV0.net
エラー画像を発見したら終わらせるだけなら
寧ろメインループをそっちにして
別スレッドで他の処理すると楽だよ
終わらせたくなったらメインループを抜けるだけで全て終わるからね

処理毎の終了処理が必要なら今の方法しか無いかな

95 :名無しさん@お腹いっぱい。:2015/11/18(水) 20:57:06.76 ID:bJyAh8OV0.net
但し、デバッガがメインスレッド以外のスレッドのデバッグにマトモに対応していないから
完成した後にそうするか最初からprintデバッグする必要があるけれどね

96 :名無しさん@お腹いっぱい。:2015/11/18(水) 20:57:49.77 ID:JQ1Q8izi0.net
Flashのクラッシュみたいな大きなエラーはもう別プロセス(別UWSC)で監視しちゃえば。

97 :名無しさん@お腹いっぱい。:2015/11/18(水) 21:23:51.36 ID:ya19mM+o0.net
クラッシュを検出したらリロードを行ってまた処理を行うようにしているので
メインループを抜けてしまうのは出来ないです。

別プロセスでエラーを監視した場合、メインプロセスを再起動させて処理を再開するというような感じになるのでしょうかか?

98 :名無しさん@お腹いっぱい。:2015/11/18(水) 21:49:32.35 ID:bJyAh8OV0.net
終わらせないなら特に楽にならないから今まで通りで良いんじゃないかな

UWSCから他のスレッドを殺す事はやろうと思えば出来るけれど
予めスレッドの起動毎にプロセス番号をグローバルな配列に保存して
それらをゴニョゴニョって感じになるから
今のフラグでループ制御しているのと面倒臭さは大して変わらない

でも一旦終わらせて、それを検知する別スクリプトが再起動させるという考え方もあるんだけれどね
(ログに書き出すとか色々方法はある)

99 :名無しさん@お腹いっぱい。:2015/11/18(水) 23:05:59.51 ID:R9oruk2c0.net
>81です
初歩的な質問すぎて呆れてしまわれましたかね?ごめんなさい

100 :名無しさん@お腹いっぱい。:2015/11/18(水) 23:15:08.17 ID:xUeF/cfW0.net
失せろカス

101 :名無しさん@お腹いっぱい。:2015/11/19(木) 00:52:14.47 ID:d6Osv4Zy0.net
誰か教えてやれよ

102 :名無しさん@お腹いっぱい。:2015/11/19(木) 19:16:18.41 ID:5LbifL7P0.net
>>97-98
その辺の実践経験者から言わせてもらうと、
結局は人間が操作するならどういう流れで操作するか、その流れのコード化に尽きる。
処理の区切り区切りの尽くに、クラッシュその他の予期しない自体を検知する処理を行う関数を挟み込む。
何らかの無限ループがあればその内側に必ず挟みこむか、無限ループをやめて回数制限またはタイムアウトを設ける。
クラッシュを検知してリロードして処理を1からやり直すということは、
その1からの部分に何時でも戻れるよう、プログラムの十分な構造化が要求されることは言うまでもない。
関数化、関数化そして関数化だ。関数が出来過ぎてしまうので分類だ。凄まじい数の独自関数群になる。

>>81
使ったことのない対象なので無責任に答えるが、
記録できないだけなのであればキャプチャ画像から割り出した座標をDOWN-UPでゆっくりクリックするのを書いて、
それでも認識されないか否か試してみたら?認識されないのなら不可能だから諦めろってことだ。

103 :名無しさん@お腹いっぱい。:2015/11/19(木) 22:29:12.84 ID:ZWZs69JY0.net
>>81
高レベルではなく低レベル記録する

104 :名無しさん@お腹いっぱい。:2015/11/19(木) 22:43:42.91 ID:oG2sQJna0.net
仮想OS上のアプリをホスト側から操作しようなんてのは無理

105 :名無しさん@お腹いっぱい。:2015/11/20(金) 09:33:31.45 ID:Pd39Iv5K0.net
フラッシュは、ジョブズが嫌ってた。
firefoxとも相性が悪くてクラッシュしまくりだから大嫌い!

106 :名無しさん@お腹いっぱい。:2015/11/21(土) 10:27:37.94 ID:kt2iHckZ0.net
UWSCのスレッド内からIEの操作を行うと、
アプリケーションは、別のスレッドにマーシャリングされたインターフェースを呼び出しました
ってエラーが出るんですが、回避の方法はありますかね?

IEobj = CREATEOLEOBJ("InternetExplorer.Application")
thread test_thread(IEobj)
msgbox("")
// ここまでmain

procedure test_thread(IE)
PRINT "IE Navigate start"
IE.Navigate("http://www.google.co.jp")
PRINT "IE Navigate end"
wait(IE)
fend

procedure wait(IE)
REPEAT
SLEEP(0.1)
UNTIL !IE.busy AND IE.READYSTATE = 4
fend

107 :名無しさん@お腹いっぱい。:2015/11/21(土) 11:26:31.22 ID:B04dZN/C0.net
そのケースならメインで CREATEOLEOBJ する意味がないと思う

念のため thread test_thread(IEobj) で test_thread はメインとは別スレッドになるけれど
test_threadから wait を呼び出しでも wait は test_thread と同じスレッドだからね

同じ OLEOBJ を複数のスレッドで使いたい場合は
どちらかを GETACTIVEOLEOBJ にしたら良いと思う

108 :名無しさん@お腹いっぱい。:2015/11/21(土) 12:11:56.37 ID:kt2iHckZ0.net
>>107
サンクス
メイン側で生成したオブジェクトをスレッドに渡しても(グローバル変数でも駄目だった)、動かないって事で
すかね。

メインでタブを二つ作ってそれぞれのオブジェクトをスレッドに渡して処理させようとしてたんだけど、タブは
作ったうえでスレッド側でオブジェクトを生成するようにしたら期待する動作になったようです。

109 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:03:31.49 ID:+ESe50Z90.net
UWSCでループを用いないキー入力待ちって作れる?

110 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:25:25.61 ID:B04dZN/C0.net
SETHOTKEYを使えば出来るよ
でも厳密にはこれは待たないからね
イベントドリブンなスクリプトになるイメージ

111 :名無しさん@お腹いっぱい。:2015/11/21(土) 18:07:35.61 ID:+ESe50Z90.net
それってホットキーの入力を待つ時には結局ループ系必要にならない?

112 :名無しさん@お腹いっぱい。:2015/11/21(土) 18:24:22.67 ID:valwfeOZ0.net
ならない

113 :名無しさん@お腹いっぱい。:2015/11/21(土) 18:34:12.81 ID:+ESe50Z90.net
>>110,111
ありがとう
やってみるわ

114 :名無しさん@お腹いっぱい。:2015/11/21(土) 18:38:50.90 ID:B04dZN/C0.net
ホットキーで割り込む隙もなくメイン処理が終わるなら当然終わるよ
キー入力の待機ループが不要なだけさ

115 :名無しさん@お腹いっぱい。:2015/11/21(土) 21:26:37.91 ID:+ESe50Z90.net
>>114
sleep中でも無視して関数呼び出してくれるんだね
これでPCへの負荷が激減した
ありがとう

116 :名無しさん@お腹いっぱい。:2015/11/24(火) 17:32:21.47 ID:3BpSGfNj0.net
test

117 :名無しさん@お腹いっぱい。:2015/11/24(火) 22:48:31.92 ID:JF3Q3VkF0.net
UWSCのウィンドウを出しておいて
右クリックからランチメニューを辿って
スクリプトを実行しようとしたとき
メニューにある「タスクトレイに格納」で
左クリックしてるわけでもないのに
タスクトレイに格納されてしまうことがあるけど
これは仕様なの?

ゆっくりやれば問題ないけど
ササッとやりたいときに
タスクトレイに格納されてしまって萎える

Free版 ver5.2.0

118 :名無しさん@お腹いっぱい。:2015/11/24(火) 22:55:07.30 ID:qS8AAPnY0.net
マウスが古くなっていてチャタリングが発生している可能性はゼロなの?

119 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:07:09.04 ID:W5FAQXAx0.net
何言ってんだと思ってやってみたらなるほど

右クリックするとメニューが表示されるわけではなく、右ボタンを押下した時点(離す前)でメニューが表示される
そして丁度カーソルの位置にタスクトレイに格納がある。
そのため、メニューを開く時に右クリック(押して離す)をしてしまうと格納されてしまうことがある。

こういうことかな?
それなら右ボタン押してメニューを開いたら、押したままドラッグでランチメニュー→スクリプトの上で離すってやればいいんじゃね

120 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:30:20.08 ID:s/LW23zM0.net
HOTKEYじゃ駄目なの?

121 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:32:44.91 ID:JF3Q3VkF0.net
右クリックメニュー上で右クリックしても
決定したことになるのか

それは知らなかった

122 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:53:35.41 ID:qS8AAPnY0.net
だからチャタリングが発生するマウスだとコンテキストメニューが誤爆しやすくなってしまうのよね

123 :名無しさん@お腹いっぱい。:2015/11/25(水) 11:13:45.29 ID:rJNaTAeQ0.net
今Windows8.1を使用しているのですが
外付けHDDが短時間で休止状態になってしまって困っています
UWSCで定期的にアクセスして休止に入らないようなスクリプトは
どうやったらかけるのでしょうか

124 :名無しさん@お腹いっぱい。:2015/11/25(水) 12:42:30.98 ID:txG9N8jK0.net
がんばって調べれば書けるよ

つか、わざわざUWSCでやることでもないだろそれ

125 :名無しさん@お腹いっぱい。:2015/11/25(水) 15:20:51.71 ID:S/4vbjYn0.net
USBかATAコントローラーのドライバ設定かサスペンドの設定だろUWSC関係ねえ
OSがスリープ命令出したらたとえUWSCで自動書き込みさせても電源落ちるぞ

126 :名無しさん@お腹いっぱい。:2015/11/25(水) 15:51:54.62 ID:Iap/Z3Jk0.net
UWSCでやる意味は全くないけど、OSのスリープタイマーをリセットするコマンドがあったような

127 :名無しさん@お腹いっぱい。:2015/11/25(水) 17:12:36.18 ID:JO/DUQA90.net
A、B、C画像いずれかがなければDをクリックし
A、B、Cのいずれかの画像があればループを終了する
と言う感じで組みたい
WHILE (CHKIMG("A.bmp")=FALSE)
WEND
このままではAの画像がでるまでループ
ループ途中にA画像B画像C画像を検索し
なければDをクリック。
頭爆発しそう

128 :名無しさん@お腹いっぱい。:2015/11/25(水) 17:19:07.03 ID:rT4L+apC0.net
ここはお前の日記帳じゃない

129 :名無しさん@お腹いっぱい。:2015/11/25(水) 17:29:57.74 ID:y0cJp4zm0.net
ABCいずれかがなければDで
ABCいずれかあれば終了
どっちも同じ?
A がなければ D だけど
AがなくてもBとCがあるから終了?
でもBとCがあってもAがないからD?

130 :名無しさん@お腹いっぱい。:2015/11/25(水) 17:37:42.03 ID:txG9N8jK0.net
WHILE TRUE
IF Aあり BREAK
IF Bあり BREAK
IF Cあり BREAK
Dクリック
WEND
じゃいかんのか?

131 :名無しさん@お腹いっぱい。:2015/11/25(水) 19:31:02.42 ID:JO/DUQA90.net
>>129
>>130
初歩的な勘違いやった。
申し訳ない

132 :名無しさん@お腹いっぱい。:2015/11/27(金) 03:04:57.99 ID:uYW4zJhI0.net
初歩的な質問で失礼します
以下のマクロでchkimgを連続実行すると、検索対象のウィンドウの一部が点滅?してしまいます

repeat
 SLEEP(0.1)
until GETKEYSTATE(VK_LBUTTON)
PUBLIC id
id = GETID(GET_FROMPOINT_WIN)
MOUSEORG(id, MORG_DIRECT, MORG_BACK)
main()

procedure main()
 i=1
 repeat
  chkimg("test.bmp")
 until i=100
fend

chkimgの後にsleepを入れても点滅速度が遅くなるだけで、根本的な解決にはなりませんでした
また点滅箇所はソフト毎に異なるようです(chrome、メモ帳、エクスプローラなどで確認)

UWSCは最新版、OSはWin7 64bitです
デスクトップコンポジションを無効にする以外の解決法はないでしょうか?

133 :名無しさん@お腹いっぱい。:2015/11/27(金) 03:10:30.73 ID:6LeH5ZQ60.net
どうでもいい指摘だけど i が加算されないからそれ延々ループしまくるよね

CPUパワーの可能な限り延々チェックし続けて、そりゃウインドウも点滅するさね
リソース不足じゃない?

134 :名無しさん@お腹いっぱい。:2015/11/27(金) 03:24:45.08 ID:uYW4zJhI0.net
>>133
chkimgの後のi=i+1が抜けてましたね

ご指摘の通り非力なPCを使っているのですが、
タスクマネージャーで確認したところCPU使用率は50%を下回っているようでした

chkimgの後にsleep(1)を入れても点滅するのでパワーの問題じゃないと思ってたのですが…

135 :名無しさん@お腹いっぱい。:2015/11/27(金) 04:39:10.35 ID:gIPgqqH30.net
クリックしたときにその下のウィンドウのID取得してるのにわざわざMORG_BACKを指定してる
理由がよくわからないけど試しにMORG_FOREにしてみたらどうなるかな?

136 :名無しさん@お腹いっぱい。:2015/11/27(金) 11:40:45.00 ID:qwTQlhP30.net
peekcolor・chkimgは実行された瞬間にウィンドウ内にちらつきが走る。
実際にどうなってるのかは一瞬過ぎてわからないが、タイトルバーの明滅からして
ウィンドウがアクティブ→非アクティブ→アクティブというようになっている感じがする。

大量にchkimgすると結構チラチラとして不快に感じる。

137 :名無しさん@お腹いっぱい。:2015/11/27(金) 12:27:45.06 ID:AjRZAbKp0.net
MORG_BACKでやってるとなるよね
バックグラウンドでやる必要ないならFOREでやれば点滅しないはずだけど

138 :名無しさん@お腹いっぱい。:2015/11/27(金) 12:32:28.19 ID:wntLhTd20.net
MORG_BACKでなるなら相手に再描画をお願いするためっぽいね
仕方なかろう

139 :名無しさん@お腹いっぱい。:2015/11/27(金) 14:12:30.76 ID:FeZzskVz0.net
>>134
2コアなら1コアがフルに使ってても50%超えないから

140 :名無しさん@お腹いっぱい。:2015/11/27(金) 14:23:32.71 ID:qwTQlhP30.net
>>137,137
バックグラウンドで動作させてるわけではないんだが、IEだとちらつく。
他のアプリではあまり見ないのでIEだけが問題なのかもしれん。

あとposaccもちらつくな。
使ってる量的にはchkimgよりpeekcolorが、peekcolorよりposaccの方が多いから
原因はposaccかも。

141 :名無しさん@お腹いっぱい。:2015/11/27(金) 14:33:55.72 ID:AjRZAbKp0.net
え、MORG_BACKにする=バックグラウンドだろ
だったらMORG_FOREにしとけよ

142 :名無しさん@お腹いっぱい。:2015/11/27(金) 19:20:14.27 ID:qwTQlhP30.net
俺と>>132は別人だよ。

最初からバックグラウンドにはしていない。

143 :名無しさん@お腹いっぱい。:2015/11/27(金) 21:21:48.29 ID:AjRZAbKp0.net
おお、すまんな
IEだとFOREでもちらつくのか

144 :131:2015/11/27(金) 23:19:54.60 ID:uYW4zJhI0.net
みなさんありがとうございます
バックグラウンドで動かしたかったんですがMORG_BACKだと仕方ないみたいですね
諦めてちらつきは我慢することにします

145 :名無しさん@お腹いっぱい。:2015/11/28(土) 18:17:20.79 ID:FR9Rv/l10.net
VMwareのゲストOS上で主に、たまにホストOS上で動かすスクリプトがあるんですが
スクリプトからホストかゲストか否かを判定する方法ないですかね?

146 :名無しさん@お腹いっぱい。:2015/11/28(土) 20:22:07.03 ID:dldTCCO80.net
>>145
c:\ほにゃ.txt とか置いといてそん中に Guest or Host って書いておく
起動時にそれを読んで判断じゃダメ?

147 :名無しさん@お腹いっぱい。:2015/11/28(土) 20:39:20.97 ID:wN8TzbSm0.net
レジストリ読めばいいだけじゃん
UWSCじゃなくてバッチでもできることだしこのスレでは特に関係ない話題よね

148 :名無しさん@お腹いっぱい。:2015/11/28(土) 20:53:54.86 ID:FR9Rv/l10.net
>>146
それ単純でいいですね。146さんもありがとうございます。

149 :名無しさん@お腹いっぱい。:2015/11/28(土) 21:25:51.53 ID:qtPTFMZU0.net
>>146
もっと言えば、ほにゃがGuest or Hostで、そのファイルがあるかないかだけで、中まで見なくていいよね

150 :名無しさん@お腹いっぱい。:2015/11/28(土) 21:43:33.70 ID:oqtIKp380.net
GET_APPDATA_DIRでユーザーネームあたりを確認してもいいよね
同じじゃなければだけど

151 :名無しさん@お腹いっぱい。:2015/11/28(土) 23:05:00.83 ID:wN8TzbSm0.net
だからレジストリ見れば一発だろうが

DosCmd("wmic csproduct") の戻り値を参照しろ

VMware Virtual Platform ってのが入るから

152 :名無しさん@お腹いっぱい。:2015/11/28(土) 23:25:03.94 ID:FR9Rv/l10.net
別に無視してるわけではないですが、ファイル作って判別する方が
仮想か否かだけでなくどのPC/OSかという判別が容易なのでこっち採用です

153 :名無しさん@お腹いっぱい。:2015/11/29(日) 00:47:57.33 ID:JUXVZ/4C0.net
iniファイルで良いような…

154 :名無しさん@お腹いっぱい。:2015/11/29(日) 16:45:06.45 ID:D3s05B910.net
chromeでバックグラウンド動作させたいんですけど
mouseorgでmorg_direct指定してるのにbtnでクリックするとアクティブになってしまいます
何所がいけないんでしょうか?

id = GetId("google chrome")
id = GetCtlHnd(id, "chrome_RenderWidgetHostHWND")
MouseOrg(id, morg_direct, morg_back)

hoge=0
WHILE hoge<20
 hoge=hoge+1
 btn(left, click, 100, 100)
 sleep(0.2)
wend

155 :名無しさん@お腹いっぱい。:2015/11/29(日) 22:40:44.71 ID:PLkzB9890.net
callってどういう時に使えばいいんだろう

少しずつ部品となるプログラムを作って、それを大元のプログラムで呼び出すような作り方をしてるんだけど、
uwscファイルがどんどん増えていって、どんどんわかりにくくなる

・何度も、何行も書かなきゃならない処理を一行で書ける
・変更する場合も呼び出し先のファイルを変更するだけでいい

こういうのが利点なのかな?

156 :名無しさん@お腹いっぱい。:2015/11/29(日) 22:51:34.18 ID:Eprjqt/E0.net
>少しずつ部品となるプログラムを作って、それを大元のプログラムで呼び出すような作り方をしてるんだけど
>uwscファイルがどんどん増えていって、どんどんわかりにくくなる

1処理に1ファイル作ってんの?
関数にして1ファイルにまとめて、callで呼び出すのは最初に1回だけやるんだよ

157 :名無しさん@お腹いっぱい。:2015/11/29(日) 23:10:30.89 ID:PLkzB9890.net
やっぱり自作関数をつくるべきなのか
引数とか処理の流れとかがよくわからんままだったから敬遠してた

158 :名無しさん@お腹いっぱい。:2015/11/29(日) 23:16:48.50 ID:Eprjqt/E0.net
今だとまんまファイル=処理になってるんだろ?
それぞれ頭にprocedure 処理名、尻にfendつけて1ファイルにまとめるだけや
んでcallしてるところでcallやなしに処理名を書くだけのことや

159 :名無しさん@お腹いっぱい。:2015/11/29(日) 23:26:27.99 ID:PLkzB9890.net
それだけでいいのか
やたら引数とか書いてあるから後回しにしてた

160 :名無しさん@お腹いっぱい。:2015/11/30(月) 04:20:23.49 ID:FBOUUxt90.net
>>81
Androidエミュレータの事なら Win10Pro 64bit だとUWSCを管理者権限で起動したら反応する
逆に管理者権限で立ち上げないと書いてある通り反応しない

161 :名無しさん@お腹いっぱい。:2015/11/30(月) 04:40:32.11 ID:FBOUUxt90.net
>>155
例えばアプリ上でフリック動作を再現したい場合以下ようなコードになるけど100,100をフリックしたいときもあれば200,200をフリックしたい場合もあるから
フリック動作させる度にイチイチ以下のコードを書かないといけない

x=100
Y=100
BTN(Left,DOWN,x,y,125)
FOR i = 0 To 10
tx = x-i*50
ty = y
MMV(tx,ty,10)
NEXT
BTN(Left,UP,tx,ty,10)

162 :名無しさん@お腹いっぱい。:2015/11/30(月) 04:43:07.50 ID:FBOUUxt90.net
>>155
一方関数化して以下のコードを書いたファイルを事前にCALLしておけば
必要な時に必要な値を指定して FlickToLeft(200,200)と一行書いてやるだけで同じ処理が実現できる

PROCEDURE FlickToLeft(x,y)
DIM i =0
DIM tx = 0
DIM ty = 0

BTN(Left,DOWN,x,y,125)
FOR i = 0 To 10
tx = x-i*50
ty = y
MMV(tx,ty,10)
NEXT
BTN(Left,UP,tx,ty,10)
FEND

同じような処理を関数化しておくと可読性と保守性が上がるのが利点かな

163 :名無しさん@お腹いっぱい。:2015/12/01(火) 05:54:19.63 ID:CNS9MKt70.net
ふと思いついて6通りの乱数x2つでの特定の組み合わせが出る確率を求めたんですけど
UWSCの乱数(random(n))に偏りがある?CALCARRAYのCALC_AVRがおかしい?のか
想定していた数値になりませんでした・・・。精査して原因を教えていただけるととても助かります

ttp://pastebin.com/Y1RvsTBN

numcomが乱数を発生させた回数、avgnumは1を回数で割り、パーセンテージでの確率を収納してます
1/36、1/21、1/18が想定の答えなんだけど10%ちょいになっちゃうんです。
たぶん↑の求め方が悪いんだと思うんですけど、なんでなのかわかりません・・・
他に良い確率の求め方・確かめ方があればご教示お願いします

164 :名無しさん@お腹いっぱい。:2015/12/01(火) 08:00:28.88 ID:rjvF5ULZ0.net
明確に擬似乱数なのを精査する必要性がちょっとわからない
ガチな計算したかったら乱数生成もガチなのを使えば良いと思うな

165 :名無しさん@お腹いっぱい。:2015/12/01(火) 08:33:28.18 ID:YKDdYdY80.net
計算がおかしい。
「平均値の平均値」みたいなものを求めているから、平均ではなくなっている。
まず基本に戻ってこうに考えろ。

dim bairitu[] = 2,3,4,6,10,20
dim maisu[] = 50,80,100,150,200,500

numcon = 1
n=0
dim num[10000]

repeat
bai = bairitu[random(6)]
mai = maisu[random(6)]

ifb bai = 20 and mai = 500
num[n] = 1
else
num[n] = 0
endif

n = n + 1
until n = 10000

msgbox( "10000回の平均は"+CALCARRAY(num,CALC_AVR)*100+"%でした")

166 :名無しさん@お腹いっぱい。:2015/12/01(火) 12:47:54.59 ID:CNS9MKt70.net
おぉ素晴らしいです、シンプルでわかりやすく動作も軽い!
考え方やCALC_AVRの理解を誤っていたのがようやくわかりました。
ありがとうございます、精進いたします

167 :名無しさん@お腹いっぱい。:2015/12/01(火) 13:21:03.45 ID:+tH8B3qd0.net
>>161-162
遅くなったけどありがとう
勉強になった
おかげで引数とかも理解できるようになったよ

最近は関数の名付けに悩むようになった

168 :名無しさん@お腹いっぱい。:2015/12/01(火) 15:00:00.63 ID:zTQCTmEm0.net
プログラミングのエントリーにはもってこいだなUWSCは。

169 :名無しさん@お腹いっぱい。:2015/12/01(火) 15:56:09.32 ID:bENjVUYj0.net
基本書レベルの資料が揃ってなさすぎる
さすがに最初はCやったほうがいいと思うぞ
ポインタ云々はいらんけど

170 :名無しさん@お腹いっぱい。:2015/12/02(水) 00:17:57.94 ID:bCg1Fbqs0.net
バックグラウンドでの画面内の認識はしてくれるようになったのですが、ブックマークバーの部分から上の部分が認識してくれなくて悩んでいます。 
下の内容のようにMOUSEORGの中を途中からChrome_Render…からChrome_WidgetWin_1へ変えればブックマーク部分も認識してくれるかと思ったのですがだめでした。どなたかブックマークバーの部分も認識出来る用にするためにどのようにすればいいか教えて頂けないでしょうか?
http://i.imgur.com/ceddGuC.jpg


GID = GETCTLHND(GETID("Google    Chrome","Chrome_WidgetWin_1"),   "Chrome_RenderWidgetHostHWND")
MOUSEORG(GID,2,1)

ID = GETID("Google Chrome")

While true

If GetKeyState(Vk_Esc) Then Break

ifb CHKIMG("イベント.bmp",0)    // 画面上に画像があった場合以下へ
MOUSEORG(GETCTLHND(ID,"Chrome_WidgetWin_1"),2,1)
BTN(LEFT, CLICK, G_IMG_X+6+random(5), G_IMG_Y+6+random(5))
MOUSEORG(GID,2,1)
sleep(1.5)
endif

wend

171 :名無しさん@お腹いっぱい。:2015/12/02(水) 10:01:53.78 ID:O01c30+40.net
procedure ie_wait( ie )
repeat
sleep( 0.1 )
until ( ! ie.busy ) and ( ie.readystate = 4 )

sleep( 0.2 )
fend

IEでページの読み込みが終わっているように見えるのに処理が止まってしまうことがたまにあります。
手動で再読み込みすると動き出します。対処法を教えてください。フリー版です。

172 :名無しさん@お腹いっぱい。:2015/12/02(水) 11:52:47.22 ID:RVv1vxR+0.net
x秒でタイムアウト、みたいな処理足したら

173 :名無しさん@お腹いっぱい。:2015/12/02(水) 12:03:24.62 ID:ZQB1PLza0.net
相手の鯖が遅延ロードしていたり自分のPCのキャッシュにヒットした時とか
ie.busy と ie.readystate はあんまりアテにならない

タイムアウトや移動先のページで必要なエレメントが存在するか確認してループを抜けるのも有りかもね

174 :名無しさん@お腹いっぱい。:2015/12/02(水) 13:19:20.31 ID:gtGvaZd80.net
IEはDOM操作するのが確実

175 :名無しさん@お腹いっぱい。:2015/12/02(水) 16:15:25.22 ID:p1ZciKF40.net
配列がややこしいな
dim hairetu[2]
↑これは配列の容量、個数の宣言で

hairetu[0] = 10
hairetu[1] = 20
↑これが番号の場所に格納するということなんだろ?

[]の中に数字いれるという書き方が同じだから、
ここでずっと訳わからなくなってた
それで[][]とかいう書き方もあるとか

あと、ここに書いてある
http://canal22.org/kansu/procedure/

DIM PSARRAY[2]

PSARRAY[0] = "This is a cat."
PSARRAY[1] = "That was a desk."

DIMって値の宣言だろ
""でくくれば文字列でもいいのかよ

ややこし

176 :名無しさん@お腹いっぱい。:2015/12/02(水) 16:32:53.86 ID:dxnbalsf0.net
厳密にはDIM 配列[]って入れ物の場所が書いてあるアドレスを宣言してるだけ
もっとも a = 1 と A = "1" がまったく同じように扱われるUWSCではそんなこと気にするべくもない

自分は配列宣言するときは[0]で使うたびにリサイズしながら入れてるよ
Arry[ReSize(Arry, ReSize(Arry) + 1)] = "1つめ"
Arry[ReSize(Arry, ReSize(Arry) + 1)] = "2つめ"
Arry[ReSize(Arry, ReSize(Arry) + 1)] = "3つめ"

177 :名無しさん@お腹いっぱい。:2015/12/02(水) 16:58:13.30 ID:b4w8PdZC0.net
数値変数でも文字列入れれば文字列変数に自動で切り替わるってだけだよね

178 :名無しさん@お腹いっぱい。:2015/12/02(水) 17:05:43.75 ID:p1ZciKF40.net
その切り替わるというのは、連想配列と同じになるの?
連想配列が文字列入れることが出来る配列って認識があった

179 :名無しさん@お腹いっぱい。:2015/12/02(水) 17:11:34.70 ID:b4w8PdZC0.net
それはまったく認識が間違ってる。配列は番号付の変数ってだけだよ。
連想配列は添字に文字列が使える配列。

180 :名無しさん@お腹いっぱい。:2015/12/02(水) 17:49:37.27 ID:p1ZciKF40.net
ああ、[]の中に文字が使えるのが連想配列なのか
理解できた

181 :名無しさん@お腹いっぱい。:2015/12/03(木) 13:48:27.43 ID:YuHgaOly0.net
Windows10クリーンインストールしたらIEの操作でエラー出るようになったな
普段非表示だけど確認したいことがあるからIE.Visibleで表示した時とか一時停止して再開しようとした時とかたまに操作を受け付けなくなる
ページを再読込させる処理を入れればまた動き出すけど、数十秒後にUNTIL (! IE.Busy) AND (IE.readyState=4)でエラーが出てるかUWSC自体がフリーズするわ

182 :名無しさん@お腹いっぱい。:2015/12/03(木) 14:12:03.56 ID:lFKpQNYb0.net
>>170
HandleとUWSCのIDは別物
GETCTLHNDで取得できるのはHandleなのでそのままではMOUSEORGのIDに使用することはできない

解決策はHNDTOID関数を使う
GID = HNDTOID(GETCTLHND(....))
これで目的とするコントロールのIDが正しく取れるはずWhile文内のMOUSEORGもおなじ

GETIDで対象のコントロールのIDを取得した後
SAVEIMG(,ID,0,0,,,TRUE)を実行するとクリップボードに対象コントロールのSSが保存されるんで
慣れないうちはペイントに貼り付けるなりして一回一回確認しながらやるといいですよ

183 :名無しさん@お腹いっぱい。:2015/12/03(木) 14:27:46.45 ID:lFKpQNYb0.net
>>170
あ、もちろんGETIDだけじゃなくHNDTOIDで取得したIDからでもSAVEIMGでSS取得できます

184 :名無しさん@お腹いっぱい。:2015/12/03(木) 14:34:08.18 ID:KqIB++7Q0.net
>>182
> GETCTLHNDで取得できるのはHandleなのでそのままではMOUSEORGのIDに使用することはできない

同じようなレスをしようと思ったがヘルプ読み返して止めたのに…

>> MORG_DIRECT (2): 指定ウィンドウ(オブジェクト)へマウス、キー情報を直接送る(第1引数はウィンドウIDでもハンドル値でも可)

185 :名無しさん@お腹いっぱい。:2015/12/03(木) 15:57:58.29 ID:lFKpQNYb0.net
>>184
マジで?って思ってコード書いたらマジでした…orz

>>170
そんで反省してMOUSEORGのヘルプよく読み直したら
MORG_FOREの値は0と明記されてるけどMORG_BACKの値は明記されてなかったので
試しに print MORG_BACKで値確認したら 1ではなく2になってたので
MOUSEORG(ID,2,1)じゃなくてMOUSEORG(ID,2,2)にしたらバックグラウンドでも動作しました

やっぱ面倒でもヘルプ熟読するのと用意された定数はちゃんと使わないとだめね

186 :名無しさん@お腹いっぱい。:2015/12/03(木) 16:10:37.72 ID:lFKpQNYb0.net
http://www.dotup.org/uploda/www.dotup.org636372.zip.html
せっかく書いたんで一応チョロメのブクマのアプリって項目をバックグラウンドで押下させるサンプルも上げときます
UWSC5.2のPro版レジスト済みとさっき入れたばかりのチョロメで動作確認

187 :名無しさん@お腹いっぱい。:2015/12/03(木) 17:17:45.94 ID:0WPfFphN0.net
>>186 のやつフリーで使ってみたけど
真っ黒でバックグラウンドの認識が不可っぽいんだけど
フリーとプロじゃその辺やっぱ違うのかな?

元々の質問者とは別人です

188 :名無しさん@お腹いっぱい。:2015/12/03(木) 18:06:34.86 ID:lFKpQNYb0.net
>>187
最新の5.20フリー版で動きました OSはWin10Pro
とりあえず思いつくのは アプリ.bmp を自分で用意してみる うちのは最新版をインストールしただけで一切いじってないので比較画像と差異があるのかも
http://i.imgur.com/1vdOKb0.jpg (こんな感じ)
UWSCを管理者権限で起動してみる位?
あとバックグラウンドで画像認識できるのはあくまで他のWindowが上に重なってるときだけで最小化時は普通に失敗するようです

189 :名無しさん@お腹いっぱい。:2015/12/03(木) 21:32:54.38 ID:KqIB++7Q0.net
操作側のWebページがエラー出した時にスクリプト全体を再起動させたいんですが
チェックのスクリプトをインターバルでスケジュール起動させればいいとは
思いついたんですけど、UWSCの再生・停止ボタンを押すのって
GUIの無いUWSCスクリプトからだとどうやったらいいんでしょうか。

190 :名無しさん@お腹いっぱい。:2015/12/03(木) 21:59:07.61 ID:KqIB++7Q0.net
適当にやってたら押せたので質問は無しで

191 :名無しさん@お腹いっぱい。:2015/12/04(金) 00:46:03.86 ID:90ljDn+M0.net
>>185
ご指摘ありがとうこざいます。ご指摘通りにやりましたが、やはりブックマークの部分は認識してくれませんでした。また、MOUSEORG(GID,2,1)から、MOUSEORG(GID,2,2)に変更するとブックマークより下の部分も動かなくなってしまいました。 
savings("test.bmp",GID,0,0,500,500,0,0,0)
savings("test.bmp",GID,0,0,500,500,0,0,1)
で試しに画像をとってみましたが、両方ともきちんと写っていました。

192 :名無しさん@お腹いっぱい。:2015/12/04(金) 00:50:32.45 ID:90ljDn+M0.net
また、認識しないならURLで飛べばいいと思い
SCKEY(id,VK_F6)
SENDSTR(id,"ここにURL",1,True,True)
SCKEY(id,VK_RETURN)
と無理やりいれましたが、一応動くのですがURL入力する時にとても重くなります…

193 :名無しさん@お腹いっぱい。:2015/12/04(金) 01:04:13.19 ID:90ljDn+M0.net
また、あげて頂いたサンプルを起動したところ>>187の方と同じようにペイントに貼り付けた物が真っ暗な画面で、動いてくれませんでした。(アプリ.bmpは自分で置き換え、uwscは最新版でした)
 しかし、MORG_BACKの部分を1に変更したところ、ペイントに貼り付けた画像は真っ暗なままでしたが、動いてくれました。

194 :名無しさん@お腹いっぱい。:2015/12/04(金) 01:09:15.47 ID:90ljDn+M0.net
あ、すいません。MORG_BACKの部分を1に変えた上記のサンプルを参考に組み直したらちゃんと動いてくれるようになりました!ありがとうございましたm(__)m

195 :名無しさん@お腹いっぱい。:2015/12/04(金) 11:31:23.07 ID:/T7tx51V0.net
Bluestacksでゲームアプリのガチャ自動化マクロを作っています
ガチャを回すボタンを24bitBMPで保存して、動作テストをすると成功しました(ファイルA)
そのファイルAにループ関数を付け加えてファイルA’を作成し動作させると、画像認識ができなくなったので
再度ファイルAの動作テストを行いましたが完全にその画像では認識ができなくなりました

さっきから3回ぐらい画像を撮り直しては動作テストを行っているのですが、成功してもUWSを弄ると画像認識ができなくなってしまいます
成功したりしなかったり、というのはよく起こることなのでしょうか?

196 :名無しさん@お腹いっぱい。:2015/12/04(金) 14:34:44.57 ID:n18V7ZGY0.net
あるかないかと聞かれるとある

197 :名無しさん@お腹いっぱい。:2015/12/04(金) 14:59:07.40 ID:sFDKmSRE0.net
いじるとできなくなるっていうんだから原因ははっきりしてるよね。

198 :名無しさん@お腹いっぱい。:2015/12/04(金) 16:52:58.00 ID:ybxgbSDU0.net
画像が変わってるんだろ

199 :名無しさん@お腹いっぱい。:2015/12/04(金) 17:04:25.75 ID:hlWIkbdr0.net
jpgとpngで同じように見えて微妙に違うように
読み込みごとに微妙に画像変わってるってパターンわりとよくある話

200 :名無しさん@お腹いっぱい。:2015/12/04(金) 19:27:22.45 ID:2HUK37Ko0.net
レイヤーかぶせてあったりパーティクル飛んでたりね。

201 :名無しさん@お腹いっぱい。:2015/12/05(土) 03:45:42.40 ID:cQkZ7BqH0.net
Chromeで特定のURLに飛ぶようにしたのですが、入れるURLが長いせいか、打ち込んでから飛ぶまでにかなり動作が重くなってしまいます。
重くならずに特定のURLに飛ぶ方法はあるのでしょうか?


id = GETID("Google Chrome","Chrome_WidgetWin_1")

MOUSEORG(id,MORG_DIRECT,1)
SCKEY(id,VK_ALT,VK_D)
SENDSTR(id,"ここにURL",1,True,True)
SCKEY(id,VK_RETURN)

202 :名無しさん@お腹いっぱい。:2015/12/05(土) 10:48:54.93 ID:qGfYiu4T0.net
>>195
撮った画像に対して撮り直した画像で画像認証してみて
それでダメなら画像を変えてるので画像認証は難しい

203 :名無しさん@お腹いっぱい。:2015/12/06(日) 15:25:32.94 ID:lIZtAvI+0.net
>>201ですが自己解決しました

204 :名無しさん@お腹いっぱい。:2015/12/06(日) 16:23:21.01 ID:7fPRX80/0.net
SELECTボックスの文字の大きさって変えられないですかね?
高解像度化の著しい昨今、微妙に文字が小さくて読みにくい

205 :名無しさん@お腹いっぱい。:2015/12/06(日) 16:26:04.76 ID:7fPRX80/0.net
SELECTBOXの文字の大きさって変えられないですか?

206 :名無しさん@お腹いっぱい。:2015/12/06(日) 16:30:47.46 ID:7fPRX80/0.net
test

207 :名無しさん@お腹いっぱい。:2015/12/07(月) 20:37:41.32 ID:lkFOyJ4n0.net
>>205
OPTION DEFAULTFONTで変えられる
すべて一括で変わってしまうけど

Pro使いならCREATEFORMで全部自分で自由に指定できるけど

208 :名無しさん@お腹いっぱい。:2015/12/07(月) 22:36:43.24 ID:oGiSo+KF0.net
クリック位置を指定せずに(現在のカーソル位置にしたい)
実行までの待ち時間だけを指定するにはどうすればいいんでしょうか?
いくつか試しましたがいずれもダメでした

BTN(LEFT,CLICK,x,y,500) エラー
BTN(LEFT,CLICK,,,500) エラー
BTN(LEFT,CLICK,500) 500がカーソル位置として扱われてしまう

209 :名無しさん@お腹いっぱい。:2015/12/07(月) 23:03:29.60 ID:EYXsjzmpf
BTN(LEFT,CLICK,G_MOUSE_X,G_MOUSE_Y,500)

210 :名無しさん@お腹いっぱい。:2015/12/07(月) 23:05:51.63 ID:0rcqNGw90.net
sleep(0.5)
BTN(LEFT,CLICK)
は違うのかな?

211 :名無しさん@お腹いっぱい。:2015/12/07(月) 23:13:17.78 ID:cMraAyPW0.net
G_MOUSE_X使うとか

212 :名無しさん@お腹いっぱい。:2015/12/08(火) 00:52:00.67 ID:Bp2FB+GN0.net
キシュツでしたらすみません。
スケジュール設定で、スリープ状態から復帰してスクリプトの実行を考えています。
Windowsの電源管理の設定で「ロック解除する時にパスワードの入力」の設定をしているのですが、
「スクリプトは実行されるが、パスワード入力画面が表示が出たままで意図した画面が表示されず、CHKIMGで画像判別できない。」
状況になり困っています。
ロック解除時のパスワードを設定しない以外の回避策はありますでしょうか。
パスワードを設定しないと、俺の「家族に見られたら困る」フォルダーが火を噴きそうです...

213 :名無しさん@お腹いっぱい。:2015/12/08(火) 00:58:50.00 ID:t70A2e+R0.net
>>212
フォルダにパスワードかけとけ

214 :名無しさん@お腹いっぱい。:2015/12/08(火) 01:27:05.64 ID:w99sCTo10.net
>>212
USBメモリ買うなり、別PCを買うなり、物理的に別個にしなきゃ不安だわ。

VeraCryptとか使えばどう?

215 :名無しさん@お腹いっぱい。:2015/12/08(火) 09:19:58.59 ID:0rN+5VX00.net
>>212
つまりそのスケジュールが実行されるときだけパスワード入力を回避したいってこと?

それは無理だ

216 :名無しさん@お腹いっぱい。:2015/12/08(火) 11:56:57.30 ID:Q8/a49a30.net
フォルダにパス掛けとくとか、アカウント使いわけるとかせんと。

217 :210:2015/12/08(火) 14:02:44.60 ID:Bp2FB+GN0.net
レスくれた方、ありがとうございました。

その後調べたところ、電源オプションはpowercfgコマンドでコマンドラインで変更できることを知りました。
そこで、下記を目論んだのですが上手くいきませんでした。

・スクリプト(1)
doscmd("powercfg …")で、ロック解除時のパスワードを不要にした後、スリープする

・スクリプト(2)
本来実行したいスクリプトで、最後にロック解除時のパスワードを必要に変更する

スクリプト(1) -> (2)の順にスケジュール設定して実行する。

試したところ、、スクリプト(1)で電源オプション設定を変更しても、スクリプト(2)の実行時、やはりパスワード入力画面が出てきてしまいます。
※ここでパスワードを入力した後、手動でスリープ->スリープ解除の操作をすると、スクリプト(1)が設定を変更しているので、パスワード入力画面は出てきません。

スクリプト(1)の最後にリブートすれば対処はできそうですが、フォルダーにパスワードを掛ける方向で検討します。
ありがとうございました。

218 :名無しさん@お腹いっぱい。:2015/12/08(火) 14:33:43.03 ID:nFTuQmFE0.net
そこまでして自動化操作したいことって何?
まずはそこからだよね

VMWareで起動させておいてスタンバイ→本体スリープ復帰→VM復帰起動→VM内でスクリプト流す(本体はロックのまま)
これ以上にすっきり安全にやる方法ないと思うよ

219 :名無しさん@お腹いっぱい。:2015/12/08(火) 14:59:58.05 ID:OBYBo33X0.net
家族に見られる環境で家族に見られたくないのにパスを不要にしてスリープだとか
スクリプト実行中に家族に弄られて見られる可能性は無視とか何がしたいのか分からなすぎる

220 :名無しさん@お腹いっぱい。:2015/12/08(火) 15:05:40.97 ID:Q8/a49a30.net
そういえばロック画面の裏でスクリプトって動かんのかね?

221 :名無しさん@お腹いっぱい。:2015/12/08(火) 15:07:57.58 ID:HUcsHTi50.net
当人が納得しているならそれで良いじゃない

222 :名無しさん@お腹いっぱい。:2015/12/08(火) 15:10:36.50 ID:HUcsHTi50.net
>>220
キーボードやマウスに画面が繋がっていない前提のスクリプトなら動く筈
勿論、ロック画面自体にはアクセス出来ない

223 :名無しさん@お腹いっぱい。:2015/12/09(水) 13:54:39.11 ID:KgeowQok0.net
>>210-211
ありがとうございます。
sleepにしました。

座標を指定しないと待ち時間も指定できないというのも
いまいち納得出来ない仕様ですが・・・

224 :名無しさん@お腹いっぱい。:2015/12/09(水) 14:16:19.27 ID:yc0hiHKU0.net
そういう仕様なのか不具合なのか微妙なのは公式掲示板で聞いてみたらいいんじゃない?

225 :名無しさん@お腹いっぱい。:2015/12/09(水) 15:07:38.82 ID:IATR22hr0.net
組み込み関数だけじゃなくユーザー定義関数の全パラメータに規定値設定した場合でも
途中のパラ省略して後方のパラだけ指定するとSyntaxError出るから仕様っぽいね
G_MOUSE_変数使ってもWait後のクリック発生時じゃなくBTN呼び出し時の座標になっちゃうみたいだから
マウスカーソルに追随させて自動クリックさせたいなら>>210の処理をラップして呼び出すのが一番安全かな

226 :名無しさん@お腹いっぱい。:2015/12/09(水) 16:13:30.40 ID:08E8vcMN0.net
途中をデフォルト(省略)したい時はEMPTYと記述しろ

227 :名無しさん@お腹いっぱい。:2015/12/09(水) 18:25:17.33 ID:IATR22hr0.net
BTN(LEFT,CLICK,EMPTY,EMPTY,2000)
普通にエラー吐き出して終わりだった

228 :名無しさん@お腹いっぱい。:2015/12/09(水) 18:58:01.47 ID:OKWIL6420.net
SAVEIMGは途中のパラメータ省略しても動くのに変な感じだ
SAVEIMG("AAA.bmp", GETID("XXX"), , , , , , 0, 0)

229 :名無しさん@お腹いっぱい。:2015/12/11(金) 11:18:54.45 ID:7dd/e87e0.net
×ret = BETWEENSTR("ddddd",,,,FALSE)
○ret = BETWEENSTR("ddddd",,,-1,FALSE)

何個か調査してみた結果同じ関数内の省略可能引数でも途中空値を設定できる引数とできない引数があるっぽいね
なぜかは判らないけど

230 :名無しさん@お腹いっぱい。:2015/12/11(金) 13:17:37.95 ID:bmQj6ZbY0.net
BETWEENSTR()はその-1を指定してる引数はデフォ値がHelpに書いてないから省略出来ないかもって思えるかな
ただBTN()は、「省略時は〜」って書いてあるのに省略出来ないから「あれ?」って思う

231 :名無しさん@お腹いっぱい。:2015/12/12(土) 01:28:24.49 ID:WJj0stN+0.net
UWSCのスケジュール機能で一時間毎にスクリプトを実行しています。
普段は10分位で終了する内容なのですが、予期しない動作をした時に1時間経っても終了せず、次のスクリプトと実行が被ってしまい、抜け出せなくなります。
一時間後の実行がうまく行けば、前回のスクリプトは中断しても構いません。
UWSCやWindowsの機能で、実行が重ならないように実現できないでしょうか?

232 :名無しさん@お腹いっぱい。:2015/12/12(土) 03:03:48.97 ID:RKFSqFC20.net
>>231
データの整合性とか気にならない処理内容なら
スクリプト内で経過時間を監視するスレッドを走らせたらどうでしょうか

233 :名無しさん@お腹いっぱい。:2015/12/12(土) 12:31:57.21 ID:WJj0stN+0.net
>>232
以下の関数を、予期しない動作が発生した時に走る関数中に実行すると実現できそうです。

Procedure hogehoge
gettime()
Ifb G_TIME_NN > 50
exitexit
Endif
Fend

難しく考えすぎていたようです。ありがとうございました。

234 :名無しさん@お腹いっぱい。:2015/12/12(土) 18:14:26.36 ID:ACvSeZV80.net
似たような事かもしれないけど、予期しない動作が発生した時に自分自身を
再起動させたいのだけど。

EXEC等使って別プロセスで予期しない動作判定+再起動専用のスクリプト走らせるしかないかな?
UIの無いスクリプトは暴走が怖い…

235 :名無しさん@お腹いっぱい。:2015/12/12(土) 18:30:53.62 ID:RKFSqFC20.net
>>234
本体のスクリプトはどんな処理してるの?

236 :名無しさん@お腹いっぱい。:2015/12/13(日) 23:14:50.95 ID:aAFsszQK0.net
予期しないって…範囲が巨大すぎて。。。
予期しないことが判定できるなら、予期できそうだし…

237 :名無しさん@お腹いっぱい。:2015/12/13(日) 23:40:38.95 ID:9KF/JySF0.net
予期しない事象でエラー発生するならTRY EXCEPT文で拾ってスクリプト最初から回す
エラーじゃなくスクリプト自体が事象判定できるならTRY FINALY文でケースごとにコード書く
単体で完結させたいならこのくらいかなぁ

238 :名無しさん@お腹いっぱい。:2015/12/14(月) 00:37:35.63 ID:OWYR4MFV0.net
操作対象アプリが応答なしではないけど応答無くなる時があって、これが予期しない動作。

画面の推移を監視して、長時間動かなくなったらスクリプト毎再起動させようと。

239 :名無しさん@お腹いっぱい。:2015/12/14(月) 00:49:16.17 ID:fnMg27o30.net
呼び出し用スクリプトからメイン処理スクリプトをcallで呼び出して
そのcall内でexitすればcallから抜け出して呼び出し用スクリプトに移動するから
元に戻る・・・ってことはだめ?

240 :名無しさん@お腹いっぱい。:2015/12/14(月) 01:10:21.65 ID:yI4ZqmAH0.net
対象タスクをKillして一から処理を立て直したいなら別途監視スレッド立ち上げておいて必要な時に処理させるなり好みでいいと思うけど
例えばボタン押下した後想定される時間内に想定される画面に移行しないケースが発生してスクリプトが失敗するっていうならコードの書き方の問題だと思う
UWSCでのコーディングは組み込み系に近いからZIPCライクな状態遷移設計をコードに落とす書き方が向いてると思うんだけどこればっかりはさくっと説明できるもんでもないからなぁ

241 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 10:24:44.14 ID:OWYR4MFV0.net
本質的にはエラー対策が未熟なままスクリプトを書き続けて
後から対策しようとしたってのが問題なんだけど、メインスクリプトが非常に長くて
関数から関数を呼び出し更にまた別の関数を…って感じなので全ての関数に不具合対策すると
収拾がつかない。exitでは一つの関数を抜けるだけに終わってしまうという状況。
一発でメインルーチンの最初に戻れればいいんだけど。

一々細々対策しなくても、最初からやり直せば何とかなるのでそれで対処しようかな…と

242 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 11:42:30.40 ID:kZpbsuTx0.net
//<input id="retainLogin_flg" class="fmtxt" type="checkbox" checked="" value="1" name="retainLogin_flg">
IESETDATA( IE, 1,"retainLogin_flg","1")

これでログインできません。どこが間違ってますか?

243 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 15:23:59.00 ID:OdJxQFG70.net
MOUSEORG関数を使ってバックグラウンドのChromeウインドウでBTN,KBD,CHKIMGを使用したいのですが、CHKIMG以外動作しません…
別にテスト用のコードを組んだところ、BTN,KBD,MMVの3つはChromeのウインドウIDを使用した時のみ一切動作しませんでした。
Chromeをこのような関数で操作するにはどうしたらいいでしょうか?
また、CHKIMGで画像読み込みをしただけでChromeが前面に出てきてしまうのですが、これを防ぐにはどのようにすればいいのでしょうか?
どなたかよろしくお願いします。

244 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 16:27:54.18 ID:qKre7MPE0.net
タブのIDが必要

でも根本的にChromeは自分が隠れていると意図的に画面更新をサボるから裏動作に向かないと思う
素直にIE使ったほうが楽よ

もしくは仮想PCでChromeを最前面で動作させてるいうFAQ的対応
仮想化対策されているコンテンツなら素直にリアル別端末用意しなはれ

245 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 16:58:39.67 ID:OWYR4MFV0.net
その仮想PCでさっきドツボに嵌まった…

件のスクリプトはVMwareのゲストOS上で走らせてるんだけど、テストの為に
ホストで動かしてたらバグを作りこんでてアプリのウィンドウが最少化してしまって
その背面にあったVMwareのウィンドウをクリック!

そこからさあ大変。ホストのスクリプトを停止させようとしてもVMwareがアクティブの内は
キー入力を全部取られてホストに入力が反映しない。
VMwareを非アクティブにしてホストにキー入力しようにも、
操作中にスクリプトが再度VMwareのウィンドウをクリックして最初に戻る…

ヤバいこれPC再起動するしかないんじゃないのかとか焦ってたら
正に予期しない動作時に働くスクリプト()のせいで無事復帰できたw

246 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 18:06:40.64 ID:yI4ZqmAH0.net
>>241
実行中のマクロを深い階層から強制的に終わらせたいならEXITEXIT
今のマクロをあんまり変えずにマクロの終了状態に応じて分岐させたいなら別スレッドから今のマクロ呼び出してEXITEXITで自分で定義した終了コード渡して呼び出し元に判断させるのが良いと思う

簡単なサンプル
http://www1.axfc.net/u/3582792.zip
EXECのuwsc.exeはパスを通すかフルパスに書き換える
main_hogeを実行 sub_hoge内のproc_Call9()プロシージャ内でコメントアウトされてる行を実行するとsub_hogeの実行結果に応じてメッセージが表示されるはず

247 :名無しさん@お腹いっぱい。:2015/12/14(月) 20:19:16.20 ID:OWYR4MFV0.net
>>246
色々考えてくれるのはありがたいけど
スクリプト内でクリック箇所だけでも400位あって、ぶっちゃけ全く書き換えたくないのが本音。
いじる位なら一からやったほうがまし。

今のスクリプトは全く変えず、外部からどうにかしたいわけ。

248 :名無しさん@お腹いっぱい。:2015/12/14(月) 20:22:34.83 ID:bKMDkJ+30.net
検索用に保存してある画像の
縦や横のピクセル数を返す命令ってありますか?

249 :名無しさん@お腹いっぱい。:2015/12/14(月) 20:34:09.73 ID:yI4ZqmAH0.net
>>247
それはもうどうしようもないね〜
BTNやCHKIMGの処理回りをラップしておけばそのFUNCTION内でどうにかできたかもしれないけど
望みは薄いのか

>>248
標準関数だとなかったと思うけどFSO使ってサイズ取得する方法ならここに載ってる
http://d.hatena.ne.jp/junjun777/20110529/uwsc_bitmap

250 :名無しさん@お腹いっぱい。:2015/12/14(月) 20:42:21.68 ID:VO9EyQaS0.net
セミコロン(マルチステートメント)使ってる人いる?
これって行数が減るだけで特に意味ないよね?

251 :名無しさん@お腹いっぱい。:2015/12/15(火) 00:49:14.39 ID:i5n9Tzyq0.net
CHKIMGXのサンプルで保存画像のサイズ出して照合してなかったっけ
あれってXの機能なのか

252 :名無しさん@お腹いっぱい。:2015/12/15(火) 13:25:13.68 ID:wsrLnUiO0.net
画像ファイルのサイズは VBScript の LoadPicture 関数使えばいけるよ。

253 :名無しさん@お腹いっぱい。:2015/12/16(水) 07:37:39.05 ID:3D/556GD0.net
imagesizeはchkimgx.dllの機能だね
現状とりあえず入れとけってレベルだから作者さんにはほんと感謝

254 :名無しさん@お腹いっぱい。:2015/12/16(水) 12:33:17.99 ID:RO0Uckyn0.net
アンドロイドの画面をPC表示して操作するVysor (Beta)ってソフトでウインド指定して座標クリックしたのにうまくいかない
ウインド指定外せば思い通りの動作するんだけどエスパー様アドバイスください

255 :名無しさん@お腹いっぱい。:2015/12/16(水) 13:29:08.00 ID:iS4W1/hI0.net
>>254
ウィンドウIDが違うんだろ

256 :名無しさん@お腹いっぱい。:2015/12/16(水) 14:13:22.42 ID:3D/556GD0.net
>>254
UWSCを管理者で起動してない
MORG_DIRECT指定をMORG_CLIENTにする
コードミスってなけりゃ恐らくこのあたり

257 :名無しさん@お腹いっぱい。:2015/12/16(水) 15:04:31.64 ID:brGLyGvp0.net
プルダウンから選ぶコードはどうやって書けばいいですか
ソースはこんな感じです。

<td id="note1">
<select name="cv.note[0]">
<option value="3">3</option>

258 :名無しさん@お腹いっぱい。:2015/12/16(水) 15:05:27.88 ID:RO0Uckyn0.net
クリックしたい座標をウインドウ指定して座標取得したのでウインドウIDは多分大丈夫です
ウインドウ指定して基準指定:ってのを指定なしとMORG_DIRECTだと左上の0,0の座標をクリックしてたのが
MORG_CLIENで思い通りの動作になったんですがマウスカーソル奪われるのはあきらめるしかないですか?

259 :名無しさん@お腹いっぱい。:2015/12/16(水) 15:19:04.76 ID:MSwZZbqh0.net
ウインドw風w

260 :名無しさん@お腹いっぱい。:2015/12/19(土) 09:36:25.37 ID:dKs0rSCT0.net
画像認識で範囲を限定して高速化したいのですが、範囲指定ではなくて画像認識するためのファイルの中心の位置を指定して使うことはできませんかね?

261 :名無しさん@お腹いっぱい。:2015/12/19(土) 10:13:50.36 ID:1sg6SGUx0.net
ラッパー関数を用意すればおk

262 :名無しさん@お腹いっぱい。:2015/12/19(土) 10:15:12.99 ID:F+6XYxyV0.net
>>260
>ファイルの中心の位置を指定して
例えば、200x200の画像ファイルの中心付近50x50をchkimg()に使いたいってこと?

chkimg()じゃ出来ないけど、ちょっと考えただけでも
・予め必要な画像を抜き出しておく
・指定座標から指定サイズの画像を抜き出すアプリを探すか作ってchkimg()の対象にする
などなどやりかたは色々ある
まずはこういうのじゃダメな理由を書いたほうが良いよ

263 :名無しさん@お腹いっぱい。:2015/12/20(日) 11:14:47.91 ID:ZpLNVxzc0.net
俺は言いたいことは分かったけど、処理に余計時間がかかると思うの

264 :名無しさん@お腹いっぱい。:2015/12/20(日) 11:47:27.75 ID:KZe/XdiC0.net
出現する場所がわかっている場合には矩形範囲で正確な場所を指定すれば
高速化出来るけど、それを左上角指定でもなく画像の中心座標をもって行いたいってことかな

265 :名無しさん@お腹いっぱい。:2015/12/21(月) 01:26:17.27 ID:2PK9cnqq0.net
getkeystate(vk_lbutton)を使ってて、一度でもtrueにすると以降ずっとtrueのままなんだけど、以前からこんな動作だった?
座標が1箇所しかとれなくて困っている…

266 :名無しさん@お腹いっぱい。:2015/12/21(月) 01:58:05.59 ID:2PK9cnqq0.net
>>265の理由で以前作成して使用していたマクロも使えなくなっている
おかしい…

267 :名無しさん@お腹いっぱい。:2015/12/21(月) 05:15:20.75 ID:XffwbDlp0.net
>>265
若干長押しで引っかかってるとか?
repeat
sleep(0.1)
until !GetKeyState(VK_**)

268 :名無しさん@お腹いっぱい。:2015/12/21(月) 09:39:13.45 ID:CCKQhsqf0.net
挙動が変わったと思うなら
検証用のコードを書いて公開してみたら良いと思う

皆の結果が同じなら公式のバグでしょ

269 :名無しさん@お腹いっぱい。:2015/12/21(月) 11:44:04.17 ID:dhDYDp8p0.net
>>265
dim r
sethotkey(VK_0,MOD_ALT,"exi")

repeat
a()
until false

procedure a()
r = GETKEYSTATE(VK_LBUTTON)
fukidasi(r)
fend

procedure exi()
exitexit
fend

こっちだと普通に動いてるように見えるな
5.20

270 :名無しさん@お腹いっぱい。:2015/12/21(月) 13:13:06.71 ID:k1OansqD0.net
問題のソースコードを提示できないというのは裏を返せば
問題を切り分けられていない証拠でもあるんだよね

素人ほど最初に自分ではなく他人を疑う

271 :名無しさん@お腹いっぱい。:2015/12/21(月) 14:40:18.86 ID:EiQ88uQn0.net
CHKIMGXの着目する色の指定ってどういう引数いれればいいのかな?
RGB値?もしそうだとするとどう記述するんだろう。FF0000(赤)みたいな感じでいいのかな?

272 :名無しさん@お腹いっぱい。:2015/12/21(月) 14:45:48.24 ID:EiQ88uQn0.net
あ、サンプルよく読んだらかいてありました。すいませんでした。

273 :名無しさん@お腹いっぱい。:2015/12/21(月) 15:24:38.26 ID:MrgyCbDY0.net
ログファイルの出力先ってスクリプト側から変更できないもんですかね。
OPTION LOGPATH=hogehoge.txt
みたいな感じに指定してあるんですが、二重起動すると2つの
スクリプトから書き込まれたログがグチャグチャになってしまう。

一々ファイルオープンして書き込むほどのログではないんだけど
ちょっとばかり不便な感じ。

274 :名無しさん@お腹いっぱい。:2015/12/21(月) 15:39:43.34 ID:PCRRkr5n0.net
OPTION指定の性質上無理
スクリプト別にするしかない

275 :名無しさん@お腹いっぱい。:2015/12/21(月) 20:27:33.49 ID:3hymvKIb0.net
俺ならロギング処理のラッパーを作って、それぞれの起動ごとに固有文字列割り振れるようにするかな
正規表現使えば置換処理でまとめて直せるし簡単でしょ

それが嫌ならソースコードを改変するソースコードを書いちゃえばいいしね

276 :名無しさん@お腹いっぱい。:2015/12/21(月) 20:50:46.67 ID:FTxNfRK40.net
本体をcallするoptionだけのファイルを起動したらいいんじゃないかな

277 :263:2015/12/21(月) 21:05:50.36 ID:2PK9cnqq0.net
セーフモードで動作させてみたところ思う通りの動きになりました。
どうやら何らかの常駐ソフトが悪さをしているようです。
原因のソフトが特定できましたらまた報告させていただきます。
スレ汚し失礼しました。

278 :名無しさん@お腹いっぱい。:2015/12/22(火) 00:09:15.99 ID:gv1300fTg
>>273
ログパス指定にTIME値いれたら?

279 :名無しさん@お腹いっぱい。:2015/12/22(火) 00:23:23.71 ID:DKkq04ll0.net
スレちゃん「私……汚されちゃったよぉ」

280 :名無しさん@お腹いっぱい。:2015/12/22(火) 05:34:12.40 ID:8u/KWTZa3
>>278
試してみるとわかるけどそれは出来ない
実用的な案は>>276あたりかなぁ

281 :名無しさん@お腹いっぱい。:2015/12/22(火) 12:57:13.12 ID:RoUnScmr0.net
スレちゃんは汚れてないよ俺が一生守るから

282 :名無しさん@お腹いっぱい。:2015/12/25(金) 15:17:07.98 ID:7FQmwVc80.net
すみません、
マクロ再生開始してから2時間経過したら○分ほど停止してまた活動再開を繰り返す処理ってどうすればいいでしょうか?
停止する○分は10〜20分くらいが毎回ランダムで変わるとなおいいのですが・・・
よろしくお願いします。

283 :名無しさん@お腹いっぱい。:2015/12/25(金) 15:21:56.32 ID:4xQkvZLh0.net
すみません自分で調べてくださいよろしくお願いします

284 :名無しさん@お腹いっぱい。:2015/12/25(金) 15:36:14.25 ID:lZFGO43t0.net
2時間経過をチェックする方法
ランダムで10〜20分停止する方法

たった2つググるだけだ頑張れ

285 :名無しさん@お腹いっぱい。:2015/12/27(日) 16:12:57.95 ID:AlS/S0az0.net
某青い空のモバゲーのポーカー関数ちょっと作ってみたいんだけど

配布終わってるし折角だから1から勉強してみようと思う
とりあえず、ウインドウの座標を固定して画像取得する関数って
どういうの組めばいいのかな

少なくとも脳死ポーカーより頭によさそう

286 :名無しさん@お腹いっぱい。:2015/12/27(日) 16:36:33.75 ID:/OzrBre50.net
とりあえずぐぐれ。
出来たやつを実行しろ。
思った動作と違ったら来い。

287 :名無しさん@お腹いっぱい。:2015/12/27(日) 16:44:59.25 ID:AlS/S0az0.net
なんか探したら自動取得ツール自体はあったわ
これで画像取得自体はできるけどそのままだと枚数が1000こえるな

なんかこう1枚ずつ認識して判断できんかな・・・・・

288 :名無しさん@お腹いっぱい。:2015/12/27(日) 16:55:25.82 ID:792AGejY0.net
>>287
それを考え、自分でスフリプトを組むことを勉強っていうんじゃないの?

289 :名無しさん@お腹いっぱい。:2015/12/27(日) 17:05:31.09 ID:AlS/S0az0.net
>>288
いまやってる
座標の取得はできそうだけど画像名のストック?がちょっとよくわからん
判断関数のあとで真なら文字を記憶みたいな感じでできるんかな
そもそも変数にアルファベットぶち込めなかった気がする・・・・

290 :名無しさん@お腹いっぱい。:2015/12/27(日) 17:07:08.01 ID:fibytPLm0.net
ここはお前の日記帳じゃない

291 :名無しさん@お腹いっぱい。:2015/12/27(日) 17:58:35.45 ID:uFtbG2Uf0.net
IEのビジー待ちについて質問です。
最初と最後のSleep(0.2)が必要な理由を教えてください。

procedure ie_wait( ie )
Sleep(0.2)
Const TIME_OUT = 60
tm = Gettime()
repeat
Sleep(0.2)

ifb Gettime() - tm > TIME_OUT
kbd(VK_F5)// F5
Exit
endif

until (! ie.busy) and (ie.readyState=4)
Sleep(0.2)
Fend

292 :名無しさん@お腹いっぱい。:2015/12/28(月) 00:00:20.30 ID:qZu6Od9X0.net
>>289
1つカードの画像を判断するだけで1000の命令が必要でも
やるのはPCだからな
1回作ってしまえば勝手に動くんだから、初回の手間を惜しむな

>>291
作った奴に聞け

なんとなく動作が不安定な時に、適当にスリープ入れたらスムーズに動くことがあるから
その名残だろうとは思うが

293 :名無しさん@お腹いっぱい。:2015/12/28(月) 02:25:18.81 ID:iq4jhptY0.net
画像認証の質問です

Ifb CHKIMG("w.bmp") = TRUE
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
MSGBOX("見つかりました")
ELSE
MSGBOX("見つかりません")
Endif

以上の関数で適当な画像wをコピーしてデスクトップに表示したら認識しませんでした
フォトビューワで開いたら認識しました
実際にはいろんな画像が混ざってるところで使いたいので今のままだと役に立ちません
なにが起きてるんでしょうか

294 :名無しさん@お腹いっぱい。:2015/12/28(月) 02:33:17.82 ID:AG3orU5C0.net
デスクトップでは認識しない、そんだけ

295 :名無しさん@お腹いっぱい。:2015/12/28(月) 02:34:45.96 ID:qZu6Od9X0.net
>>293
デスクトップに表示する時に伸縮していたら認識しない
また、上にアイコンなどが乗っていて、画像の透過部分以外が隠れたら認識しない

実際の画像の混ざり方を考えて、認識させたい画像のサイズや範囲などを決める必要がある

296 :名無しさん@お腹いっぱい。:2015/12/28(月) 02:36:04.63 ID:qZu6Od9X0.net
>>294を見てなくて適当に答えた

297 :名無しさん@お腹いっぱい。:2015/12/28(月) 02:42:37.59 ID:iq4jhptY0.net
お二方ありがとうございます
btn部分をなくして最終目標で確認したら認識できました
やっぱりデスクトップの背景とかで透過しちゃってたみたいです

298 :名無しさん@お腹いっぱい。:2015/12/28(月) 15:40:18.87 ID:iq4jhptY0.net
画像認識、うまくいかないな
プログラム自体は正常っぽいけど対象の画像がときどきピクセルずれてるんかな
キャプチャしなおすとその時だけうまくいくんだよな

画像たくさん作ってしらみつぶしするしかないか・・・・・・・ハァ

299 :名無しさん@お腹いっぱい。:2015/12/28(月) 15:54:16.22 ID:2b9Fr6+00.net
>>298
面倒だが、透過色設定したり透過色で画像塗りつぶしたりして必要な要素だけ取り出す方法もある

300 :名無しさん@お腹いっぱい。:2015/12/28(月) 15:57:45.90 ID:wOaVL79d0.net
ボタン系はボタン以外の画像がよかったりするし
いろいろやりようはあるとおもう

301 :名無しさん@お腹いっぱい。:2015/12/28(月) 20:45:56.05 ID:ww5rWK300.net
>>298
peekcolorを使ってみるのも一つの手だと思うよ

302 :名無しさん@お腹いっぱい。:2015/12/28(月) 21:24:10.61 ID:I1QV70970.net
yrd

303 :名無しさん@お腹いっぱい。:2015/12/31(木) 18:03:20.24 ID:ed8Joufj0.net
>>299
それやりたいんですがwindowsの付属のペイントでできますか?

304 :名無しさん@お腹いっぱい。:2015/12/31(木) 20:25:19.28 ID:kkB7l74A0.net
できますよ

305 :名無しさん@お腹いっぱい。:2015/12/31(木) 21:30:25.00 ID:actWcm4n0.net
UWSCの透明指定は四隅の内、何処の色を透明扱いするかだから
αチャンネル使えるソフトを使用しなくても良い

306 :295 【大凶】 :2016/01/01(金) 07:10:48.26 ID:DZ0F9EIl0.net
>>304-305
ありがとう
あけおめ

307 :名無しさん@お腹いっぱい。:2016/01/01(金) 07:11:50.40 ID:DZ0F9EIl0.net
↑間違えましたた私は299です

308 :名無しさん@お腹いっぱい。:2016/01/01(金) 19:48:02.85 ID:dAo8yM1a0.net
>>298
ゲイブの嫌がらせ

309 :名無しさん@お腹いっぱい。:2016/01/02(土) 21:54:24.77 ID:OOAR2+6Q0.net
>>303
ペイントでもできるけどgimp使え
マジックマジ便利

あけおめ

310 :名無しさん@お腹いっぱい。:2016/01/05(火) 18:09:09.81 ID:7af5YO540.net
5.2.0からなんか重くなってね?
同じスクリプトなのに起動してから動き始めるまで異常に時間かかるようになった
CLKITEMが怪しいかなと思ってる

311 :名無しさん@お腹いっぱい。:2016/01/05(火) 18:44:16.27 ID:7af5YO540.net
やっぱりCLKITEMだったわ
いままで快適に動いてたのにショック

312 :名無しさん@お腹いっぱい。:2016/01/06(水) 17:09:53.73 ID:a/kSD6F/0.net
uwscでpptマクロを実行

f_name = "C:\テスト.pptm"
ppt = CREATEOLEOBJ("POWERPOINT.Application")
ppt.PRESENTATION.open(f_name)
ppt.visible = TRUE
sleep(5)
ppt.run("test")

(テスト.pptmの標準モジュールのModule1にtestがある)

これを実行すると
ppt.run("test")で COM error が出ます

解決策を教えてください。

313 :名無しさん@お腹いっぱい。:2016/01/08(金) 12:43:18.74 ID:jLBAQqUa0.net
>>312
やってないからわからんけどその構文だとpptはアプリケーションオブジェクトであってファイル個別のオブジェクトじゃないよね
<ファイル名>!Module1.testみたいに対象ファイルからプロシージャをはっきし明示しないとどのモジュール参照していいかわかんないんじゃね
あとプロシーシャのスコープpublicにしてるかどうか?

314 :名無しさん@お腹いっぱい。:2016/01/09(土) 23:29:05.79 ID:OPYCmqUk0.net
>>313
ありがとうございます!!出来ました!!!

315 :名無しさん@お腹いっぱい。:2016/01/10(日) 14:48:48.28 ID:+h7zfP7X0.net
windows10に仮想デスクトップっていうのがあるんってきいたんですけど
uwscをこれで裏で使用できるんですか?

316 :名無しさん@お腹いっぱい。:2016/01/11(月) 01:03:13.57 ID:2riljtmT0.net
>>315
実際にやってみればいいんじゃない?

317 :名無しさん@お腹いっぱい。:2016/01/11(月) 08:24:19.75 ID:yYs4qC8O0.net
仮想デスクトップ≠仮想環境

318 :名無しさん@お腹いっぱい。:2016/01/11(月) 12:51:41.92 ID:FFuDFDqi0.net
仮想デスクトップ上の座標がどうなっているのか興味があるところだが
Win10環境が無い

319 :名無しさん@お腹いっぱい。:2016/01/11(月) 12:55:49.55 ID:/FI12Aqd0.net
何時だか8.1使っていたらポップアップで今なら無料とwin10を
ゴリ押してきたので入れてしまった

320 :名無しさん@お腹いっぱい。:2016/01/11(月) 15:34:36.34 ID:js3KT4j30.net
10の仮想デスクトップで既存のコード動かしてみたけどchkimgは動いてるっぽい
ただBTNでマウス操作しようとすると今の画面内をちょろちょろしだすから座標的には共通っぽい
DIRECT指定使うかKBD,CLKITEMみたいに座標関係ないなら行けそう

321 :名無しさん@お腹いっぱい。:2016/01/12(火) 12:43:01.14 ID:e9ToDDNW0.net
割と初心者なんでむちゃくちゃな事を言ってるかもしれないけど
IE上で動いてるjavascriptの変数をUWSCから参照して取得するなんてこと出来ないですかね?

322 :名無しさん@お腹いっぱい。:2016/01/12(火) 14:40:39.17 ID:8tuq2Tc50.net
>>320
3次元管理されてるんじゃないかな
今表示されているのは2Fの面、とか
そうなるとマウスクリック座標にZ軸概念が必要になってきそうね

323 :311:2016/01/13(水) 21:56:06.43 ID:txKMe/w00.net
大変そうなんでwindows10入れるのやめときます
ありがとうございました

324 :名無しさん@お腹いっぱい。:2016/01/14(木) 18:52:02.87 ID:Gt/fS78R0.net
peekcolor高速でワロタ

325 :名無しさん@お腹いっぱい。:2016/01/14(木) 20:46:03.91 ID:Udnjh/YY0.net
>>323
Dual Bootで既存システムと共存させると良いよ

326 :名無しさん@お腹いっぱい。:2016/01/19(火) 00:33:32.52 ID:NZpgzfiCJ
>>3のchkimgxが404なんですが他に入手できる場所は無いでしょうか?

327 :名無しさん@お腹いっぱい。:2016/01/20(水) 04:10:25.20 ID:K+q1DhPU0.net
IEをバックグラウンドで操作したいのですが、
画面内をクリックできません。
ステータスバーの戻るボタンなどはクリックできるのですが。
Windows7 64bitです。


MOUSEORG(GETID(

328 :名無しさん@お腹いっぱい。:2016/01/20(水) 04:13:03.26 ID:K+q1DhPU0.net
IEをバックグラウンドで操作したいのですが、
画面内をクリックできません。
ステータスバーの戻るボタンなどはクリックできるのですが。
Windows7 64bitです。

ID = GETID(

329 :名無しさん@お腹いっぱい。:2016/01/20(水) 04:14:08.41 ID:K+q1DhPU0.net
あれ…なんで途中で切れてしまうんでしょうこれ
何度もすみません><

IEをバックグラウンドで操作したいのですが、
画面内をクリックできません。
ステータスバーの戻るボタンなどはクリックできるのですが。
Windows7 64bitです。

ID = GETID("XXX - Internet Explorer","IEFrame")
MOUSEORG(ID,2,MORG_BACK)
BTN(LEFT,0,100,100,1000)

これだけではだめなのでしょうか?
ブラウザの操作はできないなどありますか?

330 :名無しさん@お腹いっぱい。:2016/01/20(水) 04:58:52.14 ID:a57AnsIh0.net
IEは
id = hndtoid(getctlhnd(getid("", "IEFrame"), "Internet Explorer_Server"))
こうじゃね?

331 :名無しさん@お腹いっぱい。:2016/01/21(木) 21:54:43.32 ID:nGOnC4p/0.net
ACWが効かない事ってあります?
あるアプリを画面左上に表示させたいので以下のように記述したのですが、

xxID = getid("アプリ名")
 ifb xxID = -1
  msgbox("アプリ名を開いてから実行してください。")
  exitexit
 endif
msgbox("アプリ名発見<#CR>"+"ウィンドウID:"+xxID) //画像認識成功
acw(xxID,0,0)

これ実行すると「アプリ名発見 ウィンドウID:1」と表示されるのですが
ウィンドウが左上隅に行ってくれません。

332 :326:2016/01/22(金) 06:34:37.09 ID:T4LReso30.net
やっぱり駄目みたいですね。
ってかこのアプリ上ではUWSCで動作の記録すらされません。
マウスもキーボードも駄目。
素直に諦めます。お騒がせしました。

333 :名無しさん@お腹いっぱい。:2016/01/22(金) 08:27:38.96 ID:7wFnMY690.net
>>332
もしかしてwin10?

334 :名無しさん@お腹いっぱい。:2016/01/22(金) 10:15:56.37 ID:cq8WTI4X0.net
まあゲームによっちゃマクロ対策してるものも多いわな

335 :名無しさん@お腹いっぱい。:2016/01/22(金) 12:27:49.02 ID:zldJ+8I00.net
どんな事をしても画像認識が出来ないです。

ペイント四角い図形を作りそれをコピー
もうひとつペイントを出してそこにペースト
それを24bitBMPで保存
最初のペイントはそのまま残して、それを認識させる

sleep(1)
if chkimg("000.bmp",0)
fukidasi("ありましたよ", 300, 400)
else
fukidasi("見当たりません", 300, 400)
endif
sleep(3)

上記ので試していますが全く認識しません。
範囲指定、透過色/色無視、等色々試しました。
PCも3台で試しましたがダメでした。

何が問題なんでしょうか?
心当たりのある方いたらご指導下さい。
宜しくお願いします。

336 :名無しさん@お腹いっぱい。:2016/01/22(金) 12:53:25.40 ID:Hapn1qGL0.net
>>335
mouseorgでウィンドウ指定してたりするんじゃねーの?
その場合はペイントのウィンドウIDじゃなくてペイントの描画部分のIDを指定しなきゃダメだぞ

337 :名無しさん@お腹いっぱい。:2016/01/22(金) 15:51:48.06 ID:bHu1IupN0.net
>>329
flashオブジェクトのクリックじゃないなら、htmlの解析でクリックしたほうが確実じゃね?

338 :名無しさん@お腹いっぱい。:2016/01/22(金) 16:58:32.45 ID:CXhcEU1b0.net
>>335
ペイントがダメなんじゃね
ほかの画像表示ソフトとかで試してみたら?

339 :名無しさん@お腹いっぱい。:2016/01/22(金) 20:36:05.26 ID:h8x4HVfG0.net
>>335
ペイント一つだけなら認識するか?

340 :330:2016/01/23(土) 13:39:23.25 ID:bDtzBo3X0.net
助言有難うございます。
上記の事、色々試してみましたが認識は出来ませんでした。

諦めて他の方法を考えてみようと思います。
有難うございました。

341 :名無しさん@お腹いっぱい。:2016/01/23(土) 15:02:24.98 ID:JtiZQzOi0.net
>>340
ペーストするペイントのキャンバスが大きいままやってて
不必要な背景が付いてしまってるってことはないよね?

342 :330:2016/01/23(土) 16:10:06.75 ID:bDtzBo3X0.net
>>341
ペーストする際にキャンパスはペースト画像以下にして貼り付けてます。
有難うございます。

343 :名無しさん@お腹いっぱい。:2016/01/23(土) 18:43:39.11 ID:dZYon1Wc0.net
ペイント一つで認識しないなら2つで認識するわけないだろ。
まず最小構成で問題の原因を切り分けろよ。そんなんじゃやり方変えても別の問題で詰まって諦めるだけだ

344 :名無しさん@お腹いっぱい。:2016/01/23(土) 18:49:31.20 ID:+CnaRQ1h0.net
以下ってなんだ?
完全に一致させないといけないんだからその表現自体からして
もう何か勘違いしてるとしか思えないんだが

大きな黒い画像を表示させておいて
黒1ピクセルだけのbmpでchkimgやってみるのをお勧めする

345 :名無しさん@お腹いっぱい。:2016/01/23(土) 21:10:32.92 ID:zIf41qbQ0.net
>>344
>>342の言っていることもやっていることも合ってる
ペイントにおいては貼り付け先のキャンパスが貼り付けする画像よりも小さい場合、強制的にキャンパスサイズが貼り付けする画像と同じ大きさに変更される
そのため意図しない余分な余白を排除することができ、chkimgで完全に一致させることができる

346 :名無しさん@お腹いっぱい。:2016/01/23(土) 21:11:16.50 ID:zIf41qbQ0.net
補足で>>344の内容に関してのみは合ってるってことね
他はしらん

347 :名無しさん@お腹いっぱい。:2016/01/23(土) 21:11:44.50 ID:zIf41qbQ0.net
>>342の間違いだわ失礼

348 :名無しさん@お腹いっぱい。:2016/01/23(土) 22:11:15.75 ID:CuLS3gLO0.net
絶対ソースが他にもあってその部分が原因で認識してない
>>335に書いてあるのが全てなら前後にスリープ入れる意味がないからな

349 :330:2016/01/23(土) 23:42:32.53 ID:bDtzBo3X0.net
http://l2.upup.be/C3I0kNiClG

>>344
ペイントで白地に黒点の画像を作って(000.bmp)
ディスクトップの背景を黒
検索範囲を添付画像のマウス辺りに


if chkimg("000.bmp",1,447,238,635,318)
fukidasi("ありましたよ", 300, 400)
else
fukidasi("見当たりません", 300, 400)
endif
sleep(3)//吹き出しの表示時間ですがendifの上がいいのかな?


これでダメでした。

350 :名無しさん@お腹いっぱい。:2016/01/24(日) 00:05:02.42 ID:3CV3bKZH0.net
>>349
SAVEIMGで認識したい画像を作ってもダメなら、
何か運命的な力によってできないようにされているから諦めろ

351 :名無しさん@お腹いっぱい。:2016/01/24(日) 00:56:56.54 ID:HahwDAq70.net
デスクトップが黒でも画像に白地があったらそりゃ透過指定でもしないと無理じゃね?

352 :名無しさん@お腹いっぱい。:2016/01/24(日) 01:28:36.53 ID:kMEV0vdK0.net
>>349
その000.bmpをうpろだにうpしてここにアドレス貼って

353 :名無しさん@お腹いっぱい。:2016/01/24(日) 01:31:26.12 ID:xy8ZxP2N0.net
初心者のマヌケな勘違いに付き合ってやるお前らは優しいな

354 :名無しさん@お腹いっぱい。:2016/01/24(日) 01:41:14.00 ID:HahwDAq70.net
>>349の画像にある000.bmpのサムネイルがもうお察し

355 :名無しさん@お腹いっぱい。:2016/01/24(日) 02:19:52.57 ID:WW6t0Mr80.net
>>333
Windows7Professional上で
使おうとしたのはAutoCAD2015でした

356 :名無しさん@お腹いっぱい。:2016/01/24(日) 02:40:54.86 ID:Igcg1fXC0.net
透過してもダメならおかしいな
なぜわざわざ白地を付けて透過してるのか分からんが

357 :名無しさん@お腹いっぱい。:2016/01/24(日) 07:36:01.33 ID:mAXZzVR/0.net
白地をつけずに作れ

デスクトップの黒はRGB値が000かどうか確認したか?黒く見えるだけじゃないのか

358 :名無しさん@お腹いっぱい。:2016/01/24(日) 07:37:54.90 ID:mAXZzVR/0.net
画像ファイルの保存場所は正しいか?

359 :名無しさん@お腹いっぱい。:2016/01/24(日) 07:49:46.99 ID:gigVQQsJ0.net
仮想環境上だよな?

360 :330:2016/01/24(日) 08:10:09.47 ID:O/0pTIZz0.net
初心者は認めます^^;
皆さん申し訳ないです、有難うございます。
ググって色々試して、1度も成功してないので書き込みさせて頂きました。


000.bmp
http://l2.upup.be/dYkIFhvJuf


下記の画像の様に、ペントで黒塗りの四角画像でも試しています
画像を見て解ると思いますが、ディスクトップは#000000です
http://l2.upup.be/hfjE539E2y

画像認識する範囲が0,0からでは上手く出来ないと場合があるとの事から
範囲指定無し、有りでも毎回試しています

>>358
全てのファイルはディスクトップで試しています。
違うとエラーが出ます。

361 :名無しさん@お腹いっぱい。:2016/01/24(日) 09:12:55.94 ID:vffMZR4M0.net
たまにいるけどデスクトップをディスクトップって言う奴なんなの

362 :名無しさん@お腹いっぱい。:2016/01/24(日) 09:21:04.87 ID:gigVQQsJ0.net
言葉の意味がわかってない奴さ。

意味も分からず文字だけ記憶してるからこういうことになる

363 :名無しさん@お腹いっぱい。:2016/01/24(日) 10:21:15.66 ID:ZlkU8bwS0.net
>>360
いや、だから1つ1つの問題の切り分けを正確にやれ
別サイズの黒塗り画像でも動かない!って主張しても動かないのは意味のない情報
それよりもっと単純なことが出来ていないんだから

>>349>>360の000.bmpを見ると幅15px、高さ11pxであって白い部分が含まれている
何が原因かを探るためにも幅1px、高さ1px、黒(#000000)の画像を用意して
動作確認が最初に試すべきことだ

それで問題が解決しないなら、その画像とソースコードをまとめてzipでアップロードしろ
更にuwscのバージョン、OSのバージョンなんかも併記したほうがいい

364 :名無しさん@お腹いっぱい。:2016/01/24(日) 10:43:00.31 ID:fOnBrER40.net
2つ以上のゲームをuwscで操作させるときはどうしてますか?

365 :名無しさん@お腹いっぱい。:2016/01/24(日) 11:16:29.03 ID:mAXZzVR/0.net
if文の「then」が抜け出るからじゃね?
uwscの昔のバージョンは?昔はifbとか必要だったし

366 :名無しさん@お腹いっぱい。:2016/01/24(日) 11:17:24.22 ID:mAXZzVR/0.net
>>360
if文の「then」が抜けてるからじゃね?
uwscの昔のバージョンは?昔はifbとか必要だったし

367 :330:2016/01/24(日) 14:08:58.80 ID:O/0pTIZz0.net
UWSC Pro Ver5.2.1
を使っていましたが、試しに
UWSC Pro Ver4.9c
にしてみたら認識しました!

感激です!!
皆様の助言のおかげでなんとかなりそうです!
助言を下さった方、ありがとうございました。
m(_ _)m

>>362
>意味も分からず文字だけ記憶してるからこういうことになる
とても勉強になりました、今後気を付けたいと思いました。
ありがとうございます。

>>363
>1つ1つの問題の切り分けを正確にやれ
これも色んな所で応用できそうです。
勉強になりました。

ありがとうございました。

368 :名無しさん@お腹いっぱい。:2016/01/24(日) 17:49:17.71 ID:8jDz2v8Q0.net
30分30秒毎に実行したい処理があり、並列処理にて組みました。
わざわざ2つもスクリプトも用意せずとも、いけそうな気もするのですがこれが限界です。
もっとシンプルにならないでしょうか。お知恵を拝借させてください。


-Main.uws-
While True
sleep(1830)
CALL A.uws
WEND


-A.uws-
Thread FunctionA()

Procedure FunctionA()
やりたい処理(10分くらいかかる)
FEND

369 :名無しさん@お腹いっぱい。:2016/01/24(日) 18:17:45.90 ID:3CV3bKZH0.net
>>368
CALLを関数代わりにするのは、スタックオーバーフローの原因になるので止める

CALL A.uws
While True
sleep(1830)
Thread FunctionA()
WEND

2ファイル使いたくないなら、CALLを使わずにMain.uws内にProcedure FunctionA()

370 :363:2016/01/24(日) 18:57:49.92 ID:8jDz2v8Q0.net
ありがとうございました。

Thread FunctionA()でProcedure FunctionA()を呼び出すようにしたら、1ファイルでもうまく走りました。
そんな使い方ができるとは、勉強になりました。

371 :名無しさん@お腹いっぱい。:2016/01/25(月) 05:10:15.14 ID:pb4QYEcB0.net
SETHOTKEYで、現在実行中の関数を抜けるようにしたいのですが、可能でしょうか
SETHOTKEYは引数で関数を指定しますよね
そこでEXITをしてもその関数を抜けるだけで意味がないし、EXITEXITだと全体が終了してしまうしで・・・
その時やっている関数だけ終わらせて次の関数へ移る、ってのは無理なんでしょうか

372 :名無しさん@お腹いっぱい。:2016/01/25(月) 06:22:07.25 ID:6V8NCtbv0.net
mode=数字 とかで対処したらどうなの?

373 :名無しさん@お腹いっぱい。:2016/01/25(月) 10:52:45.34 ID:fsXZoFnX0.net
SetHotKeyで数値を変えてその数値を見てExitさせるかGetKeyStateでExitをぶち込むか?

374 :名無しさん@お腹いっぱい。:2016/01/25(月) 11:50:28.06 ID:6G99dwJv0.net
public dim exit_flag = false

function aaa()
exit_flag = false
while true
if exit_flag=true then exit
処理
wend
fend

procedure hotkey()
exit_flag = true
fend

375 :名無しさん@お腹いっぱい。:2016/01/25(月) 12:31:13.16 ID:pb4QYEcB0.net
>>372-374
ありがとうございます
やっぱりそういう感じしか無理ですかね・・・
SETHOTKEYでフラグの値変えて判定するんだったら
>>373さんの言うようにGETKEYSTATEでEXITしちゃえばいいだけなんですよね・・

376 :名無しさん@お腹いっぱい。:2016/01/25(月) 18:14:55.64 ID:B+E8sfr+0.net
YOU ! EXIT しちゃいなよ!

377 :名無しさん@お腹いっぱい。:2016/01/26(火) 01:24:28.70 ID:jn4ZRk/I0.net
前にwhileを一杯並べてbreak2みたいな構図にするなっていうタブー的なこと話してたけど
関数から関数よんで関数関数からなかなか抜け出せなくなるのもやっぱりタブーだったりするの?

378 :名無しさん@お腹いっぱい。:2016/01/26(火) 02:14:56.87 ID:deFC+MwW0.net
それはスタックオーバーフローを起こしやすい件とは全然関係ないから
自分で管理できているならそれでいいんだよ

グループで構築していてメンテナンスを他人がする場合は
グループ内のコーディングルールが必要なだけさ

379 :名無しさん@お腹いっぱい。:2016/01/26(火) 06:08:30.62 ID:ApvsqQfK0.net
>>375
GETKEYSTATEは呼ばれたタイミングでしか評価しないから、取りこぼしが発生する。
SETHOTKEYは取りこぼさないけど、フラグ見るまでディレイが生じる。
全く同じではないよ。用途次第でどっちが適しているか考えないと。

380 :名無しさん@お腹いっぱい。:2016/01/26(火) 06:31:22.72 ID:ApvsqQfK0.net
>>379
すまん。
実験してみたら、コール時点で評価ってわけじゃないんだな。
sleep(19

381 :名無しさん@お腹いっぱい。:2016/01/26(火) 06:34:49.06 ID:ApvsqQfK0.net
送信ミス。
sleep(10)
if GETKEYSTATE(VK_A) then
PRINT "A"
endif

でスリープ中に押したAが認識されてた。

382 :名無しさん@お腹いっぱい。:2016/01/26(火) 07:15:35.06 ID:jehVgdMQ0.net
なにこの一人相撲

383 :名無しさん@お腹いっぱい。:2016/01/26(火) 10:40:36.70 ID:deFC+MwW0.net
FAQなのよー

プログラム開始時点で全てのKEYSTATEはクリアされていて
GETKEYSTATEが呼ばれたら、呼ばれるまでに押下されていたらTRUEを返すって関数

つまりループ前に終了用のキーが押下されていればループしないケースとかあるので
空呼び出ししてクリアする必要があったりする

384 :名無しさん@お腹いっぱい。:2016/01/27(水) 07:36:27.55 ID:12Zxt+CV0.net
サブ機のWindows10環境で動作確認して上手く行ったからメインも10にしたんだが
Windows10環境だとモニタがオフになったらCHKIMGで画像認識出来なくなる・・・
動作確認が甘かったぜ・・・何か対処方法ありませんか?

385 :名無しさん@お腹いっぱい。:2016/01/27(水) 09:50:24.39 ID:Gihgo/qC0.net
スリープしない設定にしてモニタの電源を切る

386 :名無しさん@お腹いっぱい。:2016/01/27(水) 10:00:04.50 ID:12Zxt+CV0.net
いや当然Windows7時代から、そうしてるんだが・・・

387 :名無しさん@お腹いっぱい。:2016/01/27(水) 10:12:50.14 ID:jZMYF+Ys0.net
10はモニターの電源切ると画面の描画もしなくなるってことか
すごいな

388 :名無しさん@お腹いっぱい。:2016/01/27(水) 11:00:11.15 ID:12Zxt+CV0.net
>>387
そうみたいだね
モニタにハードスイッチ付いてれば良いんだが・・・
OSの制御でモニタの電源切るしか無いのがイタイ
Windows7の時はこれでも描画してたんだがグラフィック関係ごと電源落としてるのかね

389 :名無しさん@お腹いっぱい。:2016/01/27(水) 11:19:55.96 ID:4oyilgdN0.net
ハードスイッチがついたモニタを買う
モニタのコンセントを抜く

ハードスイッチがついてないモニタってなんだ?一体型?

390 :名無しさん@お腹いっぱい。:2016/01/27(水) 11:47:36.48 ID:12Zxt+CV0.net
隣のPCのモニタの開いてる端子に繋いでマルチモニタとして認識させたら行けたわ・・・
(隣のPCモニタの表示は切り替えず元のまま)
無理矢理感MAXだけど仕方ないね
こんなところで仕様変更有るとは想像もしてなくて参った

391 :名無しさん@お腹いっぱい。:2016/01/27(水) 12:08:40.68 ID:x0sPMmFo0.net
一部のゲームとかソフトとかでGetkeyとか使えなくなってたりしてるの確認してる
ウィンドウ指定するとき右クリック入れてからやるようにしてるからその辺使えないと困る
うぃん10使ってたの1時間未満ですぐに戻した

戻してもいいなら戻したほうがいいのではとも思う

ただよくある質問でchromeがmouseorgでバックグラウンド画像認識しようとしたらできないって人がいるけど
win10だと出来るっていうことは確認した >>188の件

392 :名無しさん@お腹いっぱい。:2016/01/27(水) 18:55:11.83 ID:baMEr/z1e
//test.uws
DIM A=999999999999999
PRINT A   //999999999999999
PRINT A+1 //1E15

上記のテストで変数が15桁まで対応してるのがわかる

393 :名無しさん@お腹いっぱい。:2016/01/28(木) 20:52:58.52 ID:ARfwwneo0.net
皆さんこんばんは
スケジュール機能で40以上登録したいのですが、増やすにはどうしたら良いでしょうか?

394 :名無しさん@お腹いっぱい。:2016/01/28(木) 21:16:25.64 ID:vsEjcj1E0.net
UWSC.INIの
[SCHEDULE]
MaxNumber=**←ここいじれ

395 :名無しさん@お腹いっぱい。:2016/01/28(木) 21:28:21.68 ID:ARfwwneo0.net
>>394
できたーーーーーーー!!!!
ありがとう!マジ感謝!ちゅちゅちゅちゅちゅ

396 :名無しさん@お腹いっぱい。:2016/01/29(金) 10:51:30.38 ID:jpG6pbsk0.net
YOU ! EXITしちゃいなよ!

397 :名無しさん@お腹いっぱい。:2016/01/30(土) 03:55:44.75 ID:M5n6V6080.net
>>390
たとえば俺の Lenovo のノーパソだと
Fn+F2 キーでモニタOFFにできるんだけど
これならBIOSレベルでやってるだろうから大丈夫だったりするんじゃないかな。

398 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:03:53.47 ID:Kxa/SQA40.net
今日始めたばかりなのでわからない事だらけですがよろしくお願いします
下記の作業をさせたい場合どうすればいいですか?
・画像1がある時に画像1をクリック
・画像2がある時に画像2をクリック
・画像3がある時に画像3をクリック
同じ画像が同時に出てくる事はありません
画像が出てくるのに少し時間がかかるので見つかるまで再検索
下記の文で実行したところ最初の時点で画像は出ていてもクリックをしてくれません
エラーも吐かずずっと再生状態のまま何もしてくれませんでした
一応自分なりに調べてみたのですが解決しなかったので知恵をお貸しください

repeat
sleep(0.2)
until chkimg(

399 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:05:13.35 ID:Kxa/SQA40.net
すいません、尻切れになってしまいした
試してみた文はこれです

repeat
sleep(0.2)
until chkimg("1.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

repeat
sleep(0.2)
until chkimg("2.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

repeat
sleep(0.2)
until chkimg("3.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

400 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:16:36.53 ID:Q6ySmrDa0.net
そりゃ画像見つかるまでループで順番に1、2、3ってやったら
画像2か3が出た場合、画像1のチェックを延々やるだけになるに決まってるだろ
ループ1回の間に3つチェックにしないと
IFBで3段階入れ子にするとかしないと

401 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:19:51.66 ID:Kxa/SQA40.net
言葉が足りませんでした

repeat
sleep(0.2)
until chkimg("1.bmp")=true
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

これだけでも無理で何もクリックしてくれず

IFB chkimg(".bmp")=true then
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
endif

これでも無理でした

402 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:21:57.44 ID:Kxa/SQA40.net
IFB chkimg("1.bmp")=true then
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
endif

でした、連投すいません
画像のファイル名は各種番号のみで24ビットbmp形式
uwscの実行ファイルと同じところに置いています

403 :名無しさん@お腹いっぱい。:2016/01/30(土) 04:41:16.12 ID:RmoOYQCx0.net
IFB chkimg("1.bmp")がFALSEなら、画像が間違ってるとしか言いようがない

404 :名無しさん@お腹いっぱい。:2016/01/30(土) 05:15:28.84 ID:Q6ySmrDa0.net
うん、>>398で言ってるやりたいこと以前に画像が検出できてないだけじゃん

405 :名無しさん@お腹いっぱい。:2016/01/30(土) 06:28:10.77 ID:Fh+9y7iS0.net
>>398は見当違いな事言ってるように見えるが
画像2や画像3以前に画像1の時点でダメなんだろ
画像1のみでやってもミスってんだから

406 :名無しさん@お腹いっぱい。:2016/01/30(土) 09:07:24.64 ID:2SEEQedG0.net
どこまで行ったのかを確認できるようにログを残すようにしてるんだけど普通何の関数使うんだろ
今はSendStrでやってるんだけど

407 :名無しさん@お腹いっぱい。:2016/01/30(土) 09:31:52.50 ID:Q6ySmrDa0.net

PRINT使えば普通にログ残るだろ?
わざわざ別の方法でログ取ってるのか?

408 :名無しさん@お腹いっぱい。:2016/01/30(土) 10:03:26.42 ID:BggHBUaW0.net
uwsc うそつかない 1.bmp一致しない 画像変えるよろし

409 :名無しさん@お腹いっぱい。:2016/01/30(土) 10:09:18.79 ID:2SEEQedG0.net
なんだよそれちょっと調べてくるわ

410 :名無しさん@お腹いっぱい。:2016/01/30(土) 14:56:11.94 ID:RmoOYQCx0.net
最近のchromeの更新でflashの表示のされ方がかわったっぽい気がする
以前に作った画像が認識されず、システムの復元で戻したら認識された

411 :名無しさん@お腹いっぱい。:2016/01/30(土) 14:58:21.22 ID:t4gyFyGY0.net
ChromeはFlash内蔵しちゃったからな

412 :名無しさん@お腹いっぱい。:2016/01/30(土) 17:12:41.00 ID:TzbPvxq50.net
昔からIEが上手く操作できなくて悩んでたんだけど
print IE.document.getElementsByTagName("tr")[2].getElementsByTagName("td")[5].getElementsByTagName("div")[1].style.width);

print IE.document.getElementsByTagName("tr").item(2).getElementsByTagName("td").item(5).getElementsByTagName("div").item(1).style.width
って書かないとだめな事をついさっき知った
多分これで今まで挫折したほとんどの操作ができる気がする
これについて勉強したいんだけどどこかに記載ってある?

413 :名無しさん@お腹いっぱい。:2016/01/30(土) 17:22:29.38 ID:xqf/0swG0.net
最近getElementsByTagNameなんか使ったこと無いわ…
querySelectorばっかり

414 :名無しさん@お腹いっぱい。:2016/01/30(土) 19:15:44.12 ID:M5n6V6080.net
>>412
XPath で記述して展開させたらシンプル

415 :名無しさん@お腹いっぱい。:2016/01/30(土) 20:53:56.31 ID:CxNcpNVU0.net
最近はじめたのですがUWSCスクリプト編集に最適なおすすめエディタはなんですか?

とりあえずnotepad++を使ってますが「\」が使えのがイマイチだと思ってます

416 :名無しさん@お腹いっぱい。:2016/01/30(土) 21:20:46.06 ID:Pytl/RXf0.net
atom

417 :名無しさん@お腹いっぱい。:2016/01/31(日) 00:29:08.15 ID:osD6olzu0.net
サクラエディタのUWSCキーワードモード

418 :名無しさん@お腹いっぱい。:2016/01/31(日) 00:30:58.41 ID:TDN+J1+m0.net
標準で関数名に色が付くMeryでいいんじゃね?
つづりで間違って悩んだりもしないだろうし

419 :名無しさん@お腹いっぱい。:2016/01/31(日) 00:51:01.33 ID:pVIrtpdo0.net
>>416-418
ありがとうございます いろいろ試してみます

420 :名無しさん@お腹いっぱい。:2016/01/31(日) 06:56:23.26 ID:MAkpvZ6c0.net
>>403-405,402
ありがとうごさいました
画像を差し替えたところ成功しました

421 :名無しさん@お腹いっぱい。:2016/01/31(日) 08:29:30.29 ID:kKfsHKLi0.net
質問なのですが、UWSCでサーチエンジンと言うソフトを操作しようと思っても
全く動作してくれません。これは自動化するにあたって、UWSCでは操作ができないアプリもあるということなのでしょうか??
ご教授いただけると幸いです。

422 :名無しさん@お腹いっぱい。:2016/01/31(日) 08:38:31.98 ID:sUTMeQpI0.net
できないアプリもある

423 :名無しさん@お腹いっぱい。:2016/01/31(日) 09:35:09.11 ID:/i6usHVb0.net
>>422
やはりですか、、、それがわかっただけでも得るものは大きいです

424 :名無しさん@お腹いっぱい。:2016/01/31(日) 15:04:22.93 ID:W6132sy20.net
戻り値が配列になるものを使う場合ってあらかじめ宣言するときは
配列だって明示的に(?)定義しないのね

エラー
dim a[2]
dim b[3][2]
dim i
a = split("a b c")
for i = 0 to 3
b[i] = split("a b c")
next

dim a
dim b[3]
で動く

functionの配列戻しが上手くいかないでしばらく頭抱えてた

425 :名無しさん@お腹いっぱい。:2016/01/31(日) 15:20:17.78 ID:cL2tI1rC0.net
Split()の返値はSafeArrayだから定義するならSafeArray()じゃない?

426 :名無しさん@お腹いっぱい。:2016/01/31(日) 19:30:07.95 ID:SGnnlRSc0.net
>>424
a = split("a b c")
for i = 0 to resize(a)
print a[i]
next

これだけでもうごくみたいだけど・・・どうなの?

427 :名無しさん@お腹いっぱい。:2016/01/31(日) 20:05:32.38 ID:W6132sy20.net
普段はEXPLICITしてるから

dim a[] = split("a b c")
とかって書いて悩んでた
SafeArrayを定義するときは配列じゃないなんてきいてないよままん

まあ正確には二次元だったのもあって
dim a[3][5]
for i = 0 to n
 a[i][] = 関数(i) //←ここ
next
の書き方がわかんなかった
dim a[3]
にすれば通るのねってことで土日が終わった

428 :名無しさん@お腹いっぱい。:2016/01/31(日) 20:16:13.80 ID:rJZHZ5Hk0.net
そうですか

429 :名無しさん@お腹いっぱい。:2016/01/31(日) 20:28:40.93 ID:cL2tI1rC0.net
>>427
>戻値 = SPLIT( 文字列, [区切文字列, 空文字処理フラグ, 数値処理フラグ] )
>戻値
> 作成された一次元配列(SAFEARRAY型)

返値がSafeArrayなのにDIM定義の配列で受けるのがおかしいだろって
遠回しに言ったつもりだったんだけど・・・

430 :名無しさん@お腹いっぱい。:2016/01/31(日) 20:48:30.79 ID:W6132sy20.net
SAFEARRAYとはなんぞやDIMとの違いはって
HELPみてもさっぱり載ってないもんでよくわかんなかったのです

戻値 = SAFEARRAY( [下限, 上限])
↑の定義はどこでするのん?みたいな

431 :名無しさん@お腹いっぱい。:2016/01/31(日) 21:06:58.46 ID:RkOVI4vxn
気になって見ていたら本当に載ってなくてワロタ

432 :名無しさん@お腹いっぱい。:2016/01/31(日) 21:04:45.22 ID:mevx1vWE0.net
SAFEARRAYはメモリ内での並び順が保証されている配列で宣言したければ普通の変数としてDIMしたら良いだけの話

433 :名無しさん@お腹いっぱい。:2016/01/31(日) 22:04:46.46 ID:ymVVdFl90.net
リファレンス見たり、マクロ記録してコピペして作るクソ汚いコードなら簡単なやりたい事作れるようになってきたんだけど、スッキリした綺麗なコーティングとかは何を勉強すれば出来るようになるの?

434 :名無しさん@お腹いっぱい。:2016/01/31(日) 22:28:54.39 ID:h2MIJWcH0.net
他人の綺麗なコードを見て弄って真似をする

435 :名無しさん@お腹いっぱい。:2016/02/01(月) 00:06:56.18 ID:ODrpB13q0.net
あとこれ
X = CALCARRAY( split("1 2 3"),CALC_ADD)
が駄目で
a = split("1 2 3")
X = CALCARRAY(a,CALC_ADD)
でないと動かないのもよく分からないです
配列なのかなんなのか

ヘルプ読んでも
<変数>
 変数に型はありません(SAFEARRAY型がないとは言ってない)
って感じでわけわかめ

436 :名無しさん@お腹いっぱい。:2016/02/01(月) 00:37:00.65 ID:+rnmEAjm0.net
変数の名前で後になって困ることが多い

・適当に名づけて似たような変数名があふれてごっちゃに
・名前を決めかねて、後から読むと意味の読み取れない変数名に
・コードをなおしていくうち、当初の意図とは違うコードになり意味が合わなくなる
・コピペしてきたコードなので意味が合わなくなる

こういうのを最初から見越してきちんと決めていくと良いコードになるのかなあ
でも、変数使うときって、思考の中心は「こういうコードを作ろう」だから、
変数名に気を取られると「こういうコードを作ろう」の中身を忘れちゃったりするんだよな

437 :名無しさん@お腹いっぱい。:2016/02/01(月) 00:42:55.69 ID:baaBe9/W0.net
せっかく日本語使えるんだから日本語でつけちゃえばいい

438 :名無しさん@お腹いっぱい。:2016/02/01(月) 01:03:00.84 ID:VsiPttLF0.net
単純にスコープの管理が甘いと思う
広いスコープの変数なら「何を保持しているのか」が中心にした方が良い

UWSCはクラスのインスタンスを作れないから
オブジェクト指向的に変数を管理し難いのが難点だよね

それでも自分はある程度の規模のスクリプトならクラスを造って変数を管理するけれどね

439 :429:2016/02/01(月) 01:45:10.84 ID:+rnmEAjm0.net
>>438
そういうものがあるのか
関数まとめて別ファイルに入れてこっちで呼び出して……みたいなことやってるからちょうど良さそう
オブジェクト指向と言う名前は聞いたことある、程度の初心者だけど、いい機会だから勉強してみるよ
ありがとう

440 :名無しさん@お腹いっぱい。:2016/02/01(月) 02:55:35.27 ID:BoGYQ2nB0.net
名前が決まらないのはその目的(責務)が明確になってないのが原因でもある

441 :名無しさん@お腹いっぱい。:2016/02/01(月) 08:25:33.84 ID:8RvGbPw20.net
未熟な自分では考えてもできなかったのでご教授ください

t=GETTIME()
While True
ifb CHKIMG("A.bmp")
sleep(1.0)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
t=GETTIME()
else
(中略)
ifb CHKIMG("H.bmp")
sleep(1.0)
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
t=GETTIME()
else
ifb ((GETTIME()-t)>3) Then
BTN(LEFT,CLICK,100,100,0.5)
t=GETTIME()
endif
(中略)
endif
sleep(0.1)
WEND

これらを実行する時
ifb CHKIMG("A.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
t=GETTIME()
に限り「画像Xがある時のみ行う」としたいのです
全てに対してとするならできたのですが1つ目文に対してのみというのができなくて詰まってしまいました

442 :名無しさん@お腹いっぱい。:2016/02/01(月) 09:04:45.92 ID:g7iI5XSU0.net
if X and A

elseif !A

endif

443 :名無しさん@お腹いっぱい。:2016/02/01(月) 09:33:11.94 ID:pZZgy3PS0.net
ifb CHKIMG("X.bmp") AND CHKIMG("A.bmp")

こんだけのことやんけ

444 :名無しさん@お腹いっぱい。:2016/02/01(月) 15:18:36.89 ID:hzvm75kL0.net
option shortcircuit付けてな

445 :名無しさん@お腹いっぱい。:2016/02/01(月) 16:00:59.79 ID:Th0k4/oZ0.net
本体のホットキーを使わずに一時停止をやりたいんですけど
こんな感じの関数を随所随所で呼び出すしかないんでしょうか?


PROCEDURE ESC_PAUSE
 IF !GETKEYSTATE(VK_ESC) then exit
 SLEEP(0.1)
 REPEAT
  SLEEP(0.1)
 UNTIL GETKEYSTATE(VK_ESC)
 SLEEP(0.1)
FEND

446 :名無しさん@お腹いっぱい。:2016/02/01(月) 16:12:58.29 ID:hzvm75kL0.net
使わずにっていうのは、本体の一時停止をやりたくないのか
それとも本体に設定されたホットキー以外のキーで一時停止したいのか
どっち?

447 :名無しさん@お腹いっぱい。:2016/02/01(月) 17:12:39.88 ID:Th0k4/oZ0.net
本体の一時停止ホットキーは、2つ以上のキーで面倒なのと
スクリプト内でやれば、好みの条件に出来るかなと思いまして

たとえば、マウスカーソルの位置とか

PROCEDURE MOUSE_PAUSE
 IF G_MOUSE_X<1000 then exit
 Repeat
  SLEEP(0.1)
 Until G_MOUSE_X<1000
FEND

448 :名無しさん@お腹いっぱい。:2016/02/01(月) 17:20:38.17 ID:Th0k4/oZ0.net
あと、本体の一時停止ホットキーは
本体から動かしてるスクリプトには有効ですが
ランチャー等から起動した別のスクリプトには無効みたいです

449 :名無しさん@お腹いっぱい。:2016/02/01(月) 17:38:04.47 ID:PbXPJngC0.net
>>447
停止処理はSETHOTKEYで呼び出し 停止処理からの復帰は停止処理内でGETKEYSTATE

dim i
sethotkey(VK_A,,"proc_Pause")

while true
i= i+1
fukidasi(i)
sleep(0.5)
wend

procedure proc_Pause()
repeat
sleep(0.5)
until GETKEYSTATE(VK_ESC)
fend

aで処理中断 escで中断からの復帰 中断復帰後は中断時の処理から続いてる事も確認できる
sethotkeyでコードの頭に登録すればそれ以降の処理内で一々中断用のコード書かなくてもいいから保守性も高いよ

450 :名無しさん@お腹いっぱい。:2016/02/01(月) 17:41:43.95 ID:hzvm75kL0.net
UIが無い別プロセスのスクリプトにも有効なのは有効だよ。
ただ、2つ以上のスクリプトが動作してると、キーが消費されちゃうので
連打するとか押しっぱなしにするとかしないと効かない。
あーでも一時停止は連打はダメか。
停止のホットキーは押しっぱなしで全プロセス停止に効く。

本体を一時停止してもいいなら、SETHOTKEYで任意のキーを押した時に
UWSC本体に一時停止のホットキーを送るってのもありかと。

あと停止はループさせるよりMSGBOXとか出す方が便利とは思うが。

451 :名無しさん@お腹いっぱい。:2016/02/01(月) 21:11:01.64 ID:Th0k4/oZ0.net
レス、ありがとうございます

>>449
おぉー、ホットキーを設定するやり方ですか
仮想キー限定のようですが、これはいい方法ですね

>>450
MSGBOXを使うと、解除がちょっと面倒なんで・・・

あと、UWSC本体を起動せず
下記スクリプトをショートカットから実行した場合
一時停止ホットキーは機能しませんでした

for j=1 to 10000
 fukidasi(j)
 SLEEP(0.5)
next

452 :名無しさん@お腹いっぱい。:2016/02/02(火) 07:05:55.13 ID:Mf47p9PS0.net
>>451
ttp://uproda.2ch-library.com/916238SO2/lib916238.uws
俺はこんな感じでやってる
実際に使うときはウィンドウ指定してアクティブ時にキーチェックしてる

453 :名無しさん@お腹いっぱい。:2016/02/04(木) 13:22:20.05 ID:bYNIn2Du0.net
Google Speech API と組み合わせて音声入力させるものって作れるかなあ?

454 :名無しさん@お腹いっぱい。:2016/02/04(木) 14:03:46.64 ID:fyQC3oxA0.net
すみません、UWSCってこのスレで初めて知ったんですが、業務で利用されてる方いらっしゃいますか?

455 :名無しさん@お腹いっぱい。:2016/02/04(木) 15:21:36.98 ID:ja3vwQ+v0.net
いますよー

456 :名無しさん@お腹いっぱい。:2016/02/04(木) 17:34:50.27 ID:cVw67MCx0.net
詰まったので質問させて下さい。

現在BluestacksとUWSCを使用して自動マクロを運用しています。
また、離籍時にteamviewerを使用してリモートで操作もしています。

相対座標を使用し、通常は問題なく使えるのですが
teamviewer使用時が問題で、セッション終わり毎にダイアログが発生し、そのせいでループが抜けなくなり手間が増えている状態です。

質問なのですが

id=GETID("Bluestacks App Player","WindowsForms10.Window.")
MOUSEORG(id, MORG_DIRECT)

上記のように指定しても画像検索はできますが座標がおかしくなってまともに動きません。
座標を直接指定しても、画像の場所に直接クリックにしても常に左上の端のみをクリックする状態となっています。

どのように指定をすればいいでしょうか?

457 :名無しさん@お腹いっぱい。:2016/02/04(木) 18:42:53.73 ID:Ml8C21Ff0.net
mouseorgは通用するアプリとしないものがあると何度いわれたらry

458 :名無しさん@お腹いっぱい。:2016/02/04(木) 19:06:31.07 ID:zrOVrXZR0.net
>>456
teamviewer昨日導入したわ。タイムリーな。ツムツムかな?
俺はダイアログ消す方で解消したわ。
UWSCのスケジュールの指定ウィンドウが現れた時で、ダイアログを消すスクリプト登録したらいい感じ。

459 :名無しさん@お腹いっぱい。:2016/02/04(木) 19:21:35.52 ID:cVw67MCx0.net
>>457
ありがとうございます。
自分では通用するのかどうかがわからなかったのと、画像検索はできたので方法があるのかと思い聞いてみました。
申し訳ありませんでした。

>>458
そうだったんですね。
俺は別のゲームです。
プログラミング初心者の為勉強しながらになりますが頑張って組んでみます。
ありがとうございます。

460 :名無しさん@お腹いっぱい。:2016/02/04(木) 19:25:47.32 ID:I350w/WA0.net
>>456
MORG_DIRECTをMORG_CLIENT変える

461 :名無しさん@お腹いっぱい。:2016/02/04(木) 21:48:42.30 ID:DIbZWkUk0.net
BTN(LEFT,CLICK,1200,150,150)

BTN(LEFT,CLICK,1000,150,150)
どちらかランダムで一つクリックさせたい場合ってどうやればいいですか?

462 :名無しさん@お腹いっぱい。:2016/02/04(木) 21:57:51.63 ID:EqtNr8zt0.net
ランダムで分岐させたら良い

463 :名無しさん@お腹いっぱい。:2016/02/04(木) 22:23:24.65 ID:4BmdWrRw0.net
>>461
BTN(LEFT,CLICK,1000+RANDOM(2)*200,150,150)

464 :名無しさん@お腹いっぱい。:2016/02/04(木) 23:36:39.04 ID:bosOw8Gy0.net
整数化しないとひどいことになりそう

465 :名無しさん@お腹いっぱい。:2016/02/04(木) 23:42:01.07 ID:EqtNr8zt0.net
個人的には速度や短さを競うコードコンテスト以外では
結果的にやりたいことになるコードではなく
やりたいことをそのままコードにした方が良いと考えるかな

メンテで正しく動作しなくなる種になるからね

466 :名無しさん@お腹いっぱい。:2016/02/05(金) 00:29:23.88 ID:Gg6PibGB0.net
>>460
今ってbluestacksをバックグラウンドで動かせるようになったの?

467 :名無しさん@お腹いっぱい。:2016/02/05(金) 02:27:59.12 ID:AORidpJX0.net
>>463
ありがとうございます

468 :名無しさん@お腹いっぱい。:2016/02/05(金) 02:37:46.36 ID:/HWKBYw70.net
プログラミングのプの字も知らないけどUWSCで初挑戦中
画像認識でAの画像が出るまでBの操作を繰り返す
Aが出たらその画像をクリックしてCの操作へ
これはrepeat-untilでいいですか?

469 :名無しさん@お腹いっぱい。:2016/02/05(金) 04:19:16.20 ID:i6SfBH8K0.net
いいよ(´・ω・`)
とにかく自分で書いて試してみるのが上達の近道だよ

あとUWSCの本があるからブックオフで見かけたら買うといいよ

470 :名無しさん@お腹いっぱい。:2016/02/05(金) 06:07:19.13 ID:/HWKBYw70.net
ありがとうございます
色々調べ回って393のような形で処理に成功しました
これを順不同にするにはどうしたらいいでしょうか
a,b,cの画像を出てきた順にクリックしたいとして

repeat
sleep(0.2)
until chkimg("a.bmp")=true or chking("b.bmp")=true or chking("c.bmp")
btn(left,click,g_img_x,g_img_y)

これを3つ羅列するとできると思うんですが
長ったらしくなるのでこれをスマートに収めるにはfor〜nextで挟めば大丈夫でしょうか

471 :名無しさん@お腹いっぱい。:2016/02/05(金) 09:15:41.63 ID:YVt32lCs0.net
ツムツムはMORG_DIRECT使えますか?

472 :名無しさん@お腹いっぱい。:2016/02/05(金) 09:18:42.14 ID:AKW1xg3y0.net
>>460
ありがとうございます。
試してみましたが、バックグラウンドで動くわけではないのですね。
リモートする際はchromeのリモートデスクトップ使用でダイアログに邪魔される事もなくなりましたのでこのまま使用していきます。

473 :名無しさん@お腹いっぱい。:2016/02/05(金) 12:28:03.94 ID:/waBKm5O0.net
>>470
それ一つで動作するが
OPTION SHORTCIRCUITを設定しない標準状態だと
g_img_x,g_img_yの中にchking("c.bmp")の結果しか入らないので
これを設定する

474 :名無しさん@お腹いっぱい。:2016/02/05(金) 18:09:16.28 ID:YVt32lCs0.net
使えませんでした

475 :名無しさん@お腹いっぱい。:2016/02/06(土) 13:49:52.63 ID:E2a0obR10.net
>>470
散々既出だけど、画像があればクリックしてTRUEを返すCLKIMG関数を自作する。
while true
  clkimg(

476 :名無しさん@お腹いっぱい。:2016/02/06(土) 13:57:39.57 ID:E2a0obR10.net
なんかカキコが壊れた。
clickImage uwsc でググると過去スレに自作例が出てくるな。

while true
  ifb clickImage("1.bmp") then
    //1のクリックに成功した時の処理
  endif
  ifb clickImage("2.bmp") then
    //2のクリックに成功した時の処理
  endif
  ifb clickImage("3.bmp") then
    //3のクリックに成功した時の処理
  endif
wend
ごく基本的な構造化なのでまだ早いとかやめてね…

477 :名無しさん@お腹いっぱい。:2016/02/06(土) 14:00:17.77 ID:E2a0obR10.net
クリック後に個別の処理が不要なら clickImage("1.bmp"); clickImage("2.bmp"); clickImage("3.bmp") で済んじゃう

478 :名無しさん@お腹いっぱい。:2016/02/06(土) 21:35:39.00 ID:4Jvgc2PX0.net
かなり初歩的な質問なのですが調べてもあまり分からなかったので質問させて頂きます。
UWSCでログファイルが更新され続ける拡張子がtxtなどのファイルを監視し、目的のログが現れた場合
キーを送信 ってできますでしょうか?
やり方を教えて頂きたいです。

479 :名無しさん@お腹いっぱい。:2016/02/06(土) 22:15:37.28 ID:k3CjFpd40.net
・日本語をきちんと使えるようにする
・UWSCを勉強する
たったこれだけで実現できるようになるよ
あとは君の努力次第だから頑張ってね

480 :名無しさん@お腹いっぱい。:2016/02/06(土) 22:35:58.37 ID:0QAMOn/70.net
シェアウェア版って結構高いねそれでも業務に使える?一台に一ライセンス必要みたいだけど

481 :名無しさん@お腹いっぱい。:2016/02/06(土) 22:47:44.53 ID:sPS5RQrH0.net
>>480
何度もバカなの?

482 :名無しさん@お腹いっぱい。:2016/02/06(土) 22:57:49.59 ID:2YduAXx90.net
>>478
質問がごちゃごちゃし過ぎで、丸投げしたいようにしか見えない

どのように監視できないのか
どのようにログの検索ができないのか
どのようにキー送信ができないのか

483 :名無しさん@お腹いっぱい。:2016/02/07(日) 00:40:38.55 ID:puxzTe8g0.net
>>456
これに便乗なんだけど
MORG_DIRECTで動作するAndroidのエミュレータってありますか?

484 :名無しさん@お腹いっぱい。:2016/02/07(日) 06:08:59.16 ID:I92VPPhw0.net
uwscって自由すぎて逆に戸惑うことが多くね?

TOTAL = MYCALC(300,400)
//計算結果を出力
PRINT TOTAL
FUNCTION MYCALC(VAL1, VAL2)
ADD = VAL1 + VAL2
RESULT = ADD
FEND

-------------------------------------------------
PRINT MYCALC(300,400)
FUNCTION MYCALC(VAL1, VAL2)
ADD = VAL1 + VAL2
RESULT = ADD
FEND

PRINT文にFUNCUTION関数直接書いても出力されるんだな

485 :名無しさん@お腹いっぱい。:2016/02/07(日) 06:13:42.80 ID:mZHgAHcI0.net
関数の引数に関数を入れるのは普通
出来ない言語の方が珍しい

486 :名無しさん@お腹いっぱい。:2016/02/07(日) 06:14:43.21 ID:oQyphb550.net
>>481
そう、パかなの。一台に六千円てことは百台で六十万てことでしょ?
exe化したらライセンスフリーってことはexe化したもなのなら配布自由ってことか、配布したPC全部にライセンスいるのかの思ったよ。やっぱり馬鹿だったんだな俺

487 :名無しさん@お腹いっぱい。:2016/02/07(日) 07:45:41.55 ID:JTReqb1J0.net
気づけてよかったね

488 :名無しさん@お腹いっぱい。:2016/02/07(日) 07:48:35.49 ID:TPGZWfB40.net
今までで割引キャンペーンとかってやったことある?
やってくれれば買うんだけどな

489 :名無しさん@お腹いっぱい。:2016/02/07(日) 12:25:34.39 ID:DbLS0yGv0.net
関数の引数に関数を入れる、が関数ポインタとかラムダ式、リスナクラスの話に聞こえてちょっとビックリしたw

490 :名無しさん@お腹いっぱい。:2016/02/07(日) 12:30:27.93 ID:UmG8NUOx0.net
あっしには何を言ってるのかさっぱり

491 :名無しさん@お腹いっぱい。:2016/02/07(日) 15:28:50.99 ID:cJXx45gX0.net
>>487
気付かせてくれてありがとう

492 :名無しさん@お腹いっぱい。:2016/02/07(日) 19:18:51.61 ID:I92VPPhw0.net
>>485
そうなんだ、知らなかった
教本みたいなサイトって丁寧に関数書くから
他人のコード見た時に「なんだこれ!」ってなってびっくりしたわ

ついでに聞きたいんだけどさ
---------------------------------------------------------------
クリック("ボタン")//

FUNCTION クリック(name)
IFB CHKIMG(name + ".bmp",0)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
KBD(VK_a,CLICK)
ENDIF
RESULT
FEND
-------------------------------------------------------------
こうやってCHKIMGの画像ファイル名を関数の引数?を使って好きに変えれるようにしたんだけど
同じようにKBD(VK_a,CLICK)
のVK_aの部分も変えられるように出来ないかね?

493 :名無しさん@お腹いっぱい。:2016/02/07(日) 19:28:24.73 ID:mZHgAHcI0.net
VK_Aとかは定数だから変数に入れたり計算させても大丈夫だよ
例えば VK_A + 1 と VK_B は同じだったりとかね

494 :名無しさん@お腹いっぱい。:2016/02/07(日) 19:34:53.46 ID:I92VPPhw0.net
へー、面白いな
今やってみたら出来たよ
ありがとう

495 :名無しさん@お腹いっぱい。:2016/02/07(日) 19:48:58.52 ID:C1KScm550.net
コードが難読化するからコーディング規約で禁止してるところも多いけどまぁ便利だよね

496 :名無しさん@お腹いっぱい。:2016/02/07(日) 20:25:57.04 ID:Op3LiiL10.net
そもそも関数という形はそういう書き方をするためのものだろう。
受け取るだけの変数を毎回経由するなら戻り値なんて機能は不要だし。

497 :名無しさん@お腹いっぱい。:2016/02/08(月) 17:06:48.25 ID:T9ZC/Zyz0.net
質問したい
A処理
└B処理
 └C処理
という感じの処理があって、これをFUNCTION ABC()にまとめた
ABC(Aへの引数) と書くとCまで行くようになっている
だけどA処理を飛ばしてB処理の部分を利用したいこともある
AB飛ばしてC処理をしたい時もある
そういう場合にABC(0,Bへの引数,0)やABC(0,0,Cへの引数)と書けば処理ができるように作ってみたんだけど
これ以外に簡便なやり方って無いかな?

http://i.imgur.com/TdIP4wY.jpg
------------------------------
FUNCTION ABC(Aへの引数,Bへの引数,Cへの引数,戻り値)
RESULT = False
|IFB !Aへの引数=0
| (A) 処理
|ELSE
| |IFB !Aへの引数=0
| | (B) Aの値を継承して処理
| |ELSE
| | (B') Bへの引数を使って処理
| | |IFB !Aへの引数=0
| | | (C) Bの値を継承して処理
| | |RESULT = True
| | |ELSEIF Aへの引数=0 and !Bへの引数=0
| | | (C') B'の値を継承して処理
| | |RESULT = True
| | |ELSEIF Aへの引数=0 and Bへの引数=0
| | | (C'') Cへの引数を使って処理
| | |RESULT = True
| | |ELSE
| | |RESULT = False
| | |ENDIF
| |ENDIF
|ENDIF
FEND
------------------------------

498 :名無しさん@お腹いっぱい。:2016/02/08(月) 17:56:33.03 ID:uvOD7Pon0.net
引数以外の継承したい変数をPUBLICにするとか参照渡しにして
ABC各処理を別関数に
関数A
関数B
関数C
ABC全部処理する関数ABC
BとCだけ呼ぶ関数BC

みたいに呼べばいいんでないの

499 :名無しさん@お腹いっぱい。:2016/02/08(月) 17:58:10.02 ID:657cwzrg0.net
・継承という用語はプログラミングにおいて特別な意味を持つので別の表現を使うべし。
・サンプルプログラムの条件分岐に既に無意味な部分がありどうしたいのかが読み取れない。
 今の状態だと7,11-12行目は絶対に実行されない。
・引数第4項が戻り値であるにもかかわらずvar宣言がない、関数内でも使われていない。

実行され得ない部分を削って最適化するとこんな感じ。やっぱり意図がわからない。

FUNCTION doABC(Aへの引数, Bへの引数, Cへの引数)
  RESULT = False
  IFB !Aへの引数=0
    doA(Aへの引数)
  ELSE
    doB(Bへの引数)
    IFB !Bへの引数=0
      doC(Bへの引数)
    ELSE
      doC(Cへの引数)
    ENDIF
    RESULT = True
  ENDIF
FEND

500 :名無しさん@お腹いっぱい。:2016/02/08(月) 17:58:53.91 ID:657cwzrg0.net
要件ベースでまとめると、
(1) Aへの引数のみ指定すると、doA(Aへの引数), doB(Aへの引数), doC(Aへの引数) の順で実行
(2) Bへの引数のみ指定すると、doB(Bへの引数) のみ実行
(3) Cへの引数のみ指定すると、doC(Cへの引数) のみ実行

解1
関数 doA(paramA), doB(paramB), doC(paramC) を定義し、
関数 doABC(paramABC) 内で上記関数を使用する。
(1)はdoABC(Aへの引数) , (2)はdoB(Bへの引数) , (3)はdoC(Cへの引数) を実行する。

解2
各ケースをあくまで一つの関数にまとめ、引数の指定の仕方のみで制御したい場合。
PROCEDURE doABC(Aへの引数, Bへの引数, Cへの引数)
  RESULT = False
  IFB !Aへの引数=0
    doA(Aへの引数); doB(Aへの引数); doC(Aへの引数)
  ELSE
    IFB !Bへの引数=0
      doB(Bへの引数)
    ELSEIF !Cへの引数=0
      doC(Cへの引数)
    ENDIF
  ENDIF
FEND
メリットは特に無い。

501 :名無しさん@お腹いっぱい。:2016/02/08(月) 18:43:19.51 ID:T9ZC/Zyz0.net
>>498-500
ありがとう
>>500
ごめんなさい、勘違いしてた
関数の中に関数入れて呼び出すとエラーになる気がしてたけど違ったみたい
素直に解1の方法でやります

502 :名無しさん@お腹いっぱい。:2016/02/08(月) 19:45:49.25 ID:y9zJENvU0.net
hashtbl lists
lists["あ"] = "a10 a20 a30"
lists["い"] = "b100 b200"
lists["う"] = "c1 c2 c3 c4"

//上記の場合3*2*4=24通りの全組み合わせを出力するprintCombination
//あ=a10, い=b100, う=c1
//・・・
//あ=a30, い=b200, う=c4
printCombination(lists)

procedure printCombination(lists[])
 product = 1
 for key in lists
  product = product * length(split(lists[key]))
 next
 
 for i = 0 to product - 1
  q = i
  hashtbl outHash
  
  for key in lists
   values = split(lists[key])
   r = q mod length(values)
   q = int(q / length(values))
   
   outHash[key] = key + "=" + values[r]
  next
  
  print join(outHash, ", ")
 next
fend

503 :名無しさん@お腹いっぱい。:2016/02/08(月) 19:54:28.61 ID:y9zJENvU0.net
質問です
printCombinationという関数を書いてみたんですが、
もっとスマートな方法ないでしょうか?

やりたいことはコメントに書いてあるとおりです
すべての組み合わせを出力したい(もちろん別の組み合わせでも動くような感じで)

504 :名無しさん@お腹いっぱい。:2016/02/08(月) 20:28:28.46 ID:KECwy5hV0.net
これじゃいかんのか?

DIM ary1[2] = "a10","a20","a30"
DIM ary2[1] = "b100","b200"
DIM ary3[3] = "c1","c2","c3","c4"

for a1 in ary1
for a2 in ary2
  for a3 in ary3
   print a1 + a2 + a3
  next
 next
next

どうしてもハッシュ使いたいなら上の三行で配列宣言したあとにハッシュリストからsplit使って配列にぶっこめばええんちゃうん

505 :名無しさん@お腹いっぱい。:2016/02/08(月) 22:06:55.05 ID:7q7uQHpo0.net
帰宅中に松屋で飯食いながら考えた。

hashtbl lists
lists[

506 :名無しさん@お腹いっぱい。:2016/02/08(月) 22:09:05.76 ID:7q7uQHpo0.net
帰宅中に松屋で飯食いながら考えた。

hashtbl lists
lists["あ"] = "a10 a20 a30"; lists["い"] = "b100 b200"; lists["う"] = "c1 c2 c3 c4"
const SPLT_V = " "; const SPLT_R = "<#CR>"; const SPLT_C = ", "
print structCombinationCSV(lists, 1)

function structCombinationCSV(lists[], curLv)
  key = lists[curLv-1, HASH_KEY]
  curRows = split(lists[curLv-1, HASH_VAL], SPLT_V)
  combinationCSV = ""
  ifb curLv >= length(lists) then
    for curIdx=0 to length(curRows)-1
      combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_R
    next
  else
    childRows = split(structCombinationCSV(lists, curLv+1), SPLT_R)
    for curIdx=0 to length(curRows)-1
      for childIdx=0 to length(childRows)-1
        combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_C + childRows[childIdx] + SPLT_R
      next
    next
  endif
  result = combinationCSV
fend

っしゃぁ!

507 :名無しさん@お腹いっぱい。:2016/02/08(月) 22:29:31.74 ID:kO8wU/DR0.net
500 Internal Server Error

508 :名無しさん@お腹いっぱい。:2016/02/09(火) 00:41:55.44 ID:l/ELWwG70.net
複雑すぎワロタ

509 :名無しさん@お腹いっぱい。:2016/02/09(火) 10:19:05.55 ID:dxLnf7NN0.net
松屋で飯食いながら仕事ができるタイプか

510 :名無しさん@お腹いっぱい。:2016/02/09(火) 12:33:29.38 ID:qpHYw0y/0.net
すげえレベル高いな

511 :名無しさん@お腹いっぱい。:2016/02/09(火) 12:40:47.60 ID:kzjhglVU0.net
えっ!?あのお客さん…ウチで飯食いながらコーディングしてる!?

512 :名無しさん@お腹いっぱい。:2016/02/09(火) 12:47:42.64 ID:XfpXz+/C0.net
>>504
それだと関数化するとき困るんじゃね?

ary2までしかないときは動かないし
ary4まであってもちゃんと動かない

513 :名無しさん@お腹いっぱい。:2016/02/09(火) 17:31:23.26 ID:FV1/KP6n0.net
>>506 は入れ子になってるくり返しで使われる再帰処理だね。
再帰を終わらす終了条件が最初あって、次にやりたい事ってふうに見ると分かる。

514 :名無しさん@お腹いっぱい。:2016/02/09(火) 18:04:46.21 ID:+8zDwgB90.net
そっか項目数だけじゃなく要素数も変わるのか なら関数化するならこんな感じかな

//配列組み合わせ生成関数 戻り値は配列を返す
FUNCTION fnc_ArryComb(strarry[])
DIM tmpstr[0],tmp //文字列
DIM i,j,k,l,m=0,tmpcount = 1,maxcount = 1,preCount = 1 //整数
CONST cnt_SPLSTR = ","
for i = 0 to LENGTH(strarry) - 1
  maxcount =maxcount * LENGTH(SPLIT(strarry[i],cnt_SPLSTR))
next
resize(tmpstr,maxcount-1) //結果格納用の変数を引数に合わせてリサイズ
m=0;i=0 //未使用再利用変数の初期化
repeat //順列組み合わせの作成
  tmpcount = 1
  for l = m to LENGTH(strarry) - 1
    tmpcount = tmpcount * LENGTH(SPLIT(strarry[l],cnt_SPLSTR))
  next
  for l = 1 to maxcount / tmpcount
    for tmp in SPLIT(strarry[i],",")
      for j = 0 to tmpcount / LENGTH(SPLIT(strarry[i],cnt_SPLSTR)) - 1
        tmpstr[k] = tmpstr[k] + " " + tmp
        k=k+1
      next
    next
  next
  m=m+1;k=0;i=i+1 //カウンターの整理
until i >= LENGTH(strarry)
result = slice(tmpstr,0,maxcount-1)
fend
//関数ここまで

515 :名無しさん@お腹いっぱい。:2016/02/09(火) 18:06:08.69 ID:+8zDwgB90.net
関数Callのサンプルはこんなかんじ

//関数の呼び出し部
hashtbl lists
DIM strarry[0]
DIM i
//ここで入力する項目数を増やしたりlistsの要素数を増やしたり減らしたりする
lists["あ"] = "a10,a20,a30"; lists["い"] = "b100,b200"; lists["う"] = "c1,c2,c3";lists["ぼんば"] = "d1,d2,d3"
resize(strarry,length(lists)-1) //ハッシュの要素数で配列をリサイズ

for i= 0 to length(lists) - 1
  strarry[i]=lists[i,HASH_VAL]
next
fukidasi(join(fnc_ArryComb(strarry),"<#CR>"))
msgbox("終わり")
//呼び出し部ここまで

516 :名無しさん@お腹いっぱい。:2016/02/09(火) 19:17:28.30 ID:GXdSKXvs0.net
自作関数って引数を設定した場合、引数の数を合わせないと「引数の数が合いません」ってエラー出るけれど
""を使えば引数を省略できるのか
chkimgみたいなデフォルト関数は引数省略できるからどうやるのかなーってずっと悩んでたわ

UWSC: 引数を省略できる関数をつくる
http://blogs.yahoo.co.jp/nullpage_vwxyz/52255157.html

517 :名無しさん@お腹いっぱい。:2016/02/09(火) 19:24:17.43 ID:4bdWm2Pw0.net
引数の省略はデフォルト値を関数宣言時に代入しているか否かだ
関数の呼び出し時に変数を使用しているが場合によってはデフォルト値にしたい時はEMPTY(定数)を代入する

518 :名無しさん@お腹いっぱい。:2016/02/09(火) 19:29:44.25 ID:+8zDwgB90.net
""てかデフォルト値であればtrueでも1でもなんか指定してあげればいいだけね
ただまぁプロ版使ってるけどこんな関数用意して
procedure procsmp(t=true,m=1,n="オイヨイヨ")
t=false
fend

こんな感じで呼ぶと
procsmp(,,"へい")

デバッガでは通るのにスクリプトファイルをUWSCで実行するとsyntaxエラー出たりと
環境で動作変わるからあんま使わない方が良いと思ってる

519 :名無しさん@お腹いっぱい。:2016/02/09(火) 19:34:33.12 ID:GXdSKXvs0.net
なんでもいいのか

520 :名無しさん@お腹いっぱい。:2016/02/09(火) 19:59:33.20 ID:p4ai4XIh0.net
>>514-515
この方法もいいね。予め全体サイズを把握してからトップダウンで計画的に構築する感じだね。

521 :名無しさん@お腹いっぱい。:2016/02/09(火) 20:25:23.95 ID:+8zDwgB90.net
2chは改行制限のおかげでどうやって可読性上げつつコンパクト化するか必死で考えるから質問に答えるだけで色々勉強になるのよね
今回はslice関数をうまいこと使えたので良かった カウンター使い過ぎだけど

522 :名無しさん@お腹いっぱい。:2016/02/10(水) 07:52:47.08 ID:Z7PL/WtA0.net
例示された処理方法よりも長いし遅くなってないか?

523 :名無しさん@お腹いっぱい。:2016/02/10(水) 08:45:28.77 ID:+W75uBK+0.net
つか質問者のコードが素手にかなりスマートなのに
もっとスマートって要求だから釣りなんだろうなw

524 :名無しさん@お腹いっぱい。:2016/02/10(水) 09:04:15.50 ID:MxWBE2100.net
2進数表記で 111 なら処理三つ 011なら処理二つ みたいなの

525 :名無しさん@お腹いっぱい。:2016/02/10(水) 10:37:39.26 ID:R/okCavp0.net
http://www.nminoru.jp/~nminoru/programming/bitcount.html

526 :名無しさん@お腹いっぱい。:2016/02/10(水) 11:26:49.90 ID:wTSkFc930.net
phpならarray_shift使ってかなり短くできたがUWSCで組めない

527 :名無しさん@お腹いっぱい。:2016/02/10(水) 12:19:18.86 ID:mXr4GQ/h0.net
悩みようがないだろ
コード書いてみろ
添削してやんよ

528 :名無しさん@お腹いっぱい。:2016/02/10(水) 12:25:07.38 ID:wTSkFc930.net
添削というか、移植してくれ。sliceとか使うのかな
$lists["あ"] = "a10 a20 a30";
$lists["い"] = "b100 b200";
$lists["う"] = "c1 c2 c3 c4";
print implode("<br>\n",(combi($lists)));
function combi($lists){
 $l_cur = array_shift($lists);
 $l_cur_arr = explode(" ",$l_cur);
 if(count($lists)>0){
  while($l_cur_1 = array_shift($l_cur_arr)){
   foreach(combi($lists) as $extra){
    $res[] = $l_cur_1." ".$extra;
   }
  }
 }else{
  return explode(" ",$l_cur);
 }
 return $res;
}

529 :名無しさん@お腹いっぱい。:2016/02/10(水) 12:45:52.49 ID:R/okCavp0.net
そっちかよw

530 :名無しさん@お腹いっぱい。:2016/02/10(水) 12:54:34.10 ID:wTSkFc930.net
すまぬ499をベースにやろうとしてみたけど
5行目で「listsが定義されていません」エラーになる理由がもうわからない
UWSCの配列もよく分からない

hashtbl lists
lists["あ"] = "a10 a20 a30";
lists["い"] = "b100 b200";
lists["う"] = "c1 c2 c3 c4"
print combi(lists)
function combi(lists)
 res = ""
 l_cur = lists[0]
 SHIFTARRAY(lists,-1);
 l_cur_arr = split(l_cur," ");
 if length(lists)>0 then
  while length(l_cur_arr)>0
   l_cur_1 = l_cur_arr[0]
   SHIFTARRAY(l_cur_arr,-1)
   for extra in combi(lists)
    res = res + l_cur_1+" "+extra+"<#CR>"
   next
  wend
 else
  result = l_cur_arr
 endif
 result = res
fend

531 :名無しさん@お腹いっぱい。:2016/02/10(水) 14:26:42.18 ID:Lx2sic3p0.net
>>530

関数定義の方の変数が配列として定義されてないから

532 :名無しさん@お腹いっぱい。:2016/02/10(水) 17:16:00.23 ID:cNgK9kX70.net
連想配列を、多次元で使うのは無理ですか?
可能であれば、方法を教えてください

533 :名無しさん@お腹いっぱい。:2016/02/10(水) 19:45:44.31 ID:CFiYTXoe0.net
http://www.dotup.org/uploda/www.dotup.org733222.txt.html
少し長いのでうpろだに上げましたm(_ _"m)

質問です。
おそらくこの〜〜〜〜部分に稀に出てくる画像があるのですが、
処理をどう書いたら稀に出てくる画像を検出して押してループ出来ますかね?
そして出ないときはスルーしてループしてくれると良いのですが....
中々調べてもパッとしたものが出てこないので困ってます...

534 :名無しさん@お腹いっぱい。:2016/02/10(水) 22:49:09.18 ID:UdxSvPdk0.net
>>533
質問の趣旨が今一つかめないけどCASE1〜8の処理をループさせながら定期的に特定の画像をチェックしたいってことでいいのかな
それならとりあえず全ケース文の先頭にその稀に出現する画像をチェックする処理入れればいいのでは
ただこれだけそっくりな処理をケース分けするなら状態遷移用のパラメータ持たせた配列用意して回した方がすっきりするね

535 :名無しさん@お腹いっぱい。:2016/02/10(水) 22:55:35.86 ID:UdxSvPdk0.net
>>533
とりあえずこんな感じ? 細かい部分は適当なので後は自分でいじって
dim tmpstr
dim def_StateParam[8]
dim VWS = 1
def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0"
def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0"
def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0"
def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1"
def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0"
def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0"
def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0"
def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0"
while true
  tmpstr = split(def_StateParam[VWS],",")
  fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,)
  SLEEP(val(tmpstr[5]))
  fukidasi()
  //ここに稀に出現する画像をチェックする処理を書く
  IF VWS = 4 THEN
    WHILE (CHKIMG(tmpstr[6])=FALSE)
    SLEEP(val(tmpstr[9]))
  WEND
  ENDIF
  IFb Chkimg(tmpstr[6]) Then
    MMV(G_IMG_X, G_IMG_Y)
    BTN(LEFT,CLICK)
    VSW = val(tmpstr[7])
  ELSE
    VSW = val(tmpstr[8])
  ENDIF
wend

536 :名無しさん@お腹いっぱい。:2016/02/10(水) 23:00:18.61 ID:UdxSvPdk0.net
まちがった こっちで

dim tmpstr, def_StateParam[8], VWS = 1
def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0"
def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0"
def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0"
def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1"
def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0"
def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0"
def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0"
def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0"
while true
  tmpstr = split(def_StateParam[VWS],",")
  fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,)
  SLEEP(val(tmpstr[5]))
  fukidasi()
  //ここに稀に出現する画像をチェックする処理を書く
  IF VWS = 4 THEN
    WHILE (CHKIMG(tmpstr[6])=FALSE)
    SLEEP(val(tmpstr[9]))
    WEND
  ELSE
    IFb Chkimg(tmpstr[6]) Then
      MMV(G_IMG_X, G_IMG_Y)
      BTN(LEFT,CLICK)
      VSW = val(tmpstr[7])
    ELSE
      VSW = val(tmpstr[8])
    ENDIF
  ENDIF
wend

537 :名無しさん@お腹いっぱい。:2016/02/11(木) 01:00:59.88 ID:2xnip+Tc0.net
せめて構造体が使えればねぇ

538 :名無しさん@お腹いっぱい。:2016/02/11(木) 01:02:56.58 ID:PFox1uTL0.net
もしかしてselect処理毎に稀の画像チェックしたいけどselendの前に書いちゃって
毎回通らなくてうまくいかないよ!っていうことだったりするのかな?

539 :名無しさん@お腹いっぱい。:2016/02/11(木) 01:21:45.52 ID:0c+JQyo+0.net
classで構造体っぽい物は作れるけど複数のインスタンス持てるわけでもないしあんま意味ないのがな

540 :名無しさん@お腹いっぱい。:2016/02/11(木) 02:19:21.45 ID:ZBhxJU1k0.net
PowerShell ではクラスを扱えるけど、クラスを作れなかったと思う。

UWSC も、クラスのデータを他言語から受け取って接着剤みたいに使えばいいんじゃね?

541 :526:2016/02/11(木) 03:35:07.99 ID:b+3w0CHx0.net
UWSC使い始めてまだ2日目で色々酷くてすみません( ;∀;)
やりたいこととして無限ループを行い、ゲーム内の画像を検出してクリックして放置が
できるようにしたかったのですが、先述の通り稀に押さないと進めない物が出てきまして、それのせいでCASE1に飛ばされてしまい
マクロが止まるという事態が起きてました。

542 :名無しさん@お腹いっぱい。:2016/02/11(木) 03:39:32.11 ID:b+3w0CHx0.net
>>534
527さんの解釈で合ってます!
色々検索したり、知恵袋使って質問していたのですがその仕組みが作れませんでした...

>>536
529さんのが自分からすると高度すぎてよく分からない状態です( ;∀;)

543 :名無しさん@お腹いっぱい。:2016/02/11(木) 04:06:02.47 ID:BAwW+2D70.net
エフェクトや透過処理等で素材画像とは完全一致しないケースがある
クリックはあくまでイベントを送ってみようとするだけで溢れる可能性がある

次のループに入ってクリックをキャンセルしまったり
やり直しが出来ない重要なクリックの場合は
クリックを受け付けたか何らかの方法で確認しないと安定しなかったりする

動く時と動かない時があるのは大抵この辺

544 :名無しさん@お腹いっぱい。:2016/02/11(木) 04:17:43.34 ID:TCAo9itq0.net
始めて2日の>>541>>536見せても意味理解できないんじゃないかなあ
プログラム初心者とは書いてないけれど、どうなんだろう
始めて2週間の俺が低レベルなプログラムを書いてみる

WHILE !GETKEYSTATE(VK_ESC)
REPEAT

IFB CHKIMG("画像9.bmp")
BTN(LEFT,CLICK)
ELSE
BREAK
ENDIF

IFB CHKIMG("画像2.bmp")
BTN(LEFT,CLICK)
ELSE
BREAK
ENDIF



UNTIL FALSE
WEND

ん? これでよくね?
見つからない場合にBREAKすれば最初に戻るんだろ?

545 :名無しさん@お腹いっぱい。:2016/02/11(木) 12:23:32.74 ID:z++B2lkF0.net
>>544
状態遷移を省いちゃダメでしょ

546 :521:2016/02/11(木) 13:16:17.89 ID:okUdFipF0.net
>>502のやついまさらで「あ・い・う」も略しちゃってるけどやっと一応できた
配列の順次追加・戻り値・shiftに苦労したが勉強になって楽しかった
空の配列宣言が分からなくて if ref[0]<>""とか不恰好なのが入ってる
dim res[] = ""に代わる中身0の配列宣言分かりましたら教えてください
行数も構造もあまり499と代わらなくなっちゃったかな

dim lists[] = "a10 a20 a30","b100 b200","c1 c2 c3 c4"

print join(combi(lists),"<#CR>")

function combi(lists[])
 dim res[] = ""
 l_cur = lists[0];
 lists_s = slice(lists,1,length(lists)-1)
 l_cur_arr = split(l_cur," ")
 if length(lists_s)>0 then
  while length(l_cur_arr)>0
   l_cur_1 = l_cur_arr[0]
   l_cur_arr = slice(l_cur_arr,1,length(l_cur_arr)-1)
   for extra in combi(lists_s)
    if res[0]<>"" then Resize(res,length(res))
    res[length(res)-1] = l_cur_1+" "+extra+""
   next
  wend
  result = slice(res,0,length(res)-1)
 else
  result = l_cur_arr
 endif
fend

547 :名無しさん@お腹いっぱい。:2016/02/11(木) 13:26:13.37 ID:IFP6rTWM0.net
emptyとかvartypeとかそういう話でなく?

548 :名無しさん@お腹いっぱい。:2016/02/11(木) 13:32:44.65 ID:okUdFipF0.net
>>547
ごめんよく分からない。多分違うかな
dim res[] = ""の部分の時点でlength 1 になっちゃうから
length 0 の状態で宣言できるとそこは解決だと思うのだが

549 :名無しさん@お腹いっぱい。:2016/02/11(木) 14:11:26.72 ID:PFox1uTL0.net
>>542
単純に書くならこうなる
while 1
if chkimg("稀?")
elseif chkimg("9?")
elseif chkimg("2?")
elseif chkimg("3?")
endif
sleep(3)//?
wend
VSWでの全体の管理が必要なのかも怪しい
VSWに捕らわれすぎてやりたいことが出来なくなってる可能性もある
まぁそれぞれの画像の条件(出方・消え方)がいまいちわからないから・・・

550 :名無しさん@お腹いっぱい。:2016/02/11(木) 19:58:05.91 ID:RBcXi3Gt0.net
教えて下さい。
このソフトを使ってExcelシートに入力されている値を別の計算ソフトへ
自動で入力するというようなことはできますか?

551 :名無しさん@お腹いっぱい。:2016/02/11(木) 20:29:19.42 ID:WYFXkEVH0.net
http://www.dotup.org/uploda/www.dotup.org734791.zip.html

552 :名無しさん@お腹いっぱい。:2016/02/11(木) 21:05:25.66 ID:z8n8XQ1d0.net
>>524
msgbox(bitcount(7)) //3
msgbox(bitcount(3)) //2

function bitcount(n)
 if n<>0 then result=result+n mod 2+bitcount(int(n/2))
fend

553 :名無しさん@お腹いっぱい。:2016/02/12(金) 00:04:53.83 ID:k6qMW81B0.net
素人でこの言語最近知ったんだが、これ最強の言語じゃね?なんであまり知られてないの?

554 :名無しさん@お腹いっぱい。:2016/02/12(金) 00:12:52.00 ID:9BztTFw/0.net
いや、言語っていうか・・・

555 :名無しさん@お腹いっぱい。:2016/02/12(金) 00:45:52.84 ID:ywMkiNaR0.net
>>553
素人判断はやめましょう

556 :名無しさん@お腹いっぱい。:2016/02/12(金) 00:51:12.45 ID:GKVk0beF0.net
ゲームを自動化すると楽しく学べるね(´・ω・`)

557 :名無しさん@お腹いっぱい。:2016/02/12(金) 00:54:49.48 ID:8lgU0Jr00.net
やっちゃいけない領域な気がするけどね!

558 :名無しさん@お腹いっぱい。:2016/02/12(金) 01:26:26.97 ID:g/t37I2b0.net
言語というよりも録画再生機能が好き

559 :名無しさん@お腹いっぱい。:2016/02/12(金) 08:54:55.690943 ID:k6qMW81B0.net
いや、本当に素人でもブラウザとソフトウェアの自動連携を作れるってのはすごいと思うんやけど。なんで知られてないん?

560 :名無しさん@お腹いっぱい。:2016/02/12(金) 08:56:56.102247 ID:4JLZMnR80.net
お前の類友が無知だからかな

561 :名無しさん@お腹いっぱい。:2016/02/12(金) 10:04:21.88 ID:i4qbzSJ40.net
時間どうなってんのそれ

562 :名無しさん@お腹いっぱい。:2016/02/12(金) 13:27:19.60 ID:cKYrB2r90.net
>>549
元コード見るとすべてのステージで異なる画像を判別に使用してるわけじゃないから無理じゃね
画像4チェックのときだけケース分けするにしてもそれなら一括でステージ管理したほうがよさげ

563 :名無しさん@お腹いっぱい。:2016/02/12(金) 15:17:28.05 ID:8lgU0Jr00.net
>>562
不明な点が多すぎて基本的なやつになった

564 :名無しさん@お腹いっぱい。:2016/02/12(金) 16:30:11.66 ID:cKYrB2r90.net
>>546
UWSCで空配列は宣言できないからslice関数を使って普通の変数に入れる
初期値指定みたいに文字列使いたい場合はsplit関数も組み合わせる

DIM x = slice(SPLIT("a,b,c,d",","))
print x[2]

x=slice(SPLIT("e,f,g,h,i,j",","))
print x[2]

DIM y = slice(SPLIT("w,x,y,z",","))
DIM z = slice(y)
print z[2]

これ使えばよくある空配列の宣言に近いことはできる

565 :名無しさん@お腹いっぱい。:2016/02/12(金) 16:42:46.02 ID:cKYrB2r90.net
>>546
もちろんslice関数での変数x初期化前にlength(x)すると0は返ってくるけど
単純にxの文字列長が返ってきてるだけで要素数では無い点には注意が必要
戻値的には同じだから十分使えるけどね

566 :名無しさん@お腹いっぱい。:2016/02/12(金) 17:09:37.34 ID:UbZzXFO50.net
>>564
おー、ありがとう
>>564を直接どう使えばいいか分からなかったけど
(「変数x初期化前にlength(x)すると0は返ってくる」てのがどういう状態の時か分からず)
>>546の宣言部分を DIM res = slice(SPLIT("",",")) と
空文字列のsliceから取得したらlength 0で宣言できた

あとはphpと同じようにshiftarrayの戻り値としてあふれた値取得できたり
式ひとつで配列に値を追加できるとかなりシンプルに出来るんだが
そこはUWSCの仕様ってことであきらめるしかなさそうかな〜

567 :名無しさん@お腹いっぱい。:2016/02/12(金) 17:20:03.48 ID:cKYrB2r90.net
>>566
言い方悪かった
>変数x初期化前にlength(x)すると0は返ってくる
DIM x //初期値を与えない
print length(x) //xの文字列長0が返る
x = slice(SPLIT("a,b,c",","))
length(x) //x[]の要素数の3が返る

って意味だったんだけど確かに宣言時に slice(SPLIT("",",")) で初期値設定しておいたほうが
後からコード見たとき変数の用途が解りやすくていいね
使わせてもらいます

568 :名無しさん@お腹いっぱい。:2016/02/12(金) 17:32:07.53 ID:bdQKZ6P80.net
長さ0のsafearrayはこれで作れる
safearray(0,-1)

569 :名無しさん@お腹いっぱい。:2016/02/12(金) 17:37:10.80 ID:ckS+rd0L0.net
phpはデフォで色々な関数が用意されてるだけなんだから
array_shiftと同じ関数を自作すりゃいい

570 :名無しさん@お腹いっぱい。:2016/02/12(金) 17:42:19.65 ID:UbZzXFO50.net
>>567
なるほど> DIM x
しかしそれだとその後のResizeで「配列ではありません」エラーになっちゃうな
いずれにしても宣言わかってよかったですありがとう

1行での配列の追加もその線で出来ないかと
res = slice(split(join(res,","),",")) とトリッキーにやってみたが上手く行かず
もし出来たらまた貼らせていただくかも

>>568
おー、ほんとだスッキリ

>>569
元の配列操作しつつ戻り値も得るって出来るのかな?

571 :名無しさん@お腹いっぱい。:2016/02/12(金) 19:27:59.43 ID:k6qMW81B0.net
ブラウザ操作する場合、uwscとエクセルvbaはどちらがいいの?同じ?
それなら、ページが多いエクセルの方が良くね。

572 :名無しさん@お腹いっぱい。:2016/02/12(金) 19:32:42.63 ID:dphmFixd0.net
COM操作で解決する範囲の自動化なら同じなので自分が使いやすい方でやれば良いのです

573 :名無しさん@お腹いっぱい。:2016/02/12(金) 19:53:59.16 ID:i4qbzSJ40.net
alert窓 を閉じるのは VBA では基本的に出来ないと思う。

でも、出ることが分かってる「ファイルを保存する」ダイアログは
SendKeys でコントロールできるらしい。

574 :名無しさん@お腹いっぱい。:2016/02/13(土) 01:10:16.19 ID:smbIwZzf0.net
UWSCでクワインとなるソースコードを教えてください
なるべく最短で、出力はmsgboxでお願いします

575 :名無しさん@お腹いっぱい。:2016/02/13(土) 01:15:32.21 ID:hFFChm3k0.net
誰かがそれを出してもwikiとかに追記に行くなよ

576 :名無しさん@お腹いっぱい。:2016/02/13(土) 09:26:54.53 ID:7eVjLkIC0.net
MOUSEORG(id,0)
if chkimgx(img_name, id) then btn(left, click, G_IMGX_X, G_IMGX_Y)

これだと画像より少し左上にずれてクリックする
修正して使ってきたがこれってしかたないのか?

577 :名無しさん@お腹いっぱい。:2016/02/13(土) 14:16:58.30 ID:9elgN/hL0.net
statusでウィンドウの幅と高さとクライアント幅とクライアント高さ
この辺が違ってたらその可能性もある

578 :名無しさん@お腹いっぱい。:2016/02/13(土) 18:52:01.69 ID:abY5DV330.net
>>576
使用した画像の一番左上を原点とするからだよ
だから何も指示しないと左上に行く

579 :名無しさん@お腹いっぱい。:2016/02/13(土) 19:32:42.79 ID:AtiKTq4d0.net
569の言う左上って画像の中心より左上って意味なのか?

画像の左上角より左上なのかと思った

580 :名無しさん@お腹いっぱい。:2016/02/13(土) 19:56:20.37 ID:2icoSvut0.net
chkimgってサーチ範囲の座標記述すると見た目が悪くなるのが嫌いなんだけど
俺が作ってるのはサーチ範囲は変わらないから全部同じ数字入れるのがだるい
かといって書かないと遅くなるらしいし
良い方法ないかな
新しく関数作って固定させるぐらいしか思いつかん

chkimgA()

function chkimgA(PARAM_IMG)
ifb chkimg( "PARAM_IMG" + ".bmp", 1, x1, y1, x2, y2)
result = true
else
result = false
endif
fend

581 :名無しさん@お腹いっぱい。:2016/02/13(土) 20:07:46.86 ID:hFFChm3k0.net
基本的には関数化しかない
例外を記述する時に楽するためにデフォルト引数使うと良いかもね

582 :名無しさん@お腹いっぱい。:2016/02/13(土) 20:08:01.19 ID:JoYsMZYi0.net
定数作れよ

583 :名無しさん@お腹いっぱい。:2016/02/13(土) 20:15:10.67 ID:2icoSvut0.net
>>581
やっぱそうか

デフォルト引数ってのは
function chkimgA(PARAM_IMG="")
みたいに書けばいいってこと?

>>582
定数作れってのはCONST使えって言うこと?

584 :名無しさん@お腹いっぱい。:2016/02/13(土) 20:26:32.08 ID:hFFChm3k0.net
全部聞いていたら何も造れないぞ
少しは考えろ

//デフォルトの範囲(面倒だからXのみ)
CONST checkImageRange_X = 100

checkImage("test1") //デフォルト引数な呼び出し
checkImage("test2", 200) //例外的な呼び出し

procedure checkImage(imageName, x = checkImageRange_X)
 Print imageName + "=" + x
Fend

585 :名無しさん@お腹いっぱい。:2016/02/13(土) 20:37:26.58 ID:2icoSvut0.net
ごめん、全部聞いたつもりじゃなくて言葉の意味、意図がわからないから聞いただけなんだ

586 :名無しさん@お腹いっぱい。:2016/02/13(土) 21:11:34.08 ID:2icoSvut0.net
デフォルト引数とかCONSTについての知識があまりないからググって考えたんだけど
>>584は例外を引数で指定するためのやり方、ということだよね?
自作関数そのものの機能としては>>580で問題ないよね?

俺は例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど、
>584のやり方で例外のために記述を加えたほうがいいのはどうして?

587 :名無しさん@お腹いっぱい。:2016/02/13(土) 21:19:16.44 ID:JoYsMZYi0.net
>例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど

だったら関数作んなくていいって
定数作れ

588 :名無しさん@お腹いっぱい。:2016/02/13(土) 21:30:44.76 ID:hFFChm3k0.net
デフォルトな条件なら呼び出し側がシンプルに成る
前後の処理を共通化できるってのが基本的なメリット

同じ処理を複数の箇所に記述すると変更する必要が生じた時に
対応が漏れる恐れがある

少し上にあった条件を配列に入れてループで回すコードみたいに
回りくどくても変更に対応しやすいコードの方が便利かもねって話

589 :名無しさん@お腹いっぱい。:2016/02/13(土) 21:39:33.04 ID:2icoSvut0.net
>>587
ごめん、その定数作れの意味がわからない

>>588
関連の話として、例外を指定できる方法を教えてくれたということかな?
どうもありがとう

590 :名無しさん@お腹いっぱい。:2016/02/13(土) 21:43:21.10 ID:AtiKTq4d0.net
>>580
なんで関数内にif文書いてるの?

function chkimgA(〜)
 result = chkimg(〜
fend

これだけでいいじゃん

591 :名無しさん@お腹いっぱい。:2016/02/13(土) 23:11:25.36 ID:eCDlWNP70.net
初心者の質問です。
fukidasi(

592 :名無しさん@お腹いっぱい。:2016/02/13(土) 23:15:10.41 ID:eCDlWNP70.net
あれ、切れちゃった
初心者の質問です。
 fukidasi("ゲームウィンドウ上でSキー") //Sキー入力待ちの告知
 While !(GETKEYSTATE(VK_S)) //Sキー入力まで無限ループ
 sleep(0.1)
 Wend
 fukidasi() //入力待ち告知の吹き出しを消す
 winid = getid(GET_ACTIVE_WIN)
この某hpのサンプルコード使ってbluestacksのID取得をして
MOUSORG(winid,0,0)では動くのですがそれ以外の数値だと動きません
(id,2,2)でバックで動かしたいのですがどうすれば直りますか?

593 :名無しさん@お腹いっぱい。:2016/02/14(日) 00:41:28.44 ID:V4/m1Afh0.net
仮想環境を操作するのはUWSCでは無理

594 :名無しさん@お腹いっぱい。:2016/02/14(日) 08:59:07.59 ID:4bRrPD2X0.net
>>593
なるほど バックで動かすのはあきらめます
ありがとうございました

595 :名無しさん@お腹いっぱい。:2016/02/14(日) 09:05:22.19 ID:c3uHBcDI0.net
自分が裏だと描画を控えるアプリに対して
描画させる事は基本的に前面にするしかない

596 :名無しさん@お腹いっぱい。:2016/02/14(日) 09:28:54.14 ID:Oo27r2AD0.net
以前書いた奴

ID = GETID("BlueStacks App Player","WindowsForms10.Window.")
// MOUSEORG( ID, MORG_CLIENT or MORG_DIRECT, MORG_BACK ) // MORG_DIRECT だとAndroidが反応してしまう。
// MOUSEORG( ID, MORG_CLIENT ) // MORG_CLIENT だと ChkImgX と標準関数とで原点位置が食い違う。
MOUSEORG( ID )

>>593-594 の流れはおかしい。
仮想環境でも画像で操縦は可能だし
>>592 は「MOUSORG(winid,0,0)」では動くと書いてるのに。

>>595
BlueStacks は裏でも描画する
XP時代は隠れた部分は描画されなかったけど

597 :名無しさん@お腹いっぱい。:2016/02/14(日) 11:08:44.73 ID:4bRrPD2X0.net
>>596
よく考えたらそうですね・・・
その後の処理はifb CHKIMG→BTNでクリックさせる→スリープ1秒 を何パターンも作ってるだけの簡単な
ゲーム操作をさせるマクロなんですが色々ぐぐっても原因わからずでした

598 :名無しさん@お腹いっぱい。:2016/02/15(月) 01:57:12.49 ID:0dWxJSmB0.net
画像検索の特殊変数G_IMG_X,G_IMG_Yってのは
ローカル変数扱いなんでしょうか?

画像検索でヒットしたG_IMG_X,G_IMG_Yの値を
別の関数で使いたい場合は、引数で渡すか
グローバル変数を使うかしかないんでしょうか?

599 :名無しさん@お腹いっぱい。:2016/02/15(月) 07:11:02.66 ID:X50nyRyC0.net
>>598
グローバルだったとしても、そういうのは引数で渡す癖をつけたほうがいいよ。
グローバル変数に入れなおすのもNG。

600 :名無しさん@お腹いっぱい。:2016/02/15(月) 12:48:14.51 ID:fuyjfYD10.net
引数が増え過ぎてきた場合、普通はどうしたらいいの?構造体もないし

601 :名無しさん@お腹いっぱい。:2016/02/15(月) 14:28:14.98 ID:lRH39zN60.net
>>600
個人的にはそれが必要な情報なら引数にする事を厭わないかな

でもクラス(モジュール)を使って必要な情報を整理して保持できるならそっちを優先する
グローバル変数は最後の手段だけどクラスのメンバ変数は使用を躊躇する必要ないしね

602 :名無しさん@お腹いっぱい。:2016/02/15(月) 15:17:21.06 ID:mpgO3egX0.net
引数を配列で渡すとか、関数を分割するとか

603 :名無しさん@お腹いっぱい。:2016/02/15(月) 17:00:42.69 ID:ml/Gl3ot0.net
ワシにはなんのこったかさっぱり
UWSCはプログラミング未経験者が使うツールだと思ってた

604 :名無しさん@お腹いっぱい。:2016/02/15(月) 18:51:08.74 ID:iW+KTqvB0.net
>>603
その話題について知りたいなら素直に知りたいって書いたほうが得だよ
逆にどうでもいいなら黙ってようよ

605 :名無しさん@お腹いっぱい。:2016/02/15(月) 18:55:50.05 ID:iV3+q7Ob0.net
うざいからお前出てって

606 :名無しさん@お腹いっぱい。:2016/02/15(月) 20:36:48.80 ID:ml/Gl3ot0.net
わかったよもう来ないよ
そのかわり質問スレに誘導してくれ

607 :名無しさん@お腹いっぱい。:2016/02/15(月) 20:47:06.23 ID:TntgXZj60.net
>>606
うざいと言われてるのは>>604の方だと思うがな

608 :名無しさん@お腹いっぱい。:2016/02/15(月) 20:54:00.51 ID:VKY0mmNh0.net
もっと短いクワイン書けないでしょうか?自分の実力ではこれが限界です
UWSC上級の人よろしくお願いします

a=chr(34);b=

609 :名無しさん@お腹いっぱい。:2016/02/15(月) 21:00:29.60 ID:VKY0mmNh0.net
なんか切れたんでこっちに貼りました
https://gist.github.com/anonymous/e522e8a7f110f3238185

610 :名無しさん@お腹いっぱい。:2016/02/15(月) 21:24:10.17 ID:ekeGmjS90.net
特定の武器を一回だけ使って元の武器に戻す

特定の武器に持ち替えて使用する
↑ここまではUWSCでできるんだけど
直前に持っていた武器に戻す
↑識別方法がなくて諦めた

611 :名無しさん@お腹いっぱい。:2016/02/15(月) 21:45:50.39 ID:k4y1Ql7g0.net
日記か

612 :名無しさん@お腹いっぱい。:2016/02/15(月) 22:00:26.19 ID:0XdlPD550.net
最近恥ずかしげもなくゲームマクロの質問ばかりだな

613 :名無しさん@お腹いっぱい。:2016/02/15(月) 22:05:32.67 ID:GSjAFn9q0.net
>>610
お前が何を見て直前に持っていた武器だと認識するのかを
そのままコードに書けばできるだろ

お前も認識できないなら知らん

614 :名無しさん@お腹いっぱい。:2016/02/15(月) 22:21:08.17 ID:ZQ5I0KNy0.net
>>603
特定の画像出現をポーリングで待機しながらタイムアウトとか考えるのは組み込みに近いから
言語自体はシンプルだけどコード書くのはそこそこ経験必要よ

615 :名無しさん@お腹いっぱい。:2016/02/15(月) 22:37:12.48 ID:ScNC+Izw0.net
ゲームで使うのはいけないけど
楽しく学べるから一番上達が早いのよね
(´・ω・`)

616 :名無しさん@お腹いっぱい。:2016/02/15(月) 22:42:37.20 ID:6/AzYlfK0.net
>ゲームで使うのはいけないけど
どういうこと?

617 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:01:56.67 ID:TntgXZj60.net
ゲームマクロ使用がいけないことであるっていう常識が無い奴がいるのは戦慄を覚えるね

618 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:08:31.27 ID:6/AzYlfK0.net
ソフトが良くてゲームがいけない意味が分からん
最近もパズドラ攻略機械組んでる動画みてただすげえって思ったけど
もともとゲーム内にプログラム要素あるのもあるし

619 :imi:2016/02/15(月) 23:11:18.16 ID:Et+z3L6S0.net
君規約とか一切読まないタイプ?

620 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:12:37.28 ID:ZQ5I0KNy0.net
オフゲなら好きに汁オンゲなら垢バンされても泣かない
ここはマクロの善悪を語る場ではないので

621 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:12:46.12 ID:lRH39zN60.net
利用規約違反になるので本来公言するもんじゃないのよ
だからゲームのためのノウハウ教えてと言われると供与できない
建前でゲームじゃないフリしてろ

622 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:15:05.33 ID:6/AzYlfK0.net
あんまり読まないけどマクロ禁止とか書いてあるんか
そういうのって一定ジャンルのみとか一部じゃないの

623 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:18:49.53 ID:lRH39zN60.net
許されているジャンルならそのスレでマクロの話をすれば良い

624 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:23:35.26 ID:6/AzYlfK0.net
あー課金したりネットワークで他人と競う系のゲームか
自分そういうのぜんぜんやらないからな
「ゲーム」って一まとめで言うのは御幣あるじゃないか
ゲーム名明記してない限り規約に違反してるかどうかは分からんわけでしょ

>>623
その論理だとすべてのマクロの話Windowsスレとか別スレでしろって話になっちゃうんじゃ

625 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:30:04.89 ID:lRH39zN60.net
利用規約にマクロが禁止されているツールならそうなるかもね

だから規約違反しているか判断できないゲームの話はするのは勝手けど
供与は出来ないからボカせというのが私の主張

626 :名無しさん@お腹いっぱい。:2016/02/15(月) 23:31:45.80 ID:0XdlPD550.net
いやー規約違反云々もあるが
調べもしない子供が多いからここでゲームの質問は暗黙の了解でNGだったんだが
最近は普通に受け入れられるようになったんだなーと思った

627 :名無しさん@お腹いっぱい。:2016/02/16(火) 00:26:03.06 ID:Qfud2JiX0.net
ゲームの規約はUWSCの規約じゃないからそれ自体はどうでもいいんだけどね。
「何をやりたいか」を有効な言葉に変換できずに、ゲームの動作そのまま質問しちゃうような人だと
自分で何もせず結局全部丸投げしてくる人ばかりだから叩かれたというだけ。

628 :名無しさん@お腹いっぱい。:2016/02/16(火) 00:44:27.17 ID:i6aChOQJ0.net
ゲーム関連で荒れなかった試しがないからな

629 :名無しさん@お腹いっぱい。:2016/02/16(火) 02:56:23.77 ID:QoFwoTib0.net
A⇔Bって決まってるなら
AからBは出来るんだから(Bを探した?)
その逆をやればいい(Aを探す?)

もし途中からAと同種のやつがもりもり増えていくとかだとめんどいけど
まぁAが増える可能性もあるということはBも増える可能性があるわけで・・・

630 :名無しさん@お腹いっぱい。:2016/02/17(水) 04:35:41.66 ID:kb0x6ds+0.net
ゲームのプレイ行為そのものが報酬であるとデザインされたオフゲと違って、
ネトゲはゲームのプレイ行為を手段として主に自己顕示による自己実現気分を
味わうヤクであり、ソシャゲはそのヤクの販売ルート拡大とマネタイズに
成功した事業なのである。
仮想自己実現を売り物にするネトゲ・ソシャゲ業者にとって、
ゲームのプレイ行為そのものが報酬となる程に、
ゲームそのものを工夫して面白くするのは過剰品質であり粗利が減るので、
あえて、いわゆるクリックゲーと呼ばれる、ゲームというより単重労働を
ユーザーに課すのが通例であり、これを自動化されては産業革命が起きてしまい
商売が成り立たないので規約で禁止する率はほぼ100%。
よってゲームの自動化需要で圧倒的多数はソシャゲであり、ほぼ無確認でも間違いない。
そしてゲーム開始時にソシャゲ業者から口を酸っぱくして明示的に禁止されていることに
気づかず、臆面もなく赤の他人にホイホイ業者との契約違反方法を聞いて恥じない愚者は
知能的にプログラミングを教える段階にない。

631 :名無しさん@お腹いっぱい。:2016/02/17(水) 04:53:53.69 ID:hPLvEUTu0.net
このスレでゲームの話題が禁止されてるのは
オンライン/オフラインに限らず全てなので
別にゲームの規約違反とは関係ないと思うよ。

たぶん、ゲームの質問するやつって常に新規で初歩的な質問なんで
それ以外の話ができないとかそんなんだろ。

632 :名無しさん@お腹いっぱい。:2016/02/17(水) 04:57:14.01 ID:hPLvEUTu0.net
ソシャゲではこういうことはないけど、一般的なオンラインゲームでは
ゲーム側でUWSCが動かないようにされてるから、そういうのは関係あるかも


> 42 :名無しさん@お腹いっぱい。:2012/04/27(金) 08:17:32.89 ID:n7YHJBnV0
>  作成したマクロをオンラインゲームで実行しようとすると動作しませんでした
>  ググってUWSCをUNKOに変更してもダメでした・・・
>  ゲーム側でマクロ対策されてたら出来ないのでしょうか?
>
> 43 :名無しさん@お腹いっぱい。:2012/04/27(金) 10:16:31.41 ID:hwEpQpsX0
>  >>43
>  マクロ対策されてたら出来ないから
>  仮想PCでゲーム走らせてやるんだよ

633 :名無しさん@お腹いっぱい。:2016/02/17(水) 04:57:20.17 ID:pIoDNX4q0.net
そんなゲーム業者の都合なんてどうでもいいことだろう。
重要なのは、このスレの住人が答えたくなるような質問ができるかどうかだ。

634 :名無しさん@お腹いっぱい。:2016/02/17(水) 05:06:46.52 ID:hPLvEUTu0.net
ゲームの仮想化では必需品だった VMware Player も開発中止になっちゃって今後どうしたらいいのやら。

マイクロソフトの Hyper-V を VMware Player のように使うことは可能だけど
マイクロソフト製品は画面表示に通信系の技術を使ってて
帯域を減らすために画像圧縮を使ってるせいで
常に画面はノイズが入った状態で
UWSC の画像認識では動かない・・・。

Hyper-V で音を出すためには Windows Server または Ultimate が必要だ。
7月までなら無償アップグレードが可能だから、
とりあえず Hyper-V 環境の Winddows を一つくらい
無償アップグレードしといたほうがいいかも。
音を出す程度のことでそんなことが必要なくらい、Hyper-V は不便なんだぞー。

そして、ほかの仮想化ソフトは全然使い物にならないんだぞー
※ Mac の Parallelsだけは例外

KVM とかは Linux では安定して動くらしいけど
Windows は満足に動かせないらしい。
設定もめんどくさいし。

635 :名無しさん@お腹いっぱい。:2016/02/17(水) 05:25:15.26 ID:GIOAQLSV0.net
煽りとかじゃないんだけどゲーム以外だと何に使ってるの?

636 :名無しさん@お腹いっぱい。:2016/02/17(水) 06:32:41.54 ID:beI7tmqh0.net
>>635
業務

637 :名無しさん@お腹いっぱい。:2016/02/17(水) 08:13:26.19 ID:/1ajP00K0.net
ゲームの話になると仮想環境とかUWSC対策の回避方法の話ばかりになる
ゲーム操作一般スレ作っておいて誘導したほうがお互いのためにもいいよ

638 :名無しさん@お腹いっぱい。:2016/02/17(水) 08:15:00.12 ID:rcyqh9600.net
動画見てるときにでてくる広告クリック

639 :名無しさん@お腹いっぱい。:2016/02/17(水) 08:21:56.99 ID:91rSfnp00.net
Windows起動時に窓を残したまま立ち上がる常駐アプリ(LINEとか)のウィンドウクローズ
マイドキュメントの定時バックアップ、手動でWindows終了した時のバックアップの自動化
株取引アプリの起動時、アプリ側で保存されない設定の自動セット
チャートアプリで毎回同じ流れの操作をダブルクリックで実行

640 :名無しさん@お腹いっぱい。:2016/02/17(水) 10:58:48.44 ID:dGarNdwa0.net
バックグラウンドで動いてて欲しいけどよく止まるソフトの異常検知と再起動
ビューアで見ている画像にフォルダ名をつけてマイドキュメントにコピー

641 :名無しさん@お腹いっぱい。:2016/02/17(水) 11:10:03.79 ID:7mLT8oDH0.net
SPEAK関数使ったマクロでカーナビ音声認識機能のデバッグ
海外向けナビは音声認識機能がデフォルトなので全ての機能に音声認識が割り当てられてるから人の手でやると超大変

642 :名無しさん@お腹いっぱい。:2016/02/17(水) 19:23:28.68 ID:CDYU1lyI0.net
>>638
スケベ

643 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:05:55.63 ID:Z2OJH21P0.net
a〜z+1〜9の中からランダムに入力したい場合ってどうやればいいですか?

644 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:38:43.99 ID:7mLT8oDH0.net
>>643
ざっくり設計
1.該当のAscii文字コードが入った配列を作成
2.配列の添数をランダムで生成
3.chr関数を使って文字に変換

Ascii文字コードでA と aは別物なので必要に応じて修正拡張

//関数呼び出しサンプル 戻り値はstr
print fnc_RandomStr()

//0-9,a-zをランダムで生成する関数
function fnc_RandomStr()
dim ts[35],i
for i= 0 to 9
ts[i] = Asc("0")+i
next
for i= 10 to 35
ts[i] = Asc("W")+i
next

result = chr(ts[random(36)])
fend

645 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:44:26.11 ID:Y0AJ5NIx0.net
kbd(random(VK_Z - VK_0) + VK_0)
とかでいいんでない?

646 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:53:36.29 ID:7mLT8oDH0.net
それだとVK_0からVK_Z-1までの文字コード出すだけだから
58(:)-64(@)の記号まで含まれちゃうし多分Zは出てこないね

647 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:54:40.60 ID:5diPod+M0.net
丸投げに応じるなよ・・・

648 :名無しさん@お腹いっぱい。:2016/02/17(水) 23:56:59.22 ID:7mLT8oDH0.net
ランダムでの文字列生成はたまにコード書いておかないと大事な事抜け落ちるからな

649 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:03:21.41 ID:eoG2gd950.net
>>648
わかる、一回の実行で使い回す頻度を考えて準備と取得は分けたりもするよね
グローバル変数を汚染をしないためにもクラス使った方が良いパターンだと思う

>>647
自分も丸投げは検索キーワードを教える位までかな
でも対処は個人の自由かと
(勿論ツッコミを入れるのも自由だと思うので非難はしていない)

650 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:17:37.78 ID:OlbQAj/J0.net
>>649
そうそう 引数に渡すクラス内の配列サイズ取得してrandomの範囲決めて関数自体は汎用化させた方がスマートだったね
randomの取得範囲が以下か未満かもたまに怪しくなるしランダム文字列生成ではいつもコードレビューが厳しくなる

651 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:43:39.97 ID:RFqQoptg0.net
>>649
>>2
●質問したい方へ
「○○作れますか?」→ 可能か不可能かを聞いているのなら答えは「作れる」
「○○が作りたい」→ 自分が作れば?並大抵の事ならググれば似たようなスクリプトや知識が見つかる
「○○作って下さい」→ 依頼スレじゃありません。
過去ログを見る、検索する等、自分で出来る事を書き込む前にするように。
自力で作ったのを晒すか、具体的な解らない場所を提示して、改善点や解決策を求めるようにしましょう。
備考:PRI NT文を利用してデバッグする。管理者権限で起動してみる。AEROを切る。fcuc.uwsを走らせてみる。


丸投げに対応する奴は荒らしと同類
この手のスレでは鉄則だろ

652 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:49:06.01 ID:YGG8mhQL0.net
コードを晒す目的でオススメのWebサイトありますか

653 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:52:04.81 ID:OlbQAj/J0.net
この話題止めね?
コード書いた本人が自分のためにコード書いてんだからコピペ張るよりコード張ろうぜ

654 :名無しさん@お腹いっぱい。:2016/02/18(木) 01:11:07.18 ID:MFRYafp00.net
そもそも>>643を見ただけでは丸投げかどうかわからないと思うが

655 :名無しさん@お腹いっぱい。:2016/02/18(木) 02:06:21.02 ID:dUe+VgX70.net
丸投げでも面白い問題ならパズルのように解きたくなるものもある
解かれないってことは問題がうんこ

656 :名無しさん@お腹いっぱい。:2016/02/18(木) 08:09:18.41 ID:PV/kQd7A0.net
より短いクワインができました
https://gist.github.com/anonymous/3043708044a56e98104e

657 :名無しさん@お腹いっぱい。:2016/02/18(木) 08:33:26.58 ID:HYi07iZS0.net
ヘルプにある仮想キーコードの説明って、プログラマ経験者前提過ぎなんだよね。
↓こういうのテンプレに入れようぜ
http://www.comrade.co.jp/ftp/km2/manual/Properties/VKeyCode.htm

658 :名無しさん@お腹いっぱい。:2016/02/18(木) 08:38:09.64 ID:HYi07iZS0.net
あとこれな

SendStrによる文字列送信
http://siromasa.html.xdomain.jp/uwsc/u_term/75_Mojinyuuryoku.html

659 :名無しさん@お腹いっぱい。:2016/02/18(木) 08:39:32.11 ID:eoG2gd950.net
ヘルプファイルの
「スクリプト」「その他項目」「予約後、関数一覧」
の「定義済み仮想キー」にあるのよ

660 :名無しさん@お腹いっぱい。:2016/02/18(木) 19:09:42.48 ID:HYi07iZS0.net
いや、仮想キーが定数であることも、具体的な値も書いてないでしょ。
Aに1加算したらBになるって、
何のプログラミング経験もなくあのヘルプだけ見て判る人は相当才能あるよw

661 :名無しさん@お腹いっぱい。:2016/02/18(木) 22:34:44.95 ID:8Ev3PTaE0.net
そらそういう使い方をして欲しくないからでしょ

662 :名無しさん@お腹いっぱい。:2016/02/18(木) 23:06:12.24 ID:6tMhXUrt0.net
確かに予約語なんていつ内部値が切り替わるかわからんし
それこそ今後メインストリームがUnicode一辺倒になってUWSCが内部処理含めてUnicode対応なんて事が起きたら
現状VK_の内部値がAsciiコードである前提で書かれてるソースなんて不具合でまくる予感しかしないもんな
初心者なりに変にテクニックに依らず素直なコード書けるってのも十分に才能ではあるわけだし

663 :名無しさん@お腹いっぱい。:2016/02/19(金) 07:52:42.34 ID:TWzjjF0u0.net
s=split("s=split( msgbox(s[0]+chr(34)+join(s)+chr(34)+s[2]) );eval(s[1])");eval(s[1])

664 :名無しさん@お腹いっぱい。:2016/02/19(金) 11:27:58.73 ID:IPiQDr2h0.net
Googleの画像認識/分類API、Cloud Vision APIが誰でも使える公開ベータへ
http://jp.techcrunch.com/2016/02/19/20160218google-opens-its-cloud-vision-api-to-all-developers/

こういうのってuwscでもなんとかして使えるようにしたりできるのかな
やっぱり他の言語学ばなきゃダメか

665 :名無しさん@お腹いっぱい。:2016/02/19(金) 12:05:56.90 ID:2x32U0G20.net
それの使い方って、単に画像データをPOSTするだけでいいんじゃないの?

666 :名無しさん@お腹いっぱい。:2016/02/22(月) 01:02:46.99 ID:P6qbXDjw0.net
DIM hoge[2][2] = 0,1,2, 3,4,5, 6,7,8
たとえば、こんな感じで二次元配列を定義しまして
hoge[0][2] + hoge[1][2] + hoge[2][2] を求めたいんですけど
CALCARRAYで出すには、どう書けばいいんでしょうか?

試しに、MSGBOX( CALCARRAY(hoge[][2],CALC_ADD,0,2) )
としてみましたが、「21」と表示されました
どうも、hoge[2][0] + hoge[2][1] + hoge[2][2]を計算してるようです

CALCARRAYでは、無理ですか?

667 :名無しさん@お腹いっぱい。:2016/02/22(月) 01:51:26.70 ID:wzprd0m10.net
デバッグすればわかるけれど hoge[][2] では内部的に hoge[2] として扱われている

CALCARRAYを使って合計や平均を求めたいなら
行列から指定列を抽出した配列を返す必要がある

DIM hoge[][2] = 0,1,2, 3,4,5, 6,7,8
print CALCARRAY(GetColumnArray(hoge, 2), CALC_ADD)

Function GetColumnArray(array[][], column)
 rowLength = Length(array) - 1
 columnLength = Length(array[0]) - 1

 result = SAFEARRAY(0, rowLength)

 If 0 < rowLength And 0 < column And column <= columnLength Then
  For i = 0 To Length(array) - 1
   result[i] = array[i][column]
  Next
 EndIf
Fend

668 :名無しさん@お腹いっぱい。:2016/02/22(月) 02:02:09.37 ID:wzprd0m10.net
補足すると合計や平均等の単機能なら関数内で直接計算させた方が当然ながら速いからね
合計も欲しいし平均も欲しい等のケースなら一旦指定列の配列を変数に入れるためにこんな感じの関数を使った方が効率が良くなる

669 :名無しさん@お腹いっぱい。:2016/02/22(月) 06:06:44.36 ID:P6qbXDjw0.net
>>667
ありがとうございました

670 :名無しさん@お腹いっぱい。:2016/02/23(火) 20:44:15.98 ID:gO96bxCq0.net
上にもあったけどやっぱ配列系関数は説明が難しいなー
なんか通常の宣言と混ざる傾向にある
このヘルプ少し配列について改善できないかね
><変数>
> 変数に型はありません

671 :名無しさん@お腹いっぱい。:2016/02/23(火) 21:03:47.15 ID:iXx0mMI80.net
そこの補足で十分だと思うけれどなぁ

ローカル変数には宣言は要りません(Option指定で変更可:DIM 変数名)
多次元配列には宣言が必要: DIM 変数名[数]
(配列での初期値代入: DIM X[2]=1,2,3  配列数の省略可 DIM X[]=1,2,3 )

個人的には再利用するスコープが短いローカル変数は意図的に宣言しないようにしている
(宣言する=グローバル変数かモジュール変数か配列)

672 :名無しさん@お腹いっぱい。:2016/02/25(木) 09:24:51.24 ID:x6EjoBIB0.net
× 過去ログには有益情報の宝庫
○ 過去ログには有益情報がたくさんある
○ 過去ログは有益情報の宝庫

673 :名無しさん@お腹いっぱい。:2016/02/25(木) 16:03:26.26 ID:fkkSYKXG0.net
質問です
ループでフォルダ監視し待機、ファイルが送られたら動作実行しまた待機
これのプログラム終了時に1回だけ別の動作を実行させる方法無いでしょうか?
出来ればダイアログなしで
別のバッチファイルでも実行しUWSCの常駐終了後実行とか出来ればいいんですが
方法が分かりません、宜しくお願いします

674 :名無しさん@お腹いっぱい。:2016/02/25(木) 16:08:19.62 ID:ukh1Qs010.net
>>673
なにを悩んでるのかよくわからない
こんな感じじゃないの
while true
 if ファイルが北 then
  ファイルが来た時の処理
 endif
 if 終了アクション then
  最後の処理
  終了処理
 endif
wend

675 :666:2016/02/25(木) 16:55:06.89 ID:fkkSYKXG0.net
>>674
終了アクションは閉じる以外無いんですが
どうやって検知すれば良いのでしょうか?

676 :名無しさん@お腹いっぱい。:2016/02/25(木) 17:09:05.93 ID:ukh1Qs010.net
>>675
プロセスの終了で強制終了してるとかってこと?
使用状況によるけど、そういうスクリプトなら
終了用の空ファイルを送る、そのためのスクリプト組むとか

677 :名無しさん@お腹いっぱい。:2016/02/25(木) 17:19:09.87 ID:sdAeFe3E0.net
PRINT GET_CUR_DIR
DOSCMD("cd /d C:\Windows\System32")
PRINT GET_CUR_DIR

なんでカレントディレクトリが変わらないのだろう?

678 :名無しさん@お腹いっぱい。:2016/02/25(木) 17:32:30.68 ID:/glPAZis0.net
DOSCMD(チャイルドプロセス)のカレントディレクトリしか移動していないから

スクリプトでファイル操作する時はフルパス操作した方がいいよ

679 :名無しさん@お腹いっぱい。:2016/02/25(木) 17:35:42.52 ID:fkkSYKXG0.net
>>676
自己解決しました有難うございました
画面上にダイアログ無しでタスクバーからの終了です
方法は/nl でもう一個起動GETID

680 :名無しさん@お腹いっぱい。:2016/02/25(木) 20:34:49.03 ID:sdAeFe3E0.net
>>678
あぁ なるほど・・・
ggったらDOSCMDで出来るみたいに書いてあったけどダメなんだね
カレントディレクトリの変更はAPIか何か使わないとダメなのか

PRINT GET_CUR_DIR
DEF_DLL SetCurrentDirectoryA(string) : long: kernel32
IF !SetCurrentDirectoryA("C:\Windows\System32") THEN PRINT "error"
PRINT GET_CUR_DIR

こんな感じで問題ないかな?
助かりました。ありがとう♪

681 :名無しさん@お腹いっぱい。:2016/02/27(土) 01:15:28.83 ID:VvH2GmY20.net
画像A 画像B 画像C がランダムに現れて画像Aと画像Cが出た時は画像を左クリックする。
ググりながら下記内容にしたのですが、もっと処理速度と言うかクリックするまでの時間を早くするためには
どのようにすればいいでしょうか。
今回はじめてしたので間違いだらけな内容かもしれません。

k_id = GetID("k - Mozilla Firefox")
If k_id = -1 Then ExitExit
CtrlWin(k_id, ACTIVATE)
px = Status(k_id, ST_X) + 42
py = Status(k_id, ST_Y) + 42
sx = 350 + px
sy = 570 + py
Sleep(1)
While Status(k_id, ST_ACTIVE)
Ifb ChkImg("AAA.bmp", 0, px, py, sx, sy)
Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16)
Endif
Ifb ChkImg("CCC.bmp", 0, px, py, sx, sy)
Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16)
Endif
Wend

682 :名無しさん@お腹いっぱい。:2016/02/27(土) 01:20:46.23 ID:OyTefc3Z0.net
Sleep(1)をSleep(0.1)にしたら?

683 :名無しさん@お腹いっぱい。:2016/02/27(土) 01:29:14.52 ID:f7poLGup0.net
chkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
とやったほうが良いんじゃないか?

684 :名無しさん@お腹いっぱい。:2016/02/27(土) 01:35:13.96 ID:VvH2GmY20.net
>>682
>>683
ありがとうございます、変更してみます。

685 :名無しさん@お腹いっぱい。:2016/02/27(土) 02:04:58.57 ID:VvH2GmY20.net
>>683

While Status(k_id, ST_ACTIVE)
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
Btn(LEFT, CLICK, G_IMG_X+30, G_IMG_Y+16)

と変更したところ画像Aクリックしない 画像Cクリックするになりました。
試しに以下に変更したところ逆の結果になりました
Ifb ChkImgchkimg("ccc.bmp",ほにゃほにゃ) or chkimg("aaa.bmp",ほにゃほにゃ)

後の記述のみ実行されるようです。

自分でもググッて解決策を探してみます。

686 :名無しさん@お腹いっぱい。:2016/02/27(土) 02:14:04.68 ID:+U0TNGIH0.net
chkimgでorする場合は
最初にOPTION SHORTCIRCITを宣言しとかなダメよ
前者が存在しても後者の判定してまうから

687 :名無しさん@お腹いっぱい。:2016/02/27(土) 02:14:41.87 ID:+U0TNGIH0.net
というか>>683はそこまで教えてあげないと

688 :名無しさん@お腹いっぱい。:2016/02/27(土) 02:55:14.02 ID:mDOHEmLU0.net
これが終わったらこれ、みたいな単純な流れ作業は書けるようになったので
すごろくのようにあっちこっちに飛ぶ条件を付けていこうと思うんですが
文字だけだと順番が訳わからなくなりそうなんですがやってれば目が慣れてくるものですか?

689 :名無しさん@お腹いっぱい。:2016/02/27(土) 03:03:43.45 ID:VvH2GmY20.net
>>686

ありがとうございます。
OPTION SHORTCIRCITを宣言したところ
Ifb ChkImgchkimg("aaa.bmp",ほにゃほにゃ) or chkimg("ccc.bmp",ほにゃほにゃ)
での処理ができるようになりました。

>>682
>>683
>>686
みなさんのご教示により
最初に記載した物より、早くなりました。
低スペPCの為、どこまで出来るか分かりませんが
色々調べながらやってみます。

690 :名無しさん@お腹いっぱい。:2016/02/27(土) 03:31:25.12 ID:DVc62XNO0.net
>>689
もしwin7使ってるならデスクトップコンポジションを切るとchkimgが速くなるよ

691 :名無しさん@お腹いっぱい。:2016/02/27(土) 13:19:18.71 ID:EORKr9mx0.net
画像Aと画像Cが出た時は画像を左クリック
and?or? ???? ってなってるんだけど

692 :名無しさん@お腹いっぱい。:2016/02/27(土) 13:21:01.50 ID:Iow3jdwl0.net


693 :名無しさん@お腹いっぱい。:2016/02/27(土) 13:38:04.37 ID:38mQ0onS0.net
両方を満たすなら当然ANDだけど
少し上の短絡評価の話で混乱しているのかな?

694 :名無しさん@お腹いっぱい。:2016/02/27(土) 15:10:47.45 ID:IJ0wxpKe0.net
AかCが、なら or だろうけど
AとCが、という質問なんだから and じゃなきゃおかしい。
でも流れを見た感じでは質問の方がおかしかったっぽいね。

695 :名無しさん@お腹いっぱい。:2016/02/27(土) 16:05:27.86 ID:+U0TNGIH0.net
いや>>681のコードまでちゃんと見ればorだなってわかるだろ
読解力の問題
ANDに取れるような書き方が悪い!とか言っちゃう奴は
読解力のないバカか理屈バカのどっちか

696 :名無しさん@お腹いっぱい。:2016/02/27(土) 16:28:31.65 ID:sQuDImeT0.net
卵があったら牛乳うんぬんかんぬん

697 :名無しさん@お腹いっぱい。:2016/02/27(土) 16:53:15.04 ID:f6jdCZ8k0.net
windowsマクロテクニック読みつぶしたから2冊目買ったわ
(´・ω・`)

698 :名無しさん@お腹いっぱい。:2016/02/27(土) 16:57:01.43 ID:f7poLGup0.net
文字列を数値に変換するのはVAL
数値を文字列にするのはformatでいいのかな?

699 :名無しさん@お腹いっぱい。:2016/02/27(土) 17:11:37.28 ID:jnFT48H20.net
sleep(20+random(120))
20秒+0~119秒の待ち時間ってこれでいい?20秒の部分は固定だよね?

700 :名無しさん@お腹いっぱい。:2016/02/27(土) 17:25:32.73 ID:IJ0wxpKe0.net
>>695
>>681を見ても、質問文が間違ってるのかコードが間違ってるのかわからないだろう。

701 :名無しさん@お腹いっぱい。:2016/02/27(土) 18:45:03.26 ID:+U0TNGIH0.net
>読解力のないバカか理屈バカのどっちか

って言ってるのにまだ言う
どんだけだよ

702 :名無しさん@お腹いっぱい。:2016/02/27(土) 20:47:36.55 ID:jnFT48H20.net
>>699
これあってる?

703 :名無しさん@お腹いっぱい。:2016/02/27(土) 21:07:31.07 ID:tsk8CpEJ0.net
>>702
どこに疑問がある?
試せば判ることを何故聞く?

704 :名無しさん@お腹いっぱい。:2016/02/27(土) 22:31:03.41 ID:1L8PKm630.net
もう一週間以上も悩んで解決出来ないんだけど
CLKITEMでクリックするそのアイテムが無かった時の条件分岐って出来ない?

CLKITEM(GID,"閉じる")とかにすると閉じるが無かった場合、待ち時間指定が無いから
そこで長い間止まってしまう
これを1秒とかで判定して条件分岐するにはどうしたらいいの?

705 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:00:05.73 ID:Iow3jdwl0.net
>>704
戻値 = CLKITEM( ID, アイテム名, [種別, On/Off, 番号] )
戻値
TRUE:正常、 FALSE:処理不能

ヘルプくらい見ろや

706 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:30:25.92 ID:gFrWrIbO0.net
>>703
ランダム値は試せばわかるって性質のもんじゃないだろw

707 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:38:07.11 ID:38mQ0onS0.net
値が範囲内に収まるか気になるなら期待値以外になればNG表示する関数を数千回ループさせてみてるとか
スリープの単位がヘルプの内容と同じか気になるなら前後でミリ秒表示してみるとか

仕様が気になった時は検証可能な単位にどうやって分解するか考えよう

708 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:38:09.23 ID:sQuDImeT0.net
print 0.1+random(3)みたいに
小さい桁で試すとかいくらでも試しようはあんだろ

709 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:39:50.44 ID:1L8PKm630.net
>>705
ACC系だとFALSEが返ってこないで、そこで動作が止まっちゃうんだよ
一瞬で判定してくれるならいいんだが

710 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:54:14.26 ID:jnFT48H20.net
>>707
^3^

711 :名無しさん@お腹いっぱい。:2016/02/27(土) 23:59:06.69 ID:gFrWrIbO0.net
ランダムだと外見的には何回ループしても、多分仕様通りといえるが100%仕様通りと断言できなくなるだろ
ソース見りゃ一目瞭然だけど、テストの結果だけ見るとそういう事になるじゃん。

712 :名無しさん@お腹いっぱい。:2016/02/28(日) 00:20:30.70 ID:9QYQdQG/0.net
そりゃその通りだが、少なくとも今回の話題である>>699の言う固定だのは試せば確実に分かることだろうが

713 :名無しさん@お腹いっぱい。:2016/02/28(日) 00:56:26.92 ID:qefict4b0.net
そこもランダム値と足されちゃうから試してわかるのは100%確実ではないなw
そして今のところYES/NOで答えられる質問にだれも答えられていないという・・・
>>699
いい、はず

714 :名無しさん@お腹いっぱい。:2016/02/28(日) 01:03:30.83 ID:9QYQdQG/0.net
だから固定値は0.1にすりゃわかるって言ってんだろアホ
少しは頭使えや

715 :名無しさん@お腹いっぱい。:2016/02/28(日) 02:00:59.24 ID:pR7C6fW20.net
>>706
仕様のないものならそうだけど
期待値があって、それにあってそうかどうかを確認するだけなんだから
100万回でも1000万回でもrandom()の引数に対して充分な回数試せばいいだろ
仕様があってるか否かを確認するわけじゃないんだから

716 :名無しさん@お腹いっぱい。:2016/02/28(日) 02:08:27.06 ID:qefict4b0.net
1000万と1回目で想定外値がでる可能性が微レ存

717 :名無しさん@お腹いっぱい。:2016/02/28(日) 02:28:46.68 ID:0r4UbGuu0.net
>>716
しつこいぞ

718 :名無しさん@お腹いっぱい。:2016/02/28(日) 02:38:57.53 ID:9QYQdQG/0.net
的外れにも程があるな阿呆は

719 :名無しさん@お腹いっぱい。:2016/02/28(日) 02:40:28.35 ID:qefict4b0.net
いや707は言うとおりだけど708は論理的じゃないしさ

あと一応>>711の名誉のために言っておくと自分はそのヒトとは別人です

720 :名無しさん@お腹いっぱい。:2016/02/28(日) 03:55:09.54 ID:+XXpVUCC0.net
random関数にバグがあるかも知れないからとか
そもそもコンピュータには本物の乱数の生成は不可能だとか
そういう話をしてるんだろうか?

721 :名無しさん@お腹いっぱい。:2016/02/28(日) 04:18:12.48 ID:8+yUHWxH0.net
自分か運用する上で許容できる範囲内かどうかという話なんだけれどね

722 :sage:2016/02/28(日) 07:54:55.15 ID:k7lnu1y6g
ここで質問して良い内容でしょうか。
ロードス島戦記オンラインにて、KBD関数が動作しません。
原因、対策等わかりましたら教えてください。

723 :名無しさん@お腹いっぱい。:2016/02/28(日) 11:33:31.44 ID:pR7C6fW20.net
>>716
自分のにたいしてだと思うから一応答えておくと
それは単なるバグで元の質問とは無関係でしょ

724 :名無しさん@お腹いっぱい。:2016/02/28(日) 12:59:00.66 ID:f5PR4wTV0.net
元質問の人明らかにrandom関数の仕様を理解してないところから来てるから…
バグとそうでないものの違いを判別できない。
だから何回ループしてもその結果をもって仕様通りに動いていると結論付けられない。

725 :名無しさん@お腹いっぱい。:2016/02/28(日) 13:04:53.34 ID:9oz8zZQ80.net
実はPCを揺らすと数値が飛ぶバグがあるんだ

726 :名無しさん@お腹いっぱい。:2016/02/28(日) 14:07:12.58 ID:fiqkpaBc0.net
落下中のPCはランダムを返してくれないとかなりそうだなおい。

727 :名無しさん@お腹いっぱい。:2016/02/28(日) 14:27:31.94 ID:blrfAobm0.net
実は念を送るとランダムの確率が変動するんだ

728 :名無しさん@お腹いっぱい。:2016/02/28(日) 15:35:04.40 ID:WeWO61jV9
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ

普通はそこまで気にする必要が無いってのも言うまでも無い

729 :名無しさん@お腹いっぱい。:2016/02/28(日) 15:34:52.99 ID:Xg5e+H4y0.net
UWSCは大昔のBASICみたいに、何度走らせてもRANDOM関数は同じ乱数と思ってた。

BASICでは、RANDOMIZEでタイマーを引数にしてたなぁ。

730 :名無しさん@お腹いっぱい。:2016/02/28(日) 15:38:07.16 ID:n2+v+wZb0.net
Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
実際の待ち時間が20+120秒以上にならないという保証は無いよ

普通はそこまで気にする必要が無いってのも言うまでも無い

731 :名無しさん@お腹いっぱい。:2016/02/28(日) 19:51:10.87 ID:5dU2/tOb0.net
>>730
> Sleepの精度や演算誤差とかインタープリタの実行速度とかの影響で
> 実際の待ち時間が20+120秒以上にならないという保証は無いよ
そんな厳しい精度で動かす言語じゃないからね。Windows自体がRTOSじゃないからネイティブアプリでも
保証はないし。

732 :名無しさん@お腹いっぱい。:2016/02/28(日) 20:34:52.25 ID:J1sXa2fC0.net
ごめん単純に使い方が間違ってないかって質問だったごめんなさい

733 :名無しさん@お腹いっぱい。:2016/02/29(月) 01:14:12.41 ID:kLHNktmf0.net
式による設定のところで7時から19時までの間に9分間隔で実行て出来ます?

734 :名無しさん@お腹いっぱい。:2016/02/29(月) 02:57:03.79 ID:Y5wKBi2d0.net
GETTIME()でG_TIME_HHを取得して
7時から19時までの間は実行させて
9分間隔はSLEEP(540)でいけるのではないかと

735 :名無しさん@お腹いっぱい。:2016/02/29(月) 03:01:49.33 ID:kLHNktmf0.net
>>734
すいません
初心者すぎてよくわからないです

例えばこういう場合だと○月○日の7時からのみになってしまうんですよね
(YMDNN>=7894680) AND (YMDNN<=7894980) AND ((YMDNN MOD 60)=0)

毎日7時からというその方法はどう書けば良いのでしょうか

736 :名無しさん@お腹いっぱい。:2016/02/29(月) 03:11:25.69 ID:vc3n0bkN0.net
>>735
書いてあることそのままやればいいと思うけどな
GETTIME()を実行するとG_TIME_HHに実行時の時間が格納される
あとは7とは19と比較すればいい

GETTIME()
If (G_TIME_HH>=7) and (G_TIME_HH<19) then
やりたいこと
EndIf

737 :名無しさん@お腹いっぱい。:2016/02/29(月) 03:20:04.69 ID:kLHNktmf0.net
>>736
やりたい事が複数あって時間間隔も色んなパターンがある場合もそれで出来ますか?

738 :名無しさん@お腹いっぱい。:2016/02/29(月) 03:40:29.09 ID:vc3n0bkN0.net
>>737
条件式変えてやれば大体の動きはできると思うけど…
とりあえず自分で書いてみないと覚えないぞ

739 :名無しさん@お腹いっぱい。:2016/02/29(月) 03:44:48.44 ID:kLHNktmf0.net
>>738
ちょっと色々と試してみます
どうもです

740 :名無しさん@お腹いっぱい。:2016/02/29(月) 05:02:19.00 ID:UwM6ts+X0.net
ヘルプも読まずに拾ったマクロの改造法を聞いてるだけっぽいな

741 :名無しさん@お腹いっぱい。:2016/02/29(月) 05:23:18.45 ID:kLHNktmf0.net
いやもう初心者なんで全然わからんのですよ

742 :名無しさん@お腹いっぱい。:2016/02/29(月) 06:20:04.43 ID:W4Lx+MiB0.net
初心者っていちいち書くな わかってる

743 :名無しさん@お腹いっぱい。:2016/02/29(月) 09:56:53.47 ID:S3AkKIbC0.net
なんでも只で手に入ると思うなよw

プログラムの基礎教養があればネット上の情報だけで理解できるが、
それがなければ情報の取捨選択すらできずやりたいことにたどり着けない
1冊くらいは金出して本を読め

744 :名無しさん@お腹いっぱい。:2016/02/29(月) 10:13:32.76 ID:7awlWggQw
式による設定 7時から19時までの間に9分間隔で実行
HH>=7 AND HH<19 AND (YMDNN MOD 9)= 0

745 :名無しさん@お腹いっぱい。:2016/02/29(月) 11:07:56.89 ID:W4Lx+MiB0.net
それよりプログラマ雇えといいたい

746 :名無しさん@お腹いっぱい。:2016/02/29(月) 11:11:22.54 ID:OC88kjRQ0.net
プログラムの素養もネットで身に着けられるし
プログラムの素養が必要って情報もこうやって手に入ってるし
やりとりしてれば2chでのイラつかせるワードも分ってくるし
地道に調べて試してけばいいと思うよ

747 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:08:54.45 ID:zgYAM+0i0.net
質問してる程度の知識ならすぐにネットで手に入る
だから「初心者なのでわからん」が通用しない
もう少し自分で調べて、具体的にわからない部分が出たらもう一度質問しに来れば良いよ

748 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:22:07.58 ID:yBnnbdV70.net
初心者さんはまずフローチャート書くか日本語で処理手順を箇条書きにするようにしたらええのよ
んでヘルプなり解説サイトの熟読
いきあたりばったりでスクリプトに手を入れようとするとわけわかんなくなって当たり前よ(´・ω・`)

749 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:32:25.62 ID:3ZfsBzX30.net
動作がおかしくなったのでプリントでログを確認していたらpublicが原因と分かりましたがいまいち納得ができないです
SLCTBOXやpublicの動作を確認しても問題ないと思うのですが、どうしてpublicをつかったらダメなんでしょうか?

SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
public size = 100
print "size(100)=" + size
CASE SLCT_2
public size = 50
print "size(50)=" + size
SELEND
print "size=" + size

この状態のプリントは
size(100)=50
size=50
2つのpublicをはずすと
size(100)=100
size=100
となります。

750 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:38:11.72 ID:3ZfsBzX30.net
すいません
プリント結果はSLCT_1を選んだ時です

751 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:45:54.58 ID:Hitpgwgs0.net
CASEに入ってからPUBLIC使ったら見た目通りの順序じゃなくなるよ
実行時にPUBLICを付けた行は先頭に移動するイメージなのです

そのような使い方をしたければPUBLIC宣言は空宣言か0代入をSELECT前に行って下さい
(つまり移動しても大丈夫な所に置く)

752 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:47:46.09 ID:i1OgRjUe0.net
publicはプログラム実行時に真っ先にに値を読み込むから最後に書いたpublic size = 50が優先されてるんじゃないの
同じ変数を使用する場合でも宣言は基本的に一回だけ

public size
SELECT SLCTBOX(SLCT_BTN, 0,"画面の大きさ設定","デフォルト画面","50%画面")
CASE SLCT_1
size = 100
print "size(100)=" + size
CASE SLCT_2
size = 50
print "size(50)=" + size
SELEND
print "size=" + size

753 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:50:36.85 ID:7tqwHv410.net
OPTIONと同じやね
後勝ちになる
つーか、同じ変数を何度もPUBLICで宣言なんてするもんじゃない

754 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:57:09.80 ID:3ZfsBzX30.net
>>751-753
ありがとうございます納得できました
なるべく簡潔に書こうと思っていたのですが良くない書き方だったみたいですね
グローバル変数は極力使わないようにとよく目にするので気をつけます

755 :名無しさん@お腹いっぱい。:2016/02/29(月) 17:14:21.74 ID:7awlWggQw
>>744 自己レス
式による設定 7時から19時までの間に9分間隔で実行
毎日7時からカウントスタートする式
HH>=7 AND HH<19 AND ((HH*60+NN-(7*60)) MOD 9)= 0

756 :名無しさん@お腹いっぱい。:2016/02/29(月) 19:14:05.70 ID:7awlWggQw
>>704
if -1 <> CHKBTN(GID,"閉じる") then CLKITEM(GID,"閉じる")

757 :名無しさん@お腹いっぱい。:2016/02/29(月) 20:24:39.97 ID:7awlWggQw
>>709
http://www.uwsc.info/faq.html#N15
CLKITEM関数のCLK_ACC指定にてダイアログを出すと閉じるまで制御が戻らない  #N15
  CLK_LEFTCLK を付加してください。
  CLKITEM(id, "xxx", CLK_ACC or CLK_LEFTCLK)

758 :名無しさん@お腹いっぱい。:2016/03/01(火) 00:51:55.84 ID:Hw/6RB5N0.net
基本的な操作でお恥ずかしいのですが、どうしても自力で解決できなかったので
ヒントだけでもお教えください。
Win 7 Professional 64 bit + IE 11での操作です。

テーブル内にダウンロード用リンクが複数(*および青文字のアルファベット部)あり、
それらを自動でひとつずつダウンロードしようとしています。
http://s1.gazo.cc/up/179236.jpg

画面の状態までは持ってこれたのですが、どうしても赤枠で囲った保存(S)を
押すことが出来ません。サンプルコードも試してみたのですが、
理解不足かIE, OSのバージョン違いなのか、上手く動作させられませんでした。
クリックすると緑枠部に一瞬新しいタブが出来ているのでそこが関係あるのか、
或いはCLKITEM部が間違っているとは思うのですが……。

A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
   IfB DLLTEXT <>

759 :名無しさん@お腹いっぱい。:2016/03/01(火) 01:30:04.42 ID:Hw/6RB5N0.net
切れてしまったのでコード部だけ貼り直します。すみません。

A = 0
Repeat
DLLTEXT = IE.document.links[A].innertext
   IfB DLLTEXT <> "" Then
     IE.document.links[A].click()
     SLEEP(10)
     CLKITEM(GETID("Internet Explorer","#32770"),"保存(S)", CLK_ACC)
   EndIf
A = A + 1
Until A = 100


DLLTEXT〜部は、ソースを確認したところ見えないリンクがあったので、それを回避しようと思い付け加えました。

長々とすみません。よろしくお願いします。

760 :名無しさん@お腹いっぱい。:2016/03/01(火) 04:46:22.39 ID:mSZ5heBH0.net
IEの "ファイルのダウンロード" にて "保存" ボタンが反応しない  #N23
http://www.uwsc.info/faq.html#N23

761 :名無しさん@お腹いっぱい。:2016/03/01(火) 07:01:07.94 ID:pMN1suyz0.net
エクセルのマクロでリンクを取り出してファイルに書き出して、ロダに食わせるほうがいんでないのかね

762 :名無しさん@お腹いっぱい。:2016/03/01(火) 07:34:10.51 ID:uRkQmwxK0.net
>>760-761

ありがとうございます。
#N23は試してみたのですが、上手く出来なかったのでWin7だからかIE11だから無理なのかと
思っていたのですが、何か間違えていたのかもしれません。

エクセルマクロの方は考えてもいませんでした。
あまりに手間取るようなら別の方法を試したほうがいいですね……。

もう少し自分でやってみます。ありがとうございました。

763 :名無しさん@お腹いっぱい。:2016/03/01(火) 07:53:15.84 ID:mSZ5heBH0.net
であればクリックに必要なタイトル、クラス名を調査用のスクリプトを書いて調査したり
開発環境にあるSPY++をつかって調査したりすると良いよ

問題点は
保存ボタンがあるウインドウ(ポップアップ)のIDが取得できていない
保存ボタンのアイテム名が正しくない
のどちらかだからね

後、リンクのクリックまで手動でやってみて
保存ボタンのクリックだけスクリプトで可能かも評価が必要

失敗するなら

IEの操作(COM)にて、ダイアログが出ると動作が停止する  #N25
http://www.uwsc.info/faq.html#N25

764 :名無しさん@お腹いっぱい。:2016/03/01(火) 07:57:24.35 ID:mSZ5heBH0.net
あ、ごめん

リンククリック(手動)、保存ボタンクリック(スクリプト)→成功
リンククリック(スクリプト)、保存ボタンクリック(スクリプト)→失敗

なら

IEの操作(COM)にて、ダイアログが出ると動作が停止する  #N25
http://www.uwsc.info/faq.html#N25

の対処も必要かも

765 :名無しさん@お腹いっぱい。:2016/03/01(火) 08:07:35.16 ID:w83/qWlj0.net
ようわからんが
win7のie11で下を走らせて置いてダウンロードダイアログだしたら普通に押してくれるが

while true
if CLKITEM(GETID("Internet Explorer"),"保存(S)", CLK_ACC) then break
sleep(1)
wend


#32770これいらんのとちゃうんか

766 :名無しさん@お腹いっぱい。:2016/03/01(火) 22:50:42.13 ID:HDjL1sAH+
>>763-764
親切にありがとうございます。
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
類似のuuSPYを使用して調べたところ
親の"IEFrame"→子"Frame Notification Bar"→孫"DirectUIHWND"というクラス名の
ダイアログだと分かったので、そこから調べて操作できるようになりました。
問題点の洗い出し方も勉強になりました。これでもう少し自分で調べて解決できるように
なれそうです。

>>765
サンプルまで用意して頂きすみません。
実際に動かしてみたのですが、やはりIDが取得できていないのか
押してくれず……。

お二人とも親切にありがとうございました。

767 :749:2016/03/02(水) 01:27:17.46 ID:41jBzZAb0.net
>>763-764
一応動作させることが出来ました。
結果的には、保存ボタンのウィンドウIDが取得できていなかったようです。
(クラス名IEFrameだと思っていたのですが、ダイアログは別の名前でした)
SPY++はVisualStudio?を持っていないので用意できなかったのですが、
uuSPYという類似ソフトで調べられました。
SPY++的なソフトの存在(というか問題の洗い出し方?)すら知らなかったので勉強になりました。
丁寧にありがとうございました。

>>765
サンプルまで提示して頂き、すみません。
流してみたのですが、やはり反応せず……
ダイアログが出た後もそのまま動いていったので、
動作停止したわけでもなさそうなんですが……
ともかく、ありがとうございました。

768 :名無しさん@お腹いっぱい。:2016/03/02(水) 20:36:33.34 ID:TfJohTOi0.net
A.bmpがあったとき 
Aからx+30、y+30の場所にB.bmpがあったときのみC.bmpを押す

画像範囲について検索しましたが画面全体から範囲を指定するみたいですし
Aはいろいろな場所に現れます Bは複数現れます
Aから相対座標で検索範囲指定するためにはどうすればいいのですか?

769 :名無しさん@お腹いっぱい。:2016/03/02(水) 20:39:40.47 ID:yBkd0HNE0.net
>>768
【ヘルプより引用】
座標情報は配列変数 ALL_IMG_X[], ALL_IMG_Y[] に格納(配列はゼロから)

B探してから配列変数をコピー
ループさせながら相対範囲指定でAを探して
あればCをクリックしたら良いんじゃないかな

770 :名無しさん@お腹いっぱい。:2016/03/02(水) 21:39:50.37 ID:TfJohTOi0.net
ありがとうございます いろいろ試してみます

771 :名無しさん@お腹いっぱい。:2016/03/03(木) 12:25:37.00 ID:u+vEEjvS0.net
IFB CHKIMG("A")
ax=G_IMG_X;ay=G_IMG_Y
 IFB CHKIMG("B",0,ax+29,ay+29,…)
IFB CHKIMG("C")
BTN(LEFT,CLICK,G_IMG_X+9,G_IMG_Y+9)
ENDIF
ENDIF
ENDIF

格納がよくわかんないし雑だけどこんな感じは

772 :名無しさん@お腹いっぱい。:2016/03/03(木) 12:50:46.44 ID:Ck6IE5Sq0.net
PCからスマホの内臓ストレージにファイルやフォルダを転送したいです。
アイテムには日本語が含まれているため、DOSCMD+ADBでは文字化けしていたので、
[MultiByteToWideChar][WideByteToMultiChar]を組み合わせましたが、
半角スペースや特定の文字のため、転送ができませんでした。

何か回避策はないでしょうか?

773 :名無しさん@お腹いっぱい。:2016/03/03(木) 14:01:05.13 ID:0xlIg63T0.net
よく知らんから適当いうけど、コマンドプロンプトのshift_jisをUTF-8にするとかで解決しない?

774 :名無しさん@お腹いっぱい。:2016/03/03(木) 14:38:58.59 ID:o8n0++8T0.net
UWSCってどう?
ブラウザとか制御しにくい気がするんだけど

775 :名無しさん@お腹いっぱい。:2016/03/03(木) 16:23:03.08 ID:Ck6IE5Sq0.net
> 759
それも試しました。
CHCPでSHIFT−JISからUTF-8に変換して、書き込みに行ったんですが、
UTF-8化した文字列が受け付けませんでした。

776 :名無しさん@お腹いっぱい。:2016/03/04(金) 02:14:39.26 ID:EA8iP2810.net
すみません、助けてください
bluestacks uwscをつかって自動化しようとしてるのですが
uwscのクリックを認識?してくれません
マウスでツムツムの操作は普通にできます。
bluestacksの代わりにエクセルを起動させておく(画面に表示)とクリックも認識してくれています。
非アクティブの問題かとおもいアクティブ化もいれてみましたがだめでした
助言お願いいたします

777 :名無しさん@お腹いっぱい。:2016/03/04(金) 02:49:01.44 ID:sp+52hH20.net
UWSCが使いないアプリもある
bluestacksはそれ
以上

778 :名無しさん@お腹いっぱい。:2016/03/04(金) 04:06:59.33 ID:32k0gAq70.net
genymotionで散々やったけど無理だったよ
ウィンドウは掴めるけど内部idが掴めない

779 :名無しさん@お腹いっぱい。:2016/03/04(金) 09:01:58.98 ID:lSRUIbNn0.net
>>776
絶対座標は?
両方ともプロパティ-互換性-管理者として実行を試す
他にもgoogleでいろいろ試す
ダメならダメ

780 :名無しさん@お腹いっぱい。:2016/03/04(金) 17:10:22.64 ID:qcabtBIu0.net
プログラミングって具体的な目標が無いと向上しないな

781 :名無しさん@お腹いっぱい。:2016/03/04(金) 19:28:46.89 ID:0avFt52T0.net
MOUSEORG関数でMORG_DIRECTを指定するとCHKIMG関数とBTN関数の座標に
ズレが発生します。
どうせればズレを解消または補正できますか?

782 :名無しさん@お腹いっぱい。:2016/03/04(金) 20:28:03.15 ID:Cx1nPm1Z0.net
>>781
たぶん、ウィンドウ座標とクライアント座標のズレが原因だから
ウィンドウ座標を基準にすれば一致すると思う。

783 :名無しさん@お腹いっぱい。:2016/03/04(金) 22:31:12.71 ID:6AjLUgCP0.net
>>782
ウィンドウ位置を(0,0)に合わせて起動してもズレます

784 :名無しさん@お腹いっぱい。:2016/03/04(金) 22:53:16.26 ID:ojY0v8Jg0.net
>>783
たいていウィンドウには枠があるでしょ
タイトルバーとかウィンドウを広げたり縮めたりする細い線
アレが影響してると思われるから
ウィンドウ位置を00にしても・・・

785 :名無しさん@お腹いっぱい。:2016/03/04(金) 22:54:21.95 ID:1DETh6nk0.net
これはさすがにネタだろw
uwsc以前のWindowsの基礎知識の問題だぞ

786 :名無しさん@お腹いっぱい。:2016/03/04(金) 23:02:35.51 ID:Cx1nPm1Z0.net
>>783
MOUSEORG( ID, MORG_CLIENT ) と MOUSEORG( ID ) で比較してみて

あと、CHKIMG で取得する座標は画像の左上になるけど、
検索画像と座標の間にどのようなズレがあるのか書いてね。

787 :名無しさん@お腹いっぱい。:2016/03/05(土) 04:26:25.45 ID:TP9s+Xc10.net
>>786
MOUSEORG(id)→(260,100)
MOUSEORG(id, MORG_CLIENT)→(260,125)
MOUSEORG(id,MORG_DIRECT)→(100,400)
こんな感じですが、なぜかMORG_DIRECTはUWSC本体の位置を移動すると座標が変わります

ちなみにコードは↓これです。
id = GetID("Android Screen Monitor")
MOUSEORG(id,MORG_DIRECT)
num = 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
While TRUE
if !chkimg(name) Then continue
x=G_IMG_X
y=G_IMG_Y
BTN( LEFT, CLICK, x, y , 200)
sleep( 10 )
if num >= 7 Then num = 0
num = num + 1
name = "BMP\画像" + FORMAT( num, 1 ) + ".bmp"
WEnd

788 :名無しさん@お腹いっぱい。:2016/03/05(土) 04:31:42.39 ID:TP9s+Xc10.net
MOUSEORG(id)とMOUSEORG(id, MORG_CLIENT)の座標逆でした

789 :名無しさん@お腹いっぱい。:2016/03/05(土) 05:02:22.36 ID:PQgaMRcF0.net
>>787
http://www.vuzix.jp/dev/images/asm/device_list.png
この画像と比較すると、横の枠がない状態なので
タイトルバーの幅の分だけ MORG_CLIENT のありなしで違う状態ですね。

MORG_DIRECT の方は訳が分かりませんね。
原因を調べるには、MORG_DIRECT を指定した状態で SAVEIMG することです。
画面が崩れて見えると思います。

画面が崩れて見えるだけで、クリックが正常に行えるなら、
MOUSEORG をその都度実行して
CHKIMG のときは MORG_DIRECT なし
BTN のときは MORG_DIRECT あり とかにすればいいと思います。

790 :名無しさん@お腹いっぱい。:2016/03/05(土) 23:00:40.60 ID:+UaXZBac0.net
WinnyでMP3ファイルを手に入れたのだが、10曲が1つのMP3ファイルになっている。
これを1曲ずつ10個のMP3ファイルに分けたいのだがどうしたらいいのかね?

791 :名無しさん@お腹いっぱい。:2016/03/05(土) 23:04:45.09 ID:t6t79+190.net
うーん

わかんない!

792 :名無しさん@お腹いっぱい。:2016/03/06(日) 00:14:59.81 ID:dCUjX7lH0.net
>>790
torスレに回答してくれてる人がいるぞクソ虫

793 :名無しさん@お腹いっぱい。:2016/03/06(日) 09:47:42.18 ID:TvpTaFVp0.net
>>790
.zipをつけて解答

794 :名無しさん@お腹いっぱい。:2016/03/06(日) 10:49:16.69 ID:zGk8lpZo0.net
>>790
手動でやればいいんじゃない?

795 :名無しさん@お腹いっぱい。:2016/03/06(日) 11:37:41.69 ID:RRLqddKE0.net
10個のmp3のアーカイブならともかく、10曲が一つのmp3になってるなら
編集ソフトで切り出すしかないのでは

796 :名無しさん@お腹いっぱい。:2016/03/06(日) 12:04:50.72 ID:WY+6IsJt0.net
なんでおまえら答えてんの

797 :名無しさん@お腹いっぱい。:2016/03/07(月) 14:52:09.82 ID:9LHTjHFn0.net
関数の呼び出しで参照引数の初期値代入とか出来ないんでしょうか?
あらかじめ先に初期値代入するしかない?

abc(hoge=111)
print hoge

procedure abc(var hoge)
 hoge = hoge + 100
fend

798 :名無しさん@お腹いっぱい。:2016/03/07(月) 15:09:06.92 ID:WbyHlW0e0.net
なんじゃそれ

abc(111)

でいいだろ

799 :名無しさん@お腹いっぱい。:2016/03/07(月) 15:12:10.38 ID:WbyHlW0e0.net
ああ、そんでhogeを続きの処理で使いたいのか
それで動かないんならできないんだろ
大人しく先に代入しとけよ
1行増えるだけじゃん
どうしてもそうしたい理由でもあんの?

800 :名無しさん@お腹いっぱい。:2016/03/07(月) 15:51:15.35 ID:67LYGWDp0.net
>>797
hoge = 111; abc(hoge); print hoge //1行で済んで行も短い

huga = bcd(112); print huga //でもなんでこうしないの?
print bcd(113)

procedure abc(var hoge)
 hoge = hoge + 100
fend

function bcd(hage)
 result = hage + 150
fend

801 :名無しさん@お腹いっぱい。:2016/03/07(月) 15:58:21.83 ID:9LHTjHFn0.net
上で挙げてるのはただの例です。
実際は参照引数が多く、引数の一部だけ初期値代入したいのと
print文は無いですね。

802 :名無しさん@お腹いっぱい。:2016/03/07(月) 16:09:04.11 ID:gjVyQnvH0.net
はげ+150本 = そんなに増えていませんよ

803 :名無しさん@お腹いっぱい。:2016/03/07(月) 20:04:53.77 ID:tjYcm4Q90.net
それは参照渡しを使うことが間違いなんじゃね?

804 :名無しさん@お腹いっぱい。:2016/03/07(月) 20:20:19.36 ID:tjYcm4Q90.net
参照引数ってのは値じゃなくてメモリの番地とかそういうものを入れてるんじゃなかったっけ?
だから参照引数に値は代入できない

805 :名無しさん@お腹いっぱい。:2016/03/07(月) 21:49:34.48 ID:Yt8oL/UZ0.net
そもそも一度も代入も宣言もしていない変数は使えないよ

dim hoge
abc(hoge , 111)
print hoge
sleep(10)

procedure abc(var hoge , hoge0 = hoge)
hoge = hoge0 + 100
fend

これなら動くけど最初のdim文外すと怒られるから意味が無い

806 :名無しさん@お腹いっぱい。:2016/03/07(月) 22:27:49.67 ID:9LHTjHFn0.net
一つの関数で複数の変数を変更するのだけど、その関数より前には使わない
結果受け取り専用の引数で

a=0;b=0;c=0;…10個くらい   //まあこれが無意味な文に思えてならない
abc(a,b,c,…)

procedure abc(var a, var b, var c,…)
 …
fend

807 :名無しさん@お腹いっぱい。:2016/03/07(月) 22:43:28.84 ID:YgJHqyxo0.net
>>797を見ると受け取り専用とは見えなかったけど
単にその目的なんだったら>>805の人が書いてるように

Dim a,b,c...
abc(a,b,c...)
でいいんじゃないの?

808 :名無しさん@お腹いっぱい。:2016/03/08(火) 09:25:26.60 ID:X39hgh8s0.net
1つの引数に参照渡しが多すぎるのは関数分割が出来てなくて
無駄に粒度が大きすぎる疑いがあるが、UWSCの言語仕様上仕方ない面もある。
それより使用する変数については、module変数とそのコンストラクタを利用して
初期化すれば何の問題もなくスマートに書けるはず。
ただし最初からそう書いていればスマートで苦労もないが、
後から直そうとすると抜本的な書き直しとなり苦労する俺。

809 :名無しさん@お腹いっぱい。:2016/03/08(火) 11:36:49.32 ID:mdQ0PQ+40.net
>>808
正にそんな感じ…

参照引数が多いのは外部からのデータ取得を一気にやるせいで
その関数の内部は整理されてるんだけど。

最初は小規模なスクリプトで変数の管理とか適当で、後から書き加えていったから
今はこんなはずじゃなかったorzって状態になってて後悔してる。

810 :名無しさん@お腹いっぱい。:2016/03/08(火) 14:04:27.07 ID:EYyC3Yny0.net
質問です。
MOUSEORGを使用したバックグラウンド操作で、
マウスオーバーする方法ってありますかね?

マウスオーバーして出てくる画像の認識をしたいんだけどできぬ

811 :名無しさん@お腹いっぱい。:2016/03/08(火) 15:29:09.82 ID:X39hgh8s0.net
それはバックグラウンドのウィンドウにマウスオーバーイベントを
発生させろと言っているに等しいんだが…
これ自動化ツールよ?
まずあなたが手動で隠れたウィンドウにマウスオーバーしてみなさいよ!
とんちかな?

812 :名無しさん@お腹いっぱい。:2016/03/08(火) 15:47:28.50 ID:YrarT/t10.net
一休さんのトラの屏風の事だな

次の方どうぞ

813 :名無しさん@お腹いっぱい。:2016/03/08(火) 15:52:30.08 ID:uEQeFD2u0.net
mmvのこといってるんじゃない?

814 :名無しさん@お腹いっぱい。:2016/03/08(火) 15:58:04.94 ID:/957NIFT0.net
煽りたいだけで答えられないならちょっと黙ってろよ
俺は黙る

815 :名無しさん@お腹いっぱい。:2016/03/08(火) 16:05:17.57 ID:CELrwcnT0.net
>>811
どういう理屈だよ
元々UWSCで出来るバックグラウンド操作は手動で出来ないでしょ

816 :名無しさん@お腹いっぱい。:2016/03/08(火) 16:25:16.15 ID:XRfaJMaM0.net
バックグラウンド操作でもマウスオーバーイベントが発生するかどうかという
その対象ソフト側の問題なんだから、UWSCの質問じゃないぞ。

817 :名無しさん@お腹いっぱい。:2016/03/08(火) 16:54:18.27 ID:oQSRIGCR0.net
なんかレベル下がったなここ

818 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:08:25.81 ID:X39hgh8s0.net
>>815
バックグラウンド操作は元々のUWSCのコンセプトPC操作の自動化を
あくまで拡張したものであって、
出来なくて当然のことが出来るようになった機能だよ。
それをあたかも出来て当然のように認識されても困るわな。
まぁこんなソフトが無料で使えるだけでも奇跡的なんだが。
マウスオーバーイベントをマウスオーバーせず強制的に
外から発生させることが可能なAPIが公開されてるならば、
もはやマウスオーバー画像を直接ぶっこ抜くことも出来るんじゃね?
自動操作というよりアプリハッキングだわな。
まぁこれであっさり出来ますよとかコードが出てきて
俺が逆立ちするハメになるかもしれんがw

819 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:29:48.80 ID:d7jVEpko0.net
Win32ApiのSendMessage(PostMessage)等を使ってイベントを発生させる方法はあるにはあるよ
それをアプリハックと呼ぶかは置いておいて

重要なのは作業中のマウスは普通に存在し続けているって事なので
バックグラウンドだと資源衝突が発生するのでやっぱり安定しないのよ

平たく言うとスクリプトがここにマウスがあるよとした直後に
本当のマウス位置に更新されるのでここにはマウスは無いよとなる

だからよく分からなければ別PC用意して最前面でやる
仮想環境が分かるならそっちの最前面でやれ(内部的なマウス位置が存在するので資源衝突しない)がFAQとなってるのよ

820 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:39:00.04 ID:OiSIw5XY0.net
VBScript で一般的なキー入力のエミュのやり方
https://msdn.microsoft.com/ja-jp/library/cc364423.aspx
"2"のキーをクリック
> WshShell.SendKeys "2"

ドライバ→Windows→アプリってのを
自動化ソフト→アプリって短縮しただけでしょ。
アプリに直接送る方が簡単だけど(それで動くとは言ってない)

UWSCが選ばれる理由は画像認識と操作の記録再生が簡単ってところだよ。
別に自動操縦が特別ってことはない。(特許を取ってるところはある)

821 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:41:37.94 ID:EYyC3Yny0.net
>>811-817
無知でごめんな
>>818-819
詳しく教えてくれてありがとう
やっぱり仮想環境構築か物理的にもう一台PC用意するのが手っ取り早いってことですね
仮想環境構築してやってみます

822 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:43:25.86 ID:bSkm1Om50.net
1日調べてわからなかったので質問させてください。
-----------------------------------------------------------------

THREAD スレッド(1)
THREAD スレッド(2)
sleep(200.0)

PROCEDURE スレッド(i)

ID[i] = GETID(GET_FROMPOINT_WIN)
中略
MOUSEORG (ID[i])

CALL 関数.uws

REPEAT
sleep(0.1)
UNTIL CheckColorScope(124,374,

823 :名無しさん@お腹いっぱい。:2016/03/08(火) 17:44:19.61 ID:bSkm1Om50.net
UNTIL CheckColorScope(124,374,"R",35,10)
BTN(LEFT,CLICK,80,108,100)

FEND


この状態でスレッド2側がスレッド2側の相対座標のCheckColorScopeを行ってくれず
スレッド1側の相対座標をCheckColorScopeしてしまいます。
ボタンクリックやPeekColor単体、関数の中身をバラしてREPEAT〜UNTIL間に
組み込むとスレッド2側の相対座標のCheckColorScopeを行います。
関数を組み込んだ状態でスレッド2側の相対座標をCheckColorScopeさせるには
どうしたらいいでしょうか。

824 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:06:11.90 ID:mdQ0PQ+40.net
ユーザー作成関数を組み込み関数であるかのように書かれても…

825 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:10:36.84 ID:mdQ0PQ+40.net
あとそれスレッド1とスレッド2とほぼ同時に走るから実質同じものかと

826 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:16:33.76 ID:X39hgh8s0.net
たしかUWSCのスレッドは、スレッド無いから呼び出したユーザー定義関数を、
そのスレッド内で実行しなかったような気が?
引数だけで算数して結果を返すだけのようなリエントラントな関数ならいいけど、
Windows上のリソースにアクセスするようなのは期待した動きをしなかった気がする。
試しに、自作関数を一時的にスレッドで呼び出すプロシージャ内に展開してやってみて。

827 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:32:29.53 ID:bSkm1Om50.net
>>824 申し訳ないです。自作関数の中身です。処理は一緒ですが、相対座標だけをずらして
並列で処理させてようとしてうまくいかず、、、
Function CheckColorScope(PosX, PosY, Element, BaseValue, Scope)
Select Element
Case "R"
ElementValue = PeekColor(PosX, PosY,COL_R)
Case "G"
ElementValue = PeekColor(PosX, PosY,COL_G)
Case "B"
ElementValue = PeekColor(PosX, PosY,COL_B)
Default
Result = False;
exit;
SelEnd
Ifb (ElementValue >= BaseValue - Scope) And (ElementValue <= BaseValue + Scope) Then
Result = True;
Else
Result = False;
EndIf
Fend

828 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:41:58.65 ID:bSkm1Om50.net
連投ですいません。
>>826
Windows上のリソースにアクセスするようなものではないですね。
ブラウザを2個起動した状態で同じ動作を並列処理させようとしてるのですが
>>827 の関数を使うと相対座標が片方に寄ってしまうんですよね。。。
展開すると関数が入れ子しているか、閉じていませんでエラーになります。。

829 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:46:18.69 ID:4EtCLtde0.net
ID[i] = GETID(GET_FROMPOINT_WIN)

これってカーソルの下のウィンドウよね?
スレッドでほぼ同時に取得してるのにこれでIDきちんと2つ取れてるん?

830 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:49:12.06 ID:4EtCLtde0.net
どっちか片方のIDしか取れてなくて2つのスレッドが同じウィンドウにMOUSEORGしているような気がする
ID二つとも確認してみたら

831 :名無しさん@お腹いっぱい。:2016/03/08(火) 18:59:56.84 ID:bSkm1Om50.net
>>829
スレッド2側の処理ですが、以下のように処理されますので、
可能性としては低いと思われますが、念のため確認してきます。
UNTIL CheckColorScope(124,374,"R",35,10) ←×こっちがスレッド1側の相対座標に
BTN(LEFT,CLICK,80,108,100) ←◯こっちはスレッド2側の相対座標

832 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:03:16.67 ID:X39hgh8s0.net
今テストプログラムで確認してみたら、
PCが高負荷でなければスレッドがリソース云々は無かった。
それよか、各スレッドのpeekcolorが対象にするウィンドウIDが
mouseorgで指定されないから、
たまたまアクティブなウィンドウが対象になる。
ウィンドウID管理しなきゃ。

833 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:05:47.87 ID:X39hgh8s0.net
具体的には、スレッドにする関数の引数にウィンドウIDを追加して自作関数呼び出す直前にmouseorg
または自作関数の引数にも追加してpeekcolorの直前にmouseorg

834 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:22:19.67 ID:bSkm1Om50.net
>>830 PRINTにID表示させてみました。1と2でしっかり別れてました。
>>832 助言感謝です。さっそくやってみます。

835 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:24:40.32 ID:X39hgh8s0.net
mouseorg使ってたねスマンね、きっと想定通りにウィンドウIDが取れてないんだろうね。
現在対象にしてるウィンドウIDをball0onで表示するようにしてみるといいよ
(スレッドごとに表示されるのでID*100ぐらいの座標指定して重ならないよう別位置に表示)

836 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:27:50.46 ID:X39hgh8s0.net
被った、IDがいいなら後は判らんな
判定直前に対象ウィンドウをCTRLWIN(ID, ACTIVATE)してみるとか、
判定対象の位置付近にballoonを表示してみて見てるとこ合ってるかどうか確認
ぐらいかな

837 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:32:50.77 ID:bSkm1Om50.net
>>836 了解です。バルーンで追うのはまだやってなかったので
バルーンでしばらく追いつつ試してみます!

838 :名無しさん@お腹いっぱい。:2016/03/08(火) 19:57:44.27 ID:OiSIw5XY0.net
>>822
CALL をスレッド関数内でやってんの?
これはスレッドで動かないんじゃない?

あと、スレッドを使うならグローバル変数使うんじゃなく
データを渡してしまった方がいい。
なんで添え字を渡してグローバル変数の配列にアクセスさせるのかわからない。
そういうのはC言語でやってください。
C言語でも配列の添え字を渡してグローバル変数にアクセスとかしないと思うけど。
普通はアドレスを渡しますね。

別にグローバル変数にアクセスしてもいいんだけど
それは変化するデータをリアルタイムにアクセスする必要があるときや
スレッド関数から値を戻すときくらいですね。
一度取得したIDは変化しないからコピーを渡してしまって構わない。

839 :名無しさん@お腹いっぱい。:2016/03/08(火) 20:13:05.28 ID:X39hgh8s0.net
それは多分ね、UWSCのスレッドとして呼び出した関数は、
戻り値を得ることが出来ないから、スレッドで取得した値を
メインから得る方法はグローバル変数しか無く、
スレッドがGETIDしたウィンドウIDをメインから見たいんじゃないかな。
CALLをスレッド内に入れるのはちょっと変態的なのは同意

840 :名無しさん@お腹いっぱい。:2016/03/08(火) 20:44:35.98 ID:bSkm1Om50.net
返事遅れて申し訳ないです!
別の方法(スレッド化せず処理)でさっくり想定通りの結果が得られました!
無駄に難しい処理しようとしてたんだなと・・・
ハマって色々学べたのでよかったです。
>>838 今後のために参考にさせて頂きますOTZ
>>839 他皆様、ご助言たくさんいただき有難う御座いました!

841 :名無しさん@お腹いっぱい。:2016/03/09(水) 17:41:50.93 ID:mQOmooo80.net
getidで2窓で開いているIE上の同じページを区別させたいんですが、
クラス名で区別させるんだと思いますがそのクラス名が分かりません

今現在は
getid("ウインドウタイトル","IEFrame")

でやっています
どなたかお願いします

842 :名無しさん@お腹いっぱい。:2016/03/09(水) 18:17:29.81 ID:llmIWySs0.net
やれているならそれで良いんじゃないの

クラス名が知りたいなら
自分で調査スクリプトを描け(個人的には最初に造るもんだと思う)
SPY++使えVisualStudioCommunityは無料でコレも付いてる
過去レスにSPY++互換ツールもあってそれを使っている人も居る

でもURLとかでクラス名は変わったりしないから一緒だよ

843 :名無しさん@お腹いっぱい。:2016/03/09(水) 18:25:43.67 ID:sRxQkC9R0.net
>>841 教えてヤフーにあったよ
オイラもそれでフラッシュゲームのバックグラウンド化に成功した
(´・ω・`)

844 :名無しさん@お腹いっぱい。:2016/03/09(水) 18:47:20.16 ID:mQOmooo80.net
>>842
ごめんなさい
今現在↓こう書いてるのですが、このIEFrameというのがクラス名ですよね?
getid("ウインドウタイトル","IEFrame")
二つ目のIEではこれはなんと書けばいいんでしょう?

>>843
お手数ですが、そのURL教えてもらえませんか?

845 :名無しさん@お腹いっぱい。:2016/03/09(水) 19:04:38.44 ID:sRxQkC9R0.net
おいおい それぐらい自分で探しなよ
オイラはそれを保存してるからもうそのページに用はないんだよね
(´・ω・`)

オイラもフラッシュゲームのバックグラウンド化について
検索しながら試行錯誤しながら廻りまわってたどり着いたんだよね

オイラたちはヒントをだす
あとは自分で調べる、試す これは基本だよ

846 :名無しさん@お腹いっぱい。:2016/03/09(水) 19:26:22.70 ID:llmIWySs0.net
一般論として
クラス名は単なるウインドウの種類の宣言でしかない
従ってほぼ全てのアプリで2つ目のウインドウだからといって違うクラス名になったりはしない
それぞれのウインドウはIDで区別される

UWSCの機能だけでやろうとしたらGETALLWINを使ったりする

個人的にはIEのタブを探して操作するなら
SHDocVw.ShellWindows から目当ての SHDocVw.InternetExplorer を見つけてCOM操作するけれどね

どっちにしてもいきなり二つ目のウインドウってアクセスは出来ない
IEのウインドウをループで回して対象URLのウインドウをピックアップして集めてから
その何個目ってしないと駄目

847 :名無しさん@お腹いっぱい。:2016/03/09(水) 19:28:29.35 ID:llmIWySs0.net
で、面倒臭いなと思ったら半自動スクリプトにしたら良いんだよ

スクリプトの最初に操作対象をクリックして下さいとか表示するとかね
完全自動化はそのための知識が揃ってからチャンジしたら良い

848 :名無しさん@お腹いっぱい。:2016/03/09(水) 19:59:37.81 ID:ZH6SCA5x0.net
UWSC公式サイトのFAQに載ってる毎度の質問だな

849 :名無しさん@お腹いっぱい。:2016/03/10(木) 00:09:29.62 ID:kbf2APsQ0.net
http://canal22.org/kansu/getctlhnd/

850 :名無しさん@お腹いっぱい。:2016/03/11(金) 02:09:47.22 ID:vpN6R87y0.net
AutoHotKeyとの違いってなに?
こっちに出来て向こうにできない、またはその逆とか

851 :名無しさん@お腹いっぱい。:2016/03/11(金) 02:24:04.07 ID:q9CfIyKs0.net
日本語変数は無理なんじゃないかな

852 :名無しさん@お腹いっぱい。:2016/03/11(金) 02:34:58.77 ID:ZLCOlBAo0.net
自作関数をEXITで抜けるみたいに、CALLで呼んだものを途中で抜けるってできるの?

853 :名無しさん@お腹いっぱい。:2016/03/11(金) 03:46:02.49 ID:fLUkQ1x50.net
EXITじゃないの?

854 :名無しさん@お腹いっぱい。:2016/03/11(金) 03:53:20.39 ID:8BXL68Gt0.net
CALLが何かを全く理解してない奴って多いよね

855 :名無しさん@お腹いっぱい。:2016/03/11(金) 13:22:41.14 ID:TzmisRaw0.net
「呼んだもの」のなかで途中で抜けるように作れば抜けるし、最後までやるように作れば最後までやるだけだが。

856 :名無しさん@お腹いっぱい。:2016/03/11(金) 15:51:14.74 ID:9MIhB+Zw0.net
Firefox系ブラウザ って
FLASHブラウザゲームに
MOUSEORGのMORG_DIRECTって使えないの?
BTNが反応しませんでした
Chromeは使えましたが、
Chromの方は、MORG_BACKがCHKIMGで認識しませんでした

857 :名無しさん@お腹いっぱい。:2016/03/11(金) 17:05:56.39 ID:xL247s8c0.net
煽りじゃなくて頑張った結果が使えないのなら使えないのでしょう

ブラウザはIE以外はマルチプラットフォームのため標準コントロールを使用していないし
裏になったら再描画しないパターンもあるしね

裏動作は出来る時もある位の気持ちで
仮想化環境を使って最前面か別PCが安定ってのがFAQだよ

858 :名無しさん@お腹いっぱい。:2016/03/11(金) 17:41:53.19 ID:uLXjBvrS0.net
hoge=

859 :名無しさん@お腹いっぱい。:2016/03/11(金) 17:52:21.69 ID:uLXjBvrS0.net
すいません、NGワードで弾かれたっぽいです


hoge="あいうえおあいうえお"

上記変数の、左から5番目の「お」だけを
「ん」に変えたいんですけど、そんな命令ありますか?
置換命令のREPLACEだと、番号指定は無理ですよね?

hoge=COPY(hoge,1,4)+"ん"+COPY(hoge,6)
遠回りな気がしますが、こんな感じにするしかないんでしょうか?

860 :名無しさん@お腹いっぱい。:2016/03/11(金) 17:57:29.45 ID:8eZkzZWt0.net
仮想化はOS用意しないといけないからなあ
linuxとか無料らしいからそれ使えればいいけどな

861 :名無しさん@お腹いっぱい。:2016/03/11(金) 18:21:03.26 ID:xL247s8c0.net
>>859
それしかないって事はないけれど特に近道も無いよってのが答えだと思う

VBSの文字列操作用や正規表現用のオブジェクトを生成して処理したり出来るが
特に行数が減るわけではない(寧ろ増える)

昔と違ってメモリを節約する努力なんて不要なんだから
行数や命令を減らす努力はそれ程重要じゃない
最適化しすぎて同じ結果になるけれどやりたい事との文脈が違う場合とか
後から見ると混乱のもとになるからね

メインの処理のやりたい事が「文字列のn文字を入れ替える」なら
そういうユーザ関数を作成して抽象化したら良いのよ

862 :名無しさん@お腹いっぱい。:2016/03/11(金) 18:28:44.96 ID:HWMGVE3/0.net
遠回りどころか、処理的には replace よりむしろ近道なのでは

863 :名無しさん@お腹いっぱい。:2016/03/11(金) 19:10:33.56 ID:9aIMxtHY0.net
>>856 ただのバックグラウンドならできる
(画面が隠れてたり最小化だとできない)
クラス名を取得してハンドルする
教えてヤフーにやり方のヒントがある
(´・ω・`)

864 :名無しさん@お腹いっぱい。:2016/03/11(金) 19:19:08.73 ID:LoB9QIb70.net
バックグラウンドと画面が隠れていることの違いって何

865 :名無しさん@お腹いっぱい。:2016/03/11(金) 20:39:57.96 ID:9MIhB+Zw0.net
>>863
クラス名なら、Firefoxは、MizillaWindowsClass
Chromeは、Chrome_RenderWidgetHostHWND
これは取得できて、ハンドルも取得できていて
それは、わかってるんです。
ただのバッググラウンド状態でももちろん試しました
Yahoo知恵袋なども結構参照した方です
ですが、IEとChromeは、MORG_DIRECTが使えて
Firefoxだけは、MORG_DIRECTが使えませんでした。
BTNが反応してくれない。それってあり得るんですかね?

866 :名無しさん@お腹いっぱい。:2016/03/11(金) 23:22:31.33 ID:V+G/WUuc0.net
While True

ifb CHKIMG("A.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

else
ifb CHKIMG("B.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)

else
ifb CHKIMG("C.bmp")
BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
else
sleep(0.3)
BTN(LEFT,CLICK,1000,500)

endif
endif
endif

sleep(0.1)
WEND

こんな感じのマクロを組んだのですが最後の
sleep(0.1)
BTN(LEFT,CLICK,1000,500)
が1秒くらい間隔開けて連打するので困っています
0.3秒くらいの間隔で連打させたいのですが何を弄ればいいのでしょうか?

867 :名無しさん@お腹いっぱい。:2016/03/11(金) 23:37:24.40 ID:q9CfIyKs0.net
0.3秒+500ミリ秒+0.1秒=0.9秒

当たり前の話でんがな

868 :名無しさん@お腹いっぱい。:2016/03/11(金) 23:40:11.60 ID:q9CfIyKs0.net
間違えたハズカシ
つかchkimgは範囲が広いとそれだけ時間かかるからPCのスペック次第で時間が変わる

869 :名無しさん@お腹いっぱい。:2016/03/11(金) 23:55:24.06 ID:V+G/WUuc0.net
>>868
なるほど、処理が追いついていないと
そこそこのスペック持たせてるはずなのに画像認識の処理ってけっこうパワーいるのに驚きです

870 :名無しさん@お腹いっぱい。:2016/03/12(土) 00:22:19.71 ID:vIYJtZWi0.net
× BTN(LEFT,CLICK,1000,500)

○ BTN(LEFT,CLICK)

871 :名無しさん@お腹いっぱい。:2016/03/12(土) 00:58:30.41 ID:JA7kKoOW0.net
>>870
その場合どうやって座標の指定をするので?

872 :名無しさん@お腹いっぱい。:2016/03/12(土) 05:37:53.21 ID:vIYJtZWi0.net
あ、つい。数字をミリ秒と読んでしまって。

画像を小さくして範囲を絞れば速くなります。

範囲を絞るために GETID() で対象ウィンドウを特定して
STATUS() で座標を取って CHKIMG() で範囲を指定します。
MOUSEORGで基準座標を対象ウィンドウにすれば
範囲は 0, 0 からサイズ x, y で指定できるので楽です。

他の方法としては
数ドットの色だけで判定できる場合は
検索範囲の画像を SAVEIMG() でクリップボードにコピーして
クリップボードから PEEKCOLOR() で検索すると早いです。
でも、数ドットで済むようなら1秒もかかってませんね。

873 :名無しさん@お腹いっぱい。:2016/03/12(土) 08:55:36.12 ID:1ZX49PQ60.net
>>866
なんか凄い見にくいけどこういうことだよね?
While True
  ifb CHKIMG("A.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  elseif CHKIMG("B.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  elseif CHKIMG("C.bmp")
    BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
  else
    sleep(0.3)
    BTN(LEFT,CLICK,1000,500)
  endif
  sleep(0.1)
WEND

sleep(0.3)の部分は3回試した後だし、sleep要らないのでは

874 :名無しさん@お腹いっぱい。:2016/03/12(土) 12:51:15.36 ID:ah+GWDsu0.net
ヒント@
ループ開始時に開始時間を記録
その他のボタンクリック前の時間と開始時間を引いて経過時間を記録
経過時間が300ミリ秒以内ならその時間だけスリープ

ヒントA
DEF_DLL timeGetTime(): LONG: winmm.dll //ミリ秒単位の時間を取得
(わざわざwin32api使うのはUWSCは経過時間の取得は小数点(割合)になるので直感的じゃないから)

875 :名無しさん@お腹いっぱい。:2016/03/12(土) 12:54:01.60 ID:fkR2rJoF0.net
まあ今回の場合、処理が0.6秒位かかっているようだから
スリープ0にしたところでダメだし時間測るのは無意味と思うけどね。

どちらかというと範囲制限の方が有効だろう

876 :名無しさん@お腹いっぱい。:2016/03/12(土) 13:11:01.48 ID:ah+GWDsu0.net
それ前提のつもりでした言葉足らずだったね
0.3秒感覚でクリックしたいならそうなるようなロジックが必要ですよと

877 :名無しさん@お腹いっぱい。:2016/03/12(土) 20:47:24.15 ID:XzxPU9E/0.net
タイミングはシビアになるかもだけど、Thread()で0.3秒ごとにクリック
メインではChkimg()してヒットしたらフラグを立てて
Threadのほうのクリックを抑止してメイン側でクリック
とか?

878 :名無しさん@お腹いっぱい。:2016/03/13(日) 01:10:40.53 ID:yStCxW+O0.net
まず最初にみんなありがとう
せっかく教えてくれるのにごめん
ミジンコにとっては半分近くが呪文だったのです

>>872
もうちょい画像絞ってみます
知らない関数もあるのでそれも調べてみます

>>873
sleepよりも何よりもelseifの存在を忘れてた自分が馬鹿でした
適当なサイトのコピーから改竄してたのですがこれでC+齧ってたのかと思うと恥ずかしいです

>>874
誤差分だけスリープなんてできたんですね
>>875さんの件も含めて考えて、それで処理時間含めての最短を設定できるように調整してみます

>>877
並列は考えたのですが他の作業中に「そこ」をクリックされると困るので破棄しました
それを破棄した理由が連打させたい時に画面には決まった画像というのがないという事なのです


拾い物の改竄だけだと何も身につかないと再確認して自分を恥じます
勉強しなおして出直しますのでその時また困ったらお力をお貸しください

879 :名無しさん@お腹いっぱい。:2016/03/13(日) 05:59:29.63 ID:Oa7DQQ9u0.net
chkimg3つをそれぞれ別スレッドで動かして
発見フラグが一つもない時だけ1000,500をクリックでいいのでは
これなら今どきのマルチコアCPUなら3倍速で動くはず?

880 :名無しさん@お腹いっぱい。:2016/03/13(日) 10:34:38.97 ID:5BxruRGM0.net
いまどきの Core i5 でも安いのは物理2コアなので3倍速になんてなりません。
タスクマネージャで4コアに見えても、2つは論理CPUかもしれません。

仮に4コアあったとしても、3コアをUWSCが独占したら残り1コアでアプリが動くわけで
ちょっと重すぎますね。

どうしてもクリック速度を上げないといけないなら
画像を工夫するか、ほかの画像処理ツールを使うべきでしょう。

UWSCだと3つの画像で3回キャプチャしますが、
キャプチャをして画像比較を別の画像処理ライブラリを使って比較すれば
1回のキャプチャで3回比較できます。
が、UWSCで比較しても遅いので高速な言語を使う必要が・・・

881 :名無しさん@お腹いっぱい。:2016/03/13(日) 10:38:41.65 ID:5BxruRGM0.net
ARToolKitで複数マーカーを使ってみた
https://youtu.be/uoncHfnYWHM

ARToolKitを使った 「拡張現実感」
http://kougaku-navi.net/ARToolKit/

これだけグリグリ動くんだから
ビットマップの完全一致くらい一瞬じゃないとおかしいんだけどね。

おまけ
http://astertune.com/?p=1374
> OpenGLより高速で、iOSに特化したMetalというAPIが昨年登場 (2015年8月30日の記事)

http://codeit.blog.fc2.com/blog-entry-18.html
> SSE を使用することにより約二倍の高速化が見込まれ

http://tanakah.blogspot.jp/2011/02/gt5directx1.html
> 車速とギアを認識するDirectXフィルター
> やり方ですが、OpenCV1.0についてくるproxytransフィルターを改造してつくります。
> OpenCV cvMatchTemplate()

OpenCvSharp 投稿日: 2014年2月6日
https://jpusergis.wordpress.com/2014/02/06/opencvsharp/

C#ならUWSCからPowerShell経由で呼び出せるけど
呼び出しに1秒くらいかかるんだよね。

> 315 名前:Nekorabbit ◆jpnWwiLScI [sage] 投稿日:2014/11/30(日) 07:16:25.97 ID:aCUfDH4j0.net
>   画像認識関数 ChkImgX-ver1.2.0
>   ttps://googledrive.com/host/0B83tioTzFacPRExEWlpEOXhWbDQ/ChkImgX-ver1.2.0.zip
>  
>   やっぱりOpenCVを使うようにした。それとソースコードを追加

882 :名無しさん@お腹いっぱい。:2016/03/13(日) 10:40:01.87 ID:5BxruRGM0.net
やっぱりシンプルで高速なライブラリってのは他にないんだな。
シンプル過ぎてな。

883 :名無しさん@お腹いっぱい。:2016/03/13(日) 13:21:20.33 ID:DqbPwOfU0.net
>>866

OPTION SHORTCIRCUIT
While True
 ifb CHKIMG("A.bmp") or CHKIMG("B.bmp") or CHKIMG("C.bmp")
  BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)
 else
  BTN(LEFT,CLICK,1000,500)
 end
WEND

試してないが、こうやったほうが早いかも
OPTION SHORTCIRCUITは片方の条件を見つけた時点で以降の条件は探さないらしい
これで動いてくれると思う

884 :名無しさん@お腹いっぱい。:2016/03/13(日) 13:44:27.34 ID:MyuwQ+3+0.net
>>883
それ一緒だから。

実質スリープ無くしただけ

885 :名無しさん@お腹いっぱい。:2016/03/13(日) 14:35:12.26 ID:0ijLe2jo0.net
UWSCのSHORTCIRCUITはオール・オア・ナッシングで
副作用への注意が必要だからあまり好きじゃない

短絡評価の条件式があれば良いんだけれどね

886 :名無しさん@お腹いっぱい。:2016/03/13(日) 16:32:38.86 ID:nEkRwzyP0.net
ただの秒数設定ミスのクソ質問かと思いきや微妙に建設的な質問になっててワロタ

887 :名無しさん@お腹いっぱい。:2016/03/13(日) 16:45:35.50 ID:E0WmGTEK0.net
>>878
いろいろな事を考えるとelseifでは対応できない場合も想定されるから
総合的に考えると
else
if
のままのほうがいいみたい?
まぁその分endifが増えるんだけど

888 :名無しさん@お腹いっぱい。:2016/03/14(月) 19:14:44.98 ID:i2rVe3gR0.net
それは総合的に考えるモノじゃないだろう
必要に応じて使い分けるだけで

889 :名無しさん@お腹いっぱい。:2016/03/14(月) 22:57:21.23 ID:yWL5pN6J0.net
保守のやりやすさまで考えるとelseif一択
else ifのほうが綺麗に書けるケースはちょっと思い浮かばない

890 :名無しさん@お腹いっぱい。:2016/03/15(火) 01:55:30.43 ID:47j5cpZS0.net
個人的にifは二択のときだけ
それ以外の選択肢が増えそうなときとかはcase文の方を使いたいとこだ…。

891 :名無しさん@お腹いっぱい。:2016/03/15(火) 03:45:02.21 ID:SCAnh7Td0.net
ifとcaseでは明確に用途が違うような。

892 :名無しさん@お腹いっぱい。:2016/03/15(火) 03:50:19.31 ID:dAPydsp10.net
俺はcaseは限定的な時にしか使いたくないな
逆にそれ以外はif分岐させてる

893 :名無しさん@お腹いっぱい。:2016/03/15(火) 04:07:47.33 ID:SCAnh7Td0.net
いやいやいや
caseはひとつの条件式の結果で分岐するもので
elseifは複数の条件式を使うものでしょう?
かぶる部分も無いではないけど、普通は用途で決まるような。

894 :名無しさん@お腹いっぱい。:2016/03/15(火) 05:28:13.13 ID:47j5cpZS0.net
確かに用途でも決まるね。。
俺が想定してのが単純な一つの値の判定だったから混乱させて申し訳無い

複数の判定が一つの条件式にあると
後から読みにくかったり理解しにくくなったりしそうで
ifの中には一つの判定だけをなるべく書く様にしてるからつい…。
中にどんどんif入れてくのも同様の状態になるから入れ子は少なくすることを検討した作りにしてる

895 :名無しさん@お腹いっぱい。:2016/03/15(火) 11:35:32.40 ID:Ye8AnKp+0.net
caseはbreakさせないって使い方もあるから、一概にどっちがいいとは言えないね

896 :名無しさん@お腹いっぱい。:2016/03/15(火) 11:57:04.20 ID:RI0XNTAs0.net
なるほど思い出した

897 :名無しさん@お腹いっぱい。:2016/03/15(火) 13:32:13.65 ID:H7Ch8AYF0.net
UWSCのSELECTはフォールスルー使えなくない?
ELSEIF連鎖はメーラーの振り分けみたいな優先順位付き判定群だから使い道が違う。
SELECTは1つの判定で複数の分岐。
UWSCのSELECTは、SELECTに書く式を空にして、CASE側に判定式書いても使えるんで、
ELSEIFと同様のこともできるってだけ。

898 :名無しさん@お腹いっぱい。:2016/03/15(火) 14:33:20.13 ID:K82PCnuw0.net
>>897
> SELECTに書く式を空にして、CASE側に判定式書いても使える

なにそれ。そんなこと出来る?
試した限りではselectに式書かなかったら
case側に何を書いても最初のcaseが実行されるんだが。

select
 case 0=1; print "0=1"
 case 1=1; print "1=1"
selend

こんなのでも0=1って表示されちゃう。エラーも出ん。

899 :名無しさん@お腹いっぱい。:2016/03/15(火) 14:44:41.61 ID:zE0f+pvP0.net
空は無理だけど
Select trueとかにしておけばいける

900 :名無しさん@お腹いっぱい。:2016/03/15(火) 14:51:16.05 ID:215if6Wy0.net
Selectの式の結果 と Caseの式の結果が
最初に一致するCase文が実行される感じなんかな

901 :名無しさん@お腹いっぱい。:2016/03/15(火) 15:13:32.26 ID:H7Ch8AYF0.net
すまんね空は無理だった
ご指摘の通りtrueにすれば、式がtrueとなる最初のcaseが実行され、
空欄もしくはfalseだと、式がfalseとなるcaseが実行されるね。

902 :名無しさん@お腹いっぱい。:2016/03/15(火) 23:51:21.72 ID:PCeK8oit0.net
CHKIMGで画像判別 一致したら then で
SOUNDでmp3を再生にしたんですが
音が出たり出なかったり
SLEEPでウエイトを入れたり 構文に trueにして同期させたりしても変わらない
レジストリ関係なのかな?
どこを弄れば直るんでしょうか?

903 :名無しさん@お腹いっぱい。:2016/03/16(水) 07:35:12.72 ID:LJ+euZnJ0.net
画像判別ができてないのか、音が出てないだけなのか切り分けできてんの?

904 :名無しさん@お腹いっぱい。:2016/03/16(水) 08:34:48.88 ID:nAh2yAGb0.net
単にChkimg()で一致してないだけじゃないのか

905 :名無しさん@お腹いっぱい。:2016/03/16(水) 08:56:46.03 ID:yzWTIl7F0.net
あるある

906 :名無しさん@お腹いっぱい。:2016/03/16(水) 10:52:10.44 ID:8JIJQW6i0.net
Windows7では問題なく動いていたのですが
仮想環境のWindows Vistaでは一部画像認識が上手くいきません
同じく仮想環境下のWindows7では問題ありませんでした
認識しない画像をVista内で切り取るとうまくいくのですが
それでは膨大な作業量になります
ご助言をお願い致します

907 :名無しさん@お腹いっぱい。:2016/03/16(水) 11:09:21.22 ID:/XbN41Fg0.net
chkimgの色幅を試す
ChkImgXを試す
照合画像を造り直す

基本的にグラフィックドライバでイメージは変わる可能性があるという事を覚えておこう
だから使用する環境でキャプチャするのが鉄板

908 :名無しさん@お腹いっぱい。:2016/03/16(水) 11:16:46.80 ID:8JIJQW6i0.net
ありがとうございます
ちょっと量が量なのでWindows7のライセンスもう一つを購入したいと思います

909 :名無しさん@お腹いっぱい。:2016/03/16(水) 18:04:20.19 ID:2Mv7Yb1h0.net
>>907
グラフィックドライバで変わるのか
キャプチャのやり直しは正直疲れる

910 :名無しさん@お腹いっぱい。:2016/03/16(水) 19:52:25.50 ID:0mxs1TOv0.net
変わるんだよな〜 アンチエイリアスなんだろうな。
あとOSやブラウザの変更でフォントも変わることがあり、
文字列取得できなくて画像判定で代用してるとハマるね〜
環境で変わるのに対抗するのにも、一番有効なのは仮想化。

911 :名無しさん@お腹いっぱい。:2016/03/18(金) 14:40:05.44 ID:fdkkgXvY0.net
dim array[] = 0,1,2,3,4,5,6,7,8,9

for i=0 to 100
 j = i mod 10
 t=G_TIME_SS mod 10
 print array[j]+" "+t
 gettime()
 if array[j]=t then i=i+t
 sleep(0.1)
next

というように特定条件下でループを任意の回数飛ばしたいんですが
forの変数は内部から参照することは出来ても値を変更して
ループに反映することは出来ないみたいで思うようには動きません。

forではなくwhileを使えば解決する話ですが、forでこういう事は絶対出来ないんでしょうか?

912 :名無しさん@お腹いっぱい。:2016/03/18(金) 15:05:30.02 ID:Y8LfVAQe0.net
for は 初期値 終了値 加算値 をシンプルに表現してループさせる構文なので無理

913 :名無しさん@お腹いっぱい。:2016/03/18(金) 17:26:15.26 ID:Dic6Ty9l0.net
if i<k then continue
...
if array[j]=t then k=i+t
とかじゃだめ?

914 :名無しさん@お腹いっぱい。:2016/03/18(金) 18:48:34.55 ID:37KGhb4W0.net
申し訳ない・・・知恵を貸して下さい・・・。

やりたい流れのイメージ
@一致画像をクリック

画像判断。画像によって条件分かれ
(ここの作り方が不明・・・)

B一致画像をクリック

C一致画像をクリック

915 :名無しさん@お腹いっぱい。:2016/03/18(金) 18:50:26.76 ID:37KGhb4W0.net
画像判断の部分はこんな内容です。分かりますか?
@ifb CHKIMG(“xxx.bmp”)
  x=G_IMG_X
  y=G_IMG_Y
  BTN(LEFT, CLICK, x , y , 100)
endif
――――――――――――――――――
1、画像Aがあるか判定
2、画像Aがある場合は「B」へ
3、画像Aが無く画像Bがあった場合は↓
(Cの画像をクリック)
(Dの画像をクリック)
4、順番にC.Dの画像をクリックし終わったら
「@」最初の動作にへ戻る、
又は「B」へ通常移行。
又は「B」をスキップし「C」へ移行
――――――――――――――――――

916 :名無しさん@お腹いっぱい。:2016/03/18(金) 18:51:32.08 ID:37KGhb4W0.net
素人すぎて正しく伝わっているか心配ですが、
アドバイスを貰えると有り難いです・・・。

917 :名無しさん@お腹いっぱい。:2016/03/18(金) 18:56:09.29 ID:37KGhb4W0.net
尚、
「@」最初の動作にへ戻る、
又は「B」へ通常移行。
又は「B」をスキップし「C」へ移行

この3パターンは「3個同時で判定」ではなく、
全て「単体」で動作させる事を前提とした場合のスプリクトです。

918 :名無しさん@お腹いっぱい。:2016/03/18(金) 19:01:31.23 ID:JI+YMOVs0.net
そうだね!がんばれ!

919 :名無しさん@お腹いっぱい。:2016/03/18(金) 19:13:18.26 ID:cs2HMD100.net
フローチャート作って

920 :名無しさん@お腹いっぱい。:2016/03/18(金) 19:14:32.75 ID:37KGhb4W0.net
>>919
了解致しました。
少々お待ち下さいませ。

921 :名無しさん@お腹いっぱい。:2016/03/18(金) 19:44:54.92 ID:37KGhb4W0.net
>>919
お待たせしました。2パターン作りました。
画像Cからのジャンプ先は@にしてますが、場合によってBやCにも変えたいです。
http://www.dotup.org/uploda/www.dotup.org783399.jpg
http://www.dotup.org/uploda/www.dotup.org783402.jpg
シンプルに作ってみたのですが、どうでしょうか。

922 :名無しさん@お腹いっぱい。:2016/03/18(金) 20:28:40.25 ID:3mTNmK/i0.net
そこまで出来てるならそのままコーディングすればいいだけじゃ?

923 :名無しさん@お腹いっぱい。:2016/03/18(金) 20:41:45.76 ID:XTMTGWl20.net
>>922
元々スプリクトを使わない自動化ソフトを使っており、頭の中で流れの構築は出来ているのですが、
スプリクト上に起こすのがどうしても難しく、、。
頭でイメージ出来ているのに、絵に描けない状態です、、、。

924 :名無しさん@お腹いっぱい。:2016/03/18(金) 20:49:53.51 ID:wiffpfVZ0.net
@, B, C をそれぞれ関数化するといいような気がするよ

925 :名無しさん@お腹いっぱい。:2016/03/18(金) 21:06:54.37 ID:a/2iCbr10.net
>>921です。
正直センスが無さ過ぎて、見せるのも恥ずかしいのですが・・・。
一応途中まで作ったスプリクトです。
http://www.dotup.org/uploda/www.dotup.org783529.jpg

926 :名無しさん@お腹いっぱい。:2016/03/18(金) 21:43:41.41 ID:p+rJK2780.net
>>925
画像1と画像2の関係性は?
画像1をクリックしたら画像1が消えて画像2がでてくる?
画像1をクリックしたら画像1も画像2も表示されてる?

927 :名無しさん@お腹いっぱい。:2016/03/18(金) 22:12:44.85 ID:a/2iCbr10.net
>>926
画像はクリック毎に、前の画像は消えて、
次は必ず決まった画像が一個出ます。

画像判断の所だけ、別の画像が出てくる場合がある為、
この様な条件付き画像判断スプリクトを組み込む必要があります。

928 :名無しさん@お腹いっぱい。:2016/03/18(金) 23:36:00.24 ID:lyGpkKZO0.net
たぶん、"IF"ってのの使い方を勉強するといいと思う

929 :名無しさん@お腹いっぱい。:2016/03/18(金) 23:44:46.31 ID:p+rJK2780.net
>>927
while 1
 if chk 画A
  if chk 画C
  elseif chk 画B
  endif
 elseif chk 画B
  if chk 画D
  elseif chk 画C
  endif
 elseif chk 画A
 elseif chk 画@
 endif
wend
こういう感じ?

930 :名無しさん@お腹いっぱい。:2016/03/19(土) 00:04:11.56 ID:SY2bECL70.net
while true
 画像クリック("画像@")
 画像クリック("画像A")
 if chkimg("画像A") then break
 画像クリック("画像B")
 画像クリック("画像C")
wend

画像クリック("画像B")
画像クリック("画像C")


procedure 画像クリック(画像)
 chkimg(画像)
 btn(left, click, G_img_X, G_img_Y)
fend

931 :名無しさん@お腹いっぱい。:2016/03/19(土) 00:08:39.27 ID:BW58rut60.net
フローチャート作れるならトライアンドエラーで頑張れ

932 :名無しさん@お腹いっぱい。:2016/03/19(土) 01:41:22.95 ID:bIkT5e8S0.net
>>930
素人の私でもめちゃくちゃ分かりやすいです、激しく感謝します!
動作確認してみましたが、全く問題なく希望通りの動きをしてくれました!

最後にもう一つだけ教えてください・・・。画像Cの後に「wend」を持ってきて
一番最初の「while true 」に戻らせてループさせようとしたらエラーが出ました。
これは何が原因になるのでしょうか??

933 :名無しさん@お腹いっぱい。:2016/03/19(土) 01:43:58.70 ID:4bvWfFXm0.net
whileとwendは必ず1個ずつのセットじゃないとだめ
一連の処理を繰り返させたいなら、wendを画像Cの下に置くだけじゃなくて最初のwhileの更に上にwhileを置かないと

934 :名無しさん@お腹いっぱい。:2016/03/19(土) 01:56:50.27 ID:bIkT5e8S0.net
>>933
私も最初そう思ったんですが、なんかエラーが出たのであれ・・?と思いまして
http://www.dotup.org/uploda/www.dotup.org784002.jpg
こういう事ですよね?

935 :名無しさん@お腹いっぱい。:2016/03/19(土) 02:07:08.90 ID:FgddRy/I0.net
trueが無いじゃん。

936 :名無しさん@お腹いっぱい。:2016/03/19(土) 02:07:45.33 ID:4bvWfFXm0.net
ワロタ

937 :名無しさん@お腹いっぱい。:2016/03/19(土) 02:08:06.81 ID:jrQgNiRM0.net
最初のwhileの条件が無いとか?
ヘルプで分かる内容は質問しない方がいいよ

938 :名無しさん@お腹いっぱい。:2016/03/19(土) 02:35:41.05 ID:bIkT5e8S0.net
while true
初歩的なミスでした、、、申し訳ないです。
皆様のアドバイスのお陰で本当に捗りました。
繰り返しになりますが、有り難うございます!
wend

939 :名無しさん@お腹いっぱい。:2016/03/19(土) 02:56:04.14 ID:tZvnxb2Q0.net
インデント入れろよ。

940 :名無しさん@お腹いっぱい。:2016/03/19(土) 03:59:10.94 ID:aYU7I2EX0.net
みんな優し過ぎてww

941 :名無しさん@お腹いっぱい。:2016/03/19(土) 08:12:31.88 ID:BINz+wH10.net
優しいな
俺がこんな質問した時は完全スルーされたぞ

942 :名無しさん@お腹いっぱい。:2016/03/19(土) 08:20:59.56 ID:fFrQFvev0.net
自分でコードを書く努力している人だからでしょ

943 :名無しさん@お腹いっぱい。:2016/03/19(土) 11:07:56.96 ID:YmXGVn/20.net
フロチャート作ってちょっとづつスクリプトを書いてまめにテストする
オイラの経験上ifb while たまにbreakでたいがいのゲームは動く
コツは最初はsleepに余裕をもって書く

パートを分けるんだな 戦闘、補給、修理 これらをcallで呼び出す
そうするとイベントやりながら通常戦闘もできるぞ
ゲームの完全自動化までがんばれ
(´・ω・`)

944 :名無しさん@お腹いっぱい。:2016/03/19(土) 11:21:09.91 ID:YmXGVn/20.net
あとゲームにありがちな点滅、明滅するボタン
ボタンの上に光がもやもやしてたり炎がメラメラしてるときは
他の安定してる画像をchkimgしてそこからx+A y+Bするときっちりボタン押せるぞ
(´・ω・`)

945 :名無しさん@お腹いっぱい。:2016/03/19(土) 14:27:55.04 ID:7vlPDXm10.net
>>944
そういうのは短い時間でchkimgを繰り返せば認識できるぞ

946 :名無しさん@お腹いっぱい。:2016/03/19(土) 14:43:51.18 ID:w1t+Hd6h0.net
>>945
それするぐらいなら>>944のほうが確実

947 :名無しさん@お腹いっぱい。:2016/03/19(土) 14:54:36.33 ID:7vlPDXm10.net
>>944では通用しないケースは割とあるからな

948 :名無しさん@お腹いっぱい。:2016/03/19(土) 20:11:11.15 ID:BINz+wH10.net
メラメラはいつもは諦めてほかの画像からの相対座標使ってますけど
メラメラは一致するまでwhile chkimgでいいのですか?
メラメラは私も苦手です

949 :名無しさん@お腹いっぱい。:2016/03/19(土) 20:26:21.82 ID:71k0Vm/10.net
色幅を持たせてchkimgすればいい

950 :名無しさん@お腹いっぱい。:2016/03/19(土) 20:52:39.80 ID:BINz+wH10.net
>>949
ありがとうございます。感謝します
もう一つ質問失礼します
今色幅IMG_MSK_BGR4でやったのですがもっと広げる方法ありますか?
メラメラが水色-黄色-赤みたいな感じのメラメラです

951 :名無しさん@お腹いっぱい。:2016/03/19(土) 20:57:57.92 ID:bgGs7ybY0.net
そこまでは無理

952 :名無しさん@お腹いっぱい。:2016/03/19(土) 21:02:17.45 ID:BINz+wH10.net
>>951
ありがとうございます。素直に相対座標を使います

953 :名無しさん@お腹いっぱい。:2016/03/19(土) 21:04:56.10 ID:szW1lJKS0.net
色無視入れたらどう

954 :名無しさん@お腹いっぱい。:2016/03/19(土) 21:49:17.82 ID:BINz+wH10.net
gifのメラメラは色幅と色無視両方1秒以内で認識しました
FFのような(画像?)メラメラはどちらもダメでした。10秒タイムアウト

では失礼します

955 :名無しさん@お腹いっぱい。:2016/03/19(土) 21:50:22.43 ID:71k0Vm/10.net
>>950
定数じゃなくても、自分で好きな数値指定できるよ

956 :名無しさん@お腹いっぱい。:2016/03/19(土) 22:48:20.75 ID:ejAiv50P0.net
不特定多数の場で堂々とゲームの自動化を口にするでないグラブル厨か?
ぼかして言うのが作法だぞ。
作法を守らないならネトゲそのものが嫌になるような脱洗脳スクリプト貼るからな。

957 :名無しさん@お腹いっぱい。:2016/03/19(土) 22:49:54.86 ID:ejAiv50P0.net
にしても本当にフローチャート書いてくるのは珍しいな。
構造文もまともに知らない時点でこれなら十分適正あるな。

958 :名無しさん@お腹いっぱい。:2016/03/20(日) 02:13:45.61 ID:PtQjd96F0.net
以前まではここでゲームの話題はNGだったんだけどね
質問者も変われば回答者も変わった

959 :名無しさん@お腹いっぱい。:2016/03/20(日) 02:49:33.10 ID:157+05md0.net
その以前の前のことも知らんのか
ほんとに変わったな

960 :名無しさん@お腹いっぱい。:2016/03/20(日) 07:39:38.49 ID:6LNOBso90.net
peekcolor関数を使う際に範囲が 指定できますが、
マウスカーソル周囲を指定することってできないのですか?

961 :名無しさん@お腹いっぱい。:2016/03/20(日) 07:45:07.67 ID:6rS3nJ0Q0.net
範囲でない座標のみ
そしてマウス座標は特殊変数に入っている
ヘルプの スクリプト→スクリプト関数→特殊変数 辺りを見ろ

あと本当に周辺を調べたいなら
PEEKCOLORをループさせるユーザー関数化する必要があるぞ

962 :名無しさん@お腹いっぱい。:2016/03/20(日) 08:00:40.40 ID:6LNOBso90.net
ありがとう
マウス座標そのものではなく、
マウス座標から、その周辺を調べたいんです

最終的にPEEKCOLORでマウス座標周辺の色を取得し続けるという動作をしたかったのですが
すみませんPEEKCOLORをループさせるユーザー関数とは、どんなものでしょうか
もう少し詳しく教えてくれませんか

963 :名無しさん@お腹いっぱい。:2016/03/20(日) 08:17:15.47 ID:h63WLHEt0.net
フローチャートじゃなくてそのまんまコードじゃん

964 :名無しさん@お腹いっぱい。:2016/03/20(日) 08:51:03.34 ID:6rS3nJ0Q0.net
考える事を否定している人にはヒントすら惜しいなぁ

マウス座標は特殊変数に入っている
マウス座標の周辺とは矩形であれば−10と+10とかで表現可能
Forは変数に初期値、終了値、増減値を設定してループ可能

後はユーザー関数の引数と戻り値かな
判断材料(引数)とその結果(戻り値)なんで
同じ色が複数あった場合にどうしたいかとか
考えることは色々あるよ

965 :名無しさん@お腹いっぱい。:2016/03/20(日) 16:51:23.89 ID:xNax6tI9f
peekcolorが遅い。
具体的には1点15msくらいかかる。
UWSCが全体画像取得から1点取り出して調べてるから遅いんであって、
ある程度範囲をまとめて取得したいってのがこの質問の趣旨じゃないかな?

そんな方法ありませんか?
ないです。

このスレにある画像判定Xを使うと、3つの画像判定が1回分の画像判定の処理速度でできたりとかするんですか?
それなら画像をドットにして代用できそうですが?

966 :名無しさん@お腹いっぱい。:2016/03/21(月) 19:07:10.29 ID:7t5Ndceu0.net
>>932です。以前、皆様より頂いたアドバイスを元に自分なりにスプリクトを考えてみました。
一応希望通りの動作はしてくれる為、内容としては完成しました。
もしよろしければ「もっとこうしたらいいよ」「こういうやり方もあるよ」等
厳しいお言葉でも結構ですので、アドバイスを頂けると幸いです。
http://www.dotup.org/uploda/www.dotup.org787636.jpg
http://www.dotup.org/uploda/www.dotup.org787638.jpg

967 :名無しさん@お腹いっぱい。:2016/03/21(月) 19:43:31.70 ID:FyEV7Y7F0.net
斬新なインデントですね

968 :名無しさん@お腹いっぱい。:2016/03/21(月) 19:49:10.85 ID:WT79cWH60.net
エクセルかこれ…?

まずはまともなテキストエディタを拾ってくるのが先だろ

969 :名無しさん@お腹いっぱい。:2016/03/21(月) 19:54:36.21 ID:JOINNpX40.net
やっぱりゲームか・・・

970 :名無しさん@お腹いっぱい。:2016/03/21(月) 20:02:44.88 ID:ZoeE04qr0.net
>>967
インデントというか、自分なりに見やすくした結果
こういう分け方になりました・・

971 :名無しさん@お腹いっぱい。:2016/03/21(月) 20:09:11.46 ID:ZoeE04qr0.net
>>968
テキストエディタという物の存在自体をしりませんでした・・・。
サクラエディタという物をDLしてみましたが・・・めちゃくちゃ便利ですねこれ・・。

972 :名無しさん@お腹いっぱい。:2016/03/21(月) 23:00:19.32 ID:+SrzIg6H0.net
サクラエディタは強調ワードにUWSCスクリプトを指定できるのは過去ログ読めば出てくるしやってるよな?

インデントはこれかな〜
https://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB
https://www.google.co.jp/search?&q=%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB

973 :名無しさん@お腹いっぱい。:2016/03/21(月) 23:20:08.26 ID:Dl8KMauT0.net
>>966
ゲームマクロはにごせって言われただろ馬鹿

974 :名無しさん@お腹いっぱい。:2016/03/22(火) 00:18:54.15 ID:YYqgpZK30.net
>>971
emEditorってのもオススメ
サクラと使い分けるのもいいけど

975 :名無しさん@お腹いっぱい。:2016/03/22(火) 04:46:30.63 ID:DDV+vLl80.net
ゲームマクロの質問に答え始めるとド初心者のマクロの話題だらけになるぞ

976 :名無しさん@お腹いっぱい。:2016/03/22(火) 07:19:13.62 ID:ey+ZWHj+0.net
インデント難しい
字下げすると見にくくなって自分でよく解らなくなる

977 :名無しさん@お腹いっぱい。:2016/03/22(火) 07:41:59.43 ID:GjQDazUb0.net
字下げして見難くなるとか何かがおかしい

978 :名無しさん@お腹いっぱい。:2016/03/22(火) 08:10:41.21 ID:C5ffbueJ0.net
while x
    xxxxxxxxxxxxxx
    xxxxxxxxxxxxxx
    xxxxxxxxxxxxxx

    //komento
    while y
        if x = y then break
        xxxxxxxxxxxxxx
        xxxxxxxxxxxxxx
        xxxxxxxxxxxxxx
    wend

    //komentoooo
    while z
        xxxxxxxxxxxxxx
        xxxxxxxxxxxxxx
        xxxxxxxxxxxxxx
        if x = y    //komentoooooo
            xxxxxxxxxxxxxx
            xxxxxxxxxxxxxx
        else
            xxxxxxxxxxxxxx    //komento
            xxxxxxxxxxxxxx    //komento
        endif
    wend
wend

979 :名無しさん@お腹いっぱい。:2016/03/22(火) 08:45:39.65 ID:1TlcaC730.net
aaa(){
  // こっちつかう
}
aaa()
{
  // これの人も多い
}

980 :名無しさん@お腹いっぱい。:2016/03/22(火) 09:00:46.38 ID:C5ffbueJ0.net
} else { //これが無性に気にくわない

981 :名無しさん@お腹いっぱい。:2016/03/22(火) 09:02:54.38 ID:1TlcaC730.net
となると下が一般的なのかな?

982 :名無しさん@お腹いっぱい。:2016/03/22(火) 09:35:25.64 ID:S1yVAMwN0.net
ここは幼稚園か
uwscと関係ない話はほどほどにな

983 :名無しさん@お腹いっぱい。:2016/03/22(火) 23:47:34.60 ID:Ol86bvxv0.net
少し知恵をお貸し下さい。
通常の画像認識は出来るのですが、少し光を帯びた(点滅)の画像の判定はどのようにするのがセオリーなのでしょうか?
色幅は?と思い、BGR3で試してみましたがうまくいきませんでした

while true
ifb CHKIMG("A.bmp") //A画像認識
x=G_IMG_X  //代入
y=G_IMG_Y  //
BTN(LEFT, CLICK, x+5, y+5, 100) //画像クリック
sleep(2) //待機
endif
wend

お願い致します。

984 :名無しさん@お腹いっぱい。:2016/03/23(水) 00:11:32.78 ID:Y8+Uhjvq0.net
ゲームマクロの質問に安易に答えるとこうやって調子こいて次から次へとこういう質問をしてくる

985 :名無しさん@お腹いっぱい。:2016/03/23(水) 00:23:26.39 ID:F3sbSHdJ0.net
>>983
スレチ。
特異点を見つけるだけ。

986 :名無しさん@お腹いっぱい。:2016/03/23(水) 00:24:03.93 ID:LGiv8vs60.net
>>983=>>920じゃないの
当人だとしても別人だとしてもばかちんにかわりは無いけど

987 :名無しさん@お腹いっぱい。:2016/03/23(水) 00:53:32.64 ID:Y8+Uhjvq0.net
どう見ても同一人物

988 :名無しさん@お腹いっぱい。:2016/03/23(水) 01:37:19.33 ID:ojrTHT/Q0.net
しょうもない質問で埋まってきたな

989 :名無しさん@お腹いっぱい。:2016/03/23(水) 11:51:42.28 ID:CF5/3UwB0.net
同一人物じゃねぇだろ。
前のヤツはもう完成したスプリクト張ってたし

990 :名無しさん@お腹いっぱい。:2016/03/23(水) 12:00:41.47 ID:CF5/3UwB0.net
>>983
>>945これでいいじゃん。なにが問題なの?

991 :名無しさん@お腹いっぱい。:2016/03/23(水) 12:34:28.58 ID:Pb+9aq2M0.net
> スプリクト

992 :名無しさん@お腹いっぱい。:2016/03/23(水) 14:20:10.33 ID:LGiv8vs60.net
スプリクトで検索した結果くそわろち


903 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/18(金) 18:56:09.29 ID:37KGhb4W0 [4/6]
尚、
「@」最初の動作にへ戻る、
又は「B」へ通常移行。
又は「B」をスキップし「C」へ移行

この3パターンは「3個同時で判定」ではなく、
全て「単体」で動作させる事を前提とした場合のスプリクトです。

909 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/18(金) 20:41:45.76 ID:XTMTGWl20
>>922
元々スプリクトを使わない自動化ソフトを使っており、頭の中で流れの構築は出来ているのですが、
スプリクト上に起こすのがどうしても難しく、、。
頭でイメージ出来ているのに、絵に描けない状態です、、、。

911 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/18(金) 21:06:54.37 ID:a/2iCbr10 [1/2]
>>921です。
正直センスが無さ過ぎて、見せるのも恥ずかしいのですが・・・。
一応途中まで作ったスプリクトです。
http://www.dotup.org/uploda/www.dotup.org783529.jpg

913 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/18(金) 22:12:44.85 ID:a/2iCbr10 [2/2]
>>926
画像はクリック毎に、前の画像は消えて、
次は必ず決まった画像が一個出ます。

画像判断の所だけ、別の画像が出てくる場合がある為、
この様な条件付き画像判断スプリクトを組み込む必要があります。

993 :名無しさん@お腹いっぱい。:2016/03/23(水) 14:21:00.41 ID:LGiv8vs60.net
951 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/21(月) 19:07:10.29 ID:7t5Ndceu0
>>932です。以前、皆様より頂いたアドバイスを元に自分なりにスプリクトを考えてみました。
一応希望通りの動作はしてくれる為、内容としては完成しました。
もしよろしければ「もっとこうしたらいいよ」「こういうやり方もあるよ」等
厳しいお言葉でも結構ですので、アドバイスを頂けると幸いです。
http://www.dotup.org/uploda/www.dotup.org787636.jpg
http://www.dotup.org/uploda/www.dotup.org787638.jpg

974 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/23(水) 11:51:42.28 ID:CF5/3UwB0 [1/2]
同一人物じゃねぇだろ。
前のヤツはもう完成したスプリクト張ってたし

994 :名無しさん@お腹いっぱい。:2016/03/23(水) 14:49:52.58 ID:q+4+2VgZ0.net
www

995 :名無しさん@お腹いっぱい。:2016/03/23(水) 14:53:03.90 ID:Y8+Uhjvq0.net
ブラゲクソガキは自演までしてんのか
この共通した無駄な部分がある糞コード見りゃ同じってすぐに分かるのにな

996 :名無しさん@お腹いっぱい。:2016/03/23(水) 15:24:33.17 ID:tn83PLJk0.net
>>989
>>989
>>989

997 :名無しさん@お腹いっぱい。:2016/03/23(水) 15:24:46.46 ID:NjVpGs9j0.net
最初に突っ込んでやろうかと思ったけどスルーしておいてよかった

998 :名無しさん@お腹いっぱい。:2016/03/23(水) 15:29:26.46 ID:iSrnwjTb0.net
975 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2016/03/23(水) 12:00:41.47 ID:CF5/3UwB0 [2/2]
>>983
>>945これでいいじゃん。なにが問題なの?


このレスがまた笑えるw

999 :名無しさん@お腹いっぱい。:2016/03/23(水) 15:49:32.31 ID:SZmWshPl0.net
画像認識ってゲーム系以外だと主に何に使うの?

1000 :名無しさん@お腹いっぱい。:2016/03/23(水) 16:32:45.56 ID:U9esxu690.net
スプリクト

1001 :名無しさん@お腹いっぱい。:2016/03/23(水) 18:53:42.87 ID:2z8VVxvV0.net
スクリプトをスプリクトというのは既出をガイシュツ(何故か変換できない)みたいなもんだろ。
動きのある画像判定は工夫次第、方法を自分で編み出して秘密にしておかなければ広まったら対策されるだけ。
ヒントとしては状況を特定するための手段なのであれば、その状況を確定できる動きのない不透過部分がないか探すのが第一。
直接だけではなく対象のソフト上でサブメニュー出してみたり何なりの間接的な手段も併用する。
動きのある画像しかなければ、その動きが一番遅くなる時の1コマの画像を使い、
動きがループして最初に戻るまでの間、継続的に判定し続ける。当然処理は遅く重くなる。

1002 :名無しさん@お腹いっぱい。:2016/03/23(水) 19:01:18.76 ID:VyfxdPXZ0.net
すぷりくと という間違いがバカにされてるわけじゃないんだよ?

1003 :名無しさん@お腹いっぱい。:2016/03/23(水) 19:24:36.03 ID:qNW8EAYN0.net
>>1001
すぐに誤字や変換ミスを指摘するのは病んでるよ
もっと余裕持たないと顔に出ちゃうよ

1004 :名無しさん@お腹いっぱい。:2016/03/23(水) 19:33:23.63 ID:OFvmjkT/0.net
ゲシュタルト崩壊してきた

1005 :名無しさん@お腹いっぱい。:2016/03/23(水) 19:56:05.50 ID:NgjE2cjv0.net
現在タイマー設定の式による設定で
(9<=HH AND HH<18) AND ((YMDNN mod 25) = 0)
として9時から18時までプログラムを実行させているのです。
これをもう少し細かく8時40分から17時55分までにしたいのですが、
どのように設定したらよいでしょうか?

1006 :名無しさん@お腹いっぱい。:2016/03/23(水) 20:06:18.89 ID:vA7M7au70.net
>>1005=ID:kLHNktmf0
だからここは拾ったスクリプトの改造法を聞くとこじゃない

1007 :名無しさん@お腹いっぱい。:2016/03/23(水) 20:12:20.70 ID:LGiv8vs60.net
>>1001
これ以上わらかさないで


次スレいってくる

1008 :名無しさん@お腹いっぱい。:2016/03/23(水) 20:14:26.73 ID:LGiv8vs60.net
http://potato.2ch.net/test/read.cgi/software/1458731603/l50

はい

1009 :991:2016/03/23(水) 20:18:27.14 ID:vA7M7au70.net
>>1005
と思ったら、これってUWSC本体のスケジュール設定のことか。失礼。
こんな機能は自分でスクリプトに組み込んだ方が楽だから、使う人少ないと思う。

1010 :名無しさん@お腹いっぱい。:2016/03/23(水) 20:30:41.58 ID:vA7M7au70.net
>>1005
こんな感じ、かなぁ?
((9<=HH AND HH<17) or (HH=8 and NN>=40) or (HH=17 and NN<=55)) AND ((YMDNN mod 25) = 0)

1011 :名無しさん@お腹いっぱい。:2016/03/23(水) 21:21:44.74 ID:xEMVsYD30.net
>>1005
時間を分に直せばいいんじゃない?

1012 :名無しさん@お腹いっぱい。:2016/03/23(水) 21:43:13.06 ID:OPsOkY1U6
>>1005
スケジュール設定->タイマー設定->式による設定 8時40分から17時55分まで25分間隔で実行
(840<=HHNN AND HHNN<1755) AND (YMDNN mod 25) = 0

1013 :名無しさん@お腹いっぱい。:2016/03/24(木) 00:46:59.95 ID:WL420SBN0.net
>>1010
ありがとうございました

1014 :名無しさん@お腹いっぱい。:2016/03/24(木) 06:03:20.37 ID:IqeVqZIs0.net
> YMDNN mod 25) = 0)
これって日によって起動時間が変わると思うけどそれでいいの?

1015 :名無しさん@お腹いっぱい。:2016/03/24(木) 12:03:56.76 ID:WL420SBN0.net
>>1014
確認してみたら日によって起動時間変わっちゃってました
毎日8時40分から17時55分まで25分おきに実行させたいのですが…
分に直して
(520<=NN AND NN<1075) AND ((YMDNN mod 25) = 0)
と入力すると「1年以内での実行はなし」と出てしまいました

1016 :名無しさん@お腹いっぱい。:2016/03/24(木) 12:43:37.75 ID:LgRlES+x0.net
>>1015
HHを分に直せよ・・・

1017 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

1018 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1018
304 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★