1 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/08/04(木) 02:00:04.65 ID:7bTLDD7v0] Windowsを自動化させるツールUWSC。 www.uwsc.info/ uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。
317 名前:名無しさん@お腹いっぱい。 mailto:age [2011/11/20(日) 14:11:10.77 ID:mnucJeUQO] uwsc のプログラムの sleep() って PCが()内の数字を読み込むまでの時間で PCのスペックによって時間が上下してしまいますよね? PCのスペックに左右されずに一定の時間止める命令ってありませんか?
318 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/20(日) 14:51:36.10 ID:37TjzIAA0] >>317 sleep(1)で、0.990秒か1.010ぐらいの誤差は出るという話か? Windows自体がリアルタイムOSじゃないんだからあきらめろよ…
319 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/20(日) 20:26:16.19 ID:NBuVEZGy0] for i=1 to 180 sleep(1) next みたいなことやったら誤差がでかくなるけど sleep(180)と実際の180秒との誤差なんて気にしてたらきりがない。
320 名前:317 mailto:age [2011/11/20(日) 21:32:34.82 ID:mnucJeUQO] やっぱりそういうものですよね…… 繰り返しやってるとどんどん誤差が出てくるのでどうにかならないかと思っているのですが あと sleep() って1秒単位でしか止められないですか? 0.1秒とか細かく止めることは出来ませんか?
321 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/20(日) 21:50:16.24 ID:UjA32dPa0] なぜ試さない
322 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/20(日) 22:08:12.02 ID:NBuVEZGy0] それ以前になぜヘルプすら読まないのかと。 お前はその関数の使い方どこで知った。 またゲームマクロ厨か?
323 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/20(日) 22:36:51.73 ID:wKQBEoG/0] ヘルプ呼んでないのはスルーで良いだろ。
324 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/21(月) 01:48:02.86 ID:cK4FDRBG0] sleepだけを繰り返すスクリプトなわけないんだから 蓄積される誤差の主成分はsleep以外の処理時間だろうに。 そしてその場合はgettimeを使えって話が直前に出てるのに。
325 名前:名無しさん@お腹いっぱい mailto:sage [2011/11/21(月) 22:32:56.01 ID:95iY67le0] 変数の名前の中に変数を入れることってできませんか? 名前1=50 名前2=60 名前3=70 名前4=80 名前5=90 とした場合に i=1+random(5) print 名前i というような感じのことができる方法ってありませんか? iに応じて変数1などに格納してる数値を引き出してきたいです
326 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/21(月) 22:59:29.69 ID:cK4FDRBG0] 配列でできるのでは dim 名前[4] 名前[0]=50 名前[1]=60 名前[2]=70 名前[3]=80 名前[4]=90 i=random(5) print 名前[i]
327 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 13:45:48.19 ID:nY2IDWqE0] Fukidasiを二つ同時にだすことは可能ですか
328 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 13:57:29.23 ID:nY2IDWqE0] PUBLIC clear_fuki = -1 // 消去する識別No.を指定する FUKIDASI("main") thread create_fuki(1, "aaaa", 100, 100) // スレッドにて吹出し生成 thread create_fuki(2, "bbbb", 200, 200) thread create_fuki(3, "cccc", 300, 300) sleep(3) clear_fuki = 2 // bbbbbを消去 sleep(5) // 吹出し生成 (pno=識別No.、msg=表示メッセージ、x,y=位置) procedure create_fuki(pno, msg, x, y) FUKIDASI(msg, x, y) while clear_fuki<>pno; sleep(0.1); wend // 消去指定されるまで表示 Fend これしか方法ないか
329 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 14:00:46.07 ID:0Vz8p5PL0] >>327 できますよ
330 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 14:18:22.87 ID:nY2IDWqE0] >>329 おしえていただけますか
331 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 19:40:28.55 ID:5GYKnaiu0] >>330 だからできますって
332 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/22(火) 20:13:51.19 ID:aqyjJSd30] >>326 出来ました。どもです
333 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 19:59:47.06 ID:WW8lFYXg0] ループ処理で使うカウンターが勝手にインクリメントされるから、 ディクリメント・ループが書けない。ゴミ言語だな。
334 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 20:17:47.72 ID:dKKZTPir0] 言語といえば言語だけど…そこまで行ったら自分で組む方が早くね?
335 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 21:18:24.83 ID:wzzmYU4J0] UWSCでtwitterに自動で呟けたりしますか?
336 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 21:24:58.35 ID:d6sk/n4+0] >>333 どういう意味? step -1 とかじゃダメなの?
337 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 21:40:50.79 ID:4KoCrPGW0] デフォルトが step 1 になってるだけだよね。 他にカウンタがインクリメントされるループなんかあったっけ?
338 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/23(水) 23:01:11.80 ID:+wgWgFMDP] 無いよそんなもん ヘルプを読まない馬鹿がいるだけ
339 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/24(木) 00:41:18.47 ID:iwgJn0yc0] >>333 既にこれは「ヘルプを読まない奴」として否定されているわけだが… n = 100 for i = 0 to n x = n - i print x next 別にデクリメントループが構文として用意されないと誤解してても 『(不恰好ながら)書ける』だろ…とか思うわけで
340 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/24(木) 13:01:18.76 ID:Xjdue0Ae0] っていうかいつも while ばかり使ってると for の存在なんて思い出しもしないw n=100 while 0 < n n=n-1 print n wend
341 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/24(木) 15:02:19.21 ID:Rk+VpmeE0] とある掲示板でPro4.2+尻ってファイル見つけたんだけど、このkeygenで4.7aまでならいけるかな
342 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/24(木) 19:23:17.57 ID:GPYvU7K20] 試した?
343 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/25(金) 06:22:00.11 ID:9/umpwPe0] ウインドウを閉じるんでは無くブラウザまるごと終了する方法ありますか プロセスから切るにもchromeだからいっぱい出ちゃう
344 名前:名無しさん@お腹いっぱい。 [2011/11/25(金) 13:00:12.48 ID:p+EqYULU0] >>335 botでいいだろが
345 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/25(金) 16:40:11.51 ID:6JjYuI9o0] >>343 窓タイトル = "Google - " //ウインドウのタイトル(の一部)を指定 def_dll PostMessageA(hwnd,int,int,int):user32.dll PostMessageA(idtohnd(getid(窓タイトル)),$10)
346 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 05:12:01.88 ID:/CGzuT+y0] >>345 ありがたや
347 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 11:28:49.79 ID:ZZDnddLi0] ドラッグ&ドロップの方法を教えてください 『余分な時間、マウス〜』のチェックを外してAからGまでD&Dさせたら、点A,B,C,D,E,F,Gを移動して記録させる方法は知ってるんですが、 点AとGだけを残してB,C,D,E,Fを省略する事は出来ますか?(BCDEFも表示させると時間が掛かるため) よろしくお願いします
348 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 11:32:33.96 ID:t/VZjk9M0] チェック入れて記録したらいいだろ
349 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 15:35:56.57 ID:lNj7q3Yn0] 初歩的な質問ですみません。 UWSファイルを難読化もしくは中の構文を見られないようにするには どうすればいいですか?ご教授お願いしますm(_ _)m
350 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 15:39:27.19 ID:CoKoKKvM0] ヘルプは一度上から下まで全部読んどけよ…そんなに量あるわけじゃないし。 ヘルプ→スクリプト→その他
351 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 18:30:38.88 ID:lNj7q3Yn0] スクランブルってどうやるんでしょうか。 コマンドプロテクトで/A と打っても認識不可能なバッチと出るだけで何も 起きないです
352 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 18:51:27.35 ID:jqFQ2BSr0] まさかと思うが、パスに半角スペースがあるというオチじゃないよな…
353 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 18:59:44.19 ID:pCPDtoar0] >>347 Btn(LEFT,CLICK, A_X, A_Y, 0) Btn(LEFT,DOWN, A_X, A_Y, 50) Btn(LEFT,UP, G_X, G_Y, 50) 単純にこれでできたが・・・
354 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 19:17:09.94 ID:lNj7q3Yn0] コマンドプロテクトでuwsc47bをcdで指定して ディレクトリ移動する所までは分かったんですが 指定されたパスが見つかりませんとでます uwsc47bはProgram Filesにあって cd C:\Program Files\uwsc47bと打っても そのフォルダに移動しないんです。 何故ですか?
355 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 19:42:24.08 ID:NT6h79Cr0] スクランブルかけたいモノをC:直下に置くとかで良いじゃない。
356 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 19:49:30.66 ID:CoKoKKvM0] ここまでパスに関して無頓着だとスクリプトの実行にも問題が出てこないか? ファイル触りたいとかいう時困るだろうに。
357 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 19:53:24.52 ID:CoKoKKvM0] っていうかコマンドプロテクトって何さ 知らない単語が出たら適当に自分の知ってる単語に置き換えてみるんだろうか? 知ってる単語でも音だけ知ってて意味は分からない単語なんだろうけど。 意味わからない言葉を適当に使ってみるって行動が理解できないよ。
358 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:12:24.70 ID:lNj7q3Yn0] 無知ですみません C:直下のProgram Filesをcdで指定してもやはり指定されたパスが見つかりません。 って出ます cd C:\Program Files で合ってますか? コマンドプロテクトじゃなくてコマンドプロンプトですね。すみません
359 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:26:17.68 ID:rSlze9qY0] それ自体はあってるよ。 それ以外の要因が説明不足でエスパーが必要なんだろうね。 判るものも判らん。
360 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:26:51.15 ID:CoKoKKvM0] 散々適当書いてた経緯からして、ここに書いてあるパスと 実際入力したパスが違う可能性が否定できない… あと、ブートドライブがCじゃない可能性も…
361 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:27:07.92 ID:lNj7q3Yn0] 解決しました どうやら C:\のc:の部分がいらなかったようです. コマンヂプロンプトのサイトの構文にはc:が入っていたので分かりませんでした;
362 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:27:17.46 ID:rSlze9qY0] どうしてもわからないなら、>355 の言うとおり UWSC.exe と 対象スクリプトをC直下に置けば良いじゃない。
363 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:28:09.48 ID:lNj7q3Yn0] なんか自分で見てても文章が稚拙ですね〜^^; 支離滅裂ですみません;
364 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:28:40.75 ID:CoKoKKvM0] ずばり、Cドライブじゃなかったってオチか
365 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:32:59.42 ID:lNj7q3Yn0] CD C:program files じゃムリでしたが CD \Program files でいけました^^ まずDドライブっていうやつがないので;w; でもDVD-RWっていうのがありましたがこれがDドライブなんでしょうか?
366 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:35:27.03 ID:B+rdzsPG0] >>365 上のなんで\無くなってるん
367 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 20:38:39.97 ID:lNj7q3Yn0] やったーーーーーーーー 出来ました^^ 3時間も掛かっちゃったpwq >>366 さん 書き忘れましたすみません; 暗号化出来ました^^ でもORGファイルっていうのが出来たんですがこれは何ですか?
368 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:14:35.02 ID:DelMMb6d0] ^^;
369 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:24:57.65 ID:CiLErwXn0] これ素でやってんの?
370 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:39:49.84 ID:CoKoKKvM0] ここまで超弩級の初心者がスクリプトの内容を隠したがる理由って何? またゲームマクロ関係の臭いがしてきた…
371 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:43:24.09 ID:65S6433R0] だからこそだろw ソース見られたら恥ずかしいじゃん
372 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:50:24.68 ID:rSlze9qY0] 自分を大きく見せるためだよ
373 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/28(月) 21:52:16.25 ID:ZZDnddLi0] >>353 教えて頂いたとおりにやってみたのですが、1行目でファイルを開いてしまいます 2行目でドラッグをしてる筈なんですが、Gまでカーソルが移動してもファイルは移動しないのです A-G間を一気に移動出来ると良いのですが
374 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 00:22:34.51 ID:6f1ikZrG0] >>373 具体的に何がやりたいんだ? 一応dropfileならコマンドあるような…
375 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 13:54:39.76 ID:Wf2HEEvG0] >>373 353の一行目で何してるかわかってる?
376 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 13:56:36.68 ID:Wf2HEEvG0] 一行目のクリックと二行目の間にsleep置くか 一行目省くかで出来るだら
377 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 17:13:28.90 ID:7tsIYmjQ0] 質問です。 グローバル・スコープに組込み関数と同じ名前で関数がユーザ定義できてしまいますが、 コードが大きくなってしまい、組込みなのかユーザ定義なのか明示したくなってきました。 コード内で組込みであることを明示する書き方はあるのでしょうか? 例えば、 function Random() ←ユーザ定義されたランダム関数 ・・・・・ fend procedure Shuffle(var OBJ[], TIMES=100) len = Length(OBJ) for times = 1 to (len * TIMES) c1 = Random(len) ←こちらは組込みのRandom()を使いたい c2 = Random(len) ifb !(c1 = c2) then this.Swap(OBJ[c1], OBJ[c2]) endif next fend
378 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 17:41:41.51 ID:JvceVNuB0] >>377 逆にユーザー定義の方をuser_RANDOMとかにして区別すれば?
379 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 18:00:40.49 ID:7tsIYmjQ0] ユーザ定義のRandomも複数箇所で使っているので、 組込であることを明示できた方が変更箇所が少なくて済むんです。 だからBuiltin.Random()などと記述できればなーと思ったんですが・・・ヘルプを見る限りできなさそうですねぇorz
380 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/29(火) 19:19:34.10 ID:hLtj59jYi] >>379 そりゃ、求める方がおかしいからな 諦めて別名を使えよ
381 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 00:00:55.66 ID:7tsIYmjQ0] 予約語&関数一覧にある関数名がユーザで使える方がおかしくない?
382 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 00:24:34.22 ID:vxsaB//g0] 別におかしくないよ 関数をユーザーが上書きしたり改変したりといった具合にフックできる言語もある
383 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 00:31:31.53 ID:Xo98chVK0] >>381 使えない予約語もあった気がする 具体名忘れたけど randomはjs、javaを考慮して制約を外してあるとかじゃないかな…?
384 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 01:15:31.15 ID:v4l4hkwp0] >>382 それは引数の型や個数で判別できる場合じゃないの?それで区別してくれれば問題ないんだけど、 UWSCは引数が違うといってエラーになるだけだからなぁ・・
385 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 06:53:29.22 ID:08SXj0TB0] 自作関数をrandomという名前にしなければならない理由はないだろ ちょっと変更すれば済む話。 俺は自作関数で上書きすることで、スクリプトに手を加えることなくデバッグ出力とかできたらいいなと試してみたけど、 いったん上書きしたらもう標準関数を呼び出せなくなるんだよね。 だから>>379 が言うような方法があればいいなと探してみたことはあったけどあきらめた。 けど今ちょっと思いついたぞ。 Withを使う方法だ。 DEBUGというモジュールとRELEASEというモジュールを用意して切り替えることで、 スクリプト本文に手を加えることなくデバッグモードの切り替えができる。 With DEBUG .関数() 問題はWithがどの範囲で使えるかだけど、関数内で宣言が必要だろうな。関数ごとに・・・ 変数が使えればいいけど無理だよな。 C言語のDEFINEみたいのがあればヘッダを書き換えるだけだけど・・・
386 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 22:18:17.27 ID:8ezR9SNv0] >>385 世間一般的な使いこなし術、とは違って 「他言語で実現できてる事」を工夫して提唱しても虚しいぞ。 結論として他言語に移れば良い。 別にWindowsの操作制御はUWSCの専売特許でもない。 ただ、初心者でも使いやすい記述とインターフェースがあるだけ…そこはものすごい利点なのだが。
387 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/11/30(水) 22:37:21.30 ID:yLeiwQBs0] その初心者向けにヘルプが充実してるところか。 悲しいのは敷居が低いからいろんなのがヘルプ読まずに質問するところか。
388 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 00:43:31.29 ID:8QVbGduq0] ヘルプや例だけでは仕様が曖昧な記述も多いよ。
389 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 00:47:03.60 ID:n0XSScXj0] そういう質問なら別にかまわん。 しかしそれ以前の質問多すぎるだろ…
390 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 12:15:23.09 ID:GRaVA5bs0] ビットテストしたくて下みたいに書いたんだけど、もっとシンプルで実行速度が速そうなの組みたいんだけど どうしたらいいんだろうか? Procedure bittest(test) for i=0 to 3 test2=test and power(2,i) select true case test2=8 print test2 case test2=4 print test2 case test2=2 print test2 case test2=1 print test2 selend next fend
391 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 13:49:09.37 ID:GRaVA5bs0] >>390 の補足 それぞれ立ってるビットによって別の操作をしたい selectが条件一致したら抜けるんじゃなくて条件に一致した部分全部を実行して欲しい bittest(6) で呼ぶと 2 4 って感じで表示して欲しい
392 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 14:32:22.84 ID:AEqpRIzn0] チェックボックスのビット判定の例を見ると参考になると思う。
393 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 14:58:53.56 ID:GRaVA5bs0] >>392 レスありがとう そう言えばSLCTBOX()のチェックボックス指定した時ってビット演算で戻り値取ってましたね 早速例題ググってみます
394 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 16:08:10.80 ID:1uXdCRi30] >>390 その4ビットだけならこれでいいのでは procedure bittest(test) if test and 1 then print 1 if test and 2 then print 2 if test and 4 then print 4 if test and 8 then print 8 fend
395 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 16:09:56.53 ID:GRaVA5bs0] >>390 だけど Procedure bittest(test) if test and 8 then print test and 8 if test and 4 then print test and 4 if test and 2 then print test and 2 if test and 1 then print test and 1 fend にした 流しそうめんみたいに上から全部判定して別処理するんだったらこれが一番シンプルだと思った 答えてくれた>>392 さんありがとう。サンプルコード見て閃いた やっぱ素直に書くのが一番でした
396 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/01(木) 16:11:25.72 ID:GRaVA5bs0] >>394 おお!レスくれてたのか。ありがとうございます。リロしてませんでした。ごめんなさい 仰るように書き直しました。これに気付くまで数時間かかったのでありがとうございます
397 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 17:53:16.31 ID:wLnc7Jgd0] 32ビットとか使いたくなった時のために こんな感じにしといたほうが無難ではないだろうか procedure bittest(test) bit = 1 for i = 1 to 32 if test and bit then print bit bit = bit * 2 next fend
398 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 18:18:35.14 ID:nzM92MKJ0] 並列して似た作業をループさせたいんだが 内容としては、ChromeA、ChromeB、ChromeCってウィンドウがあるとして AもBもCもループさせてる作業内容は同じで、そのループを同時進行で実行させたい。 知識ないから、単純にA、B、C用にそれぞれスクリプトを組み同時に実行させてるんだけど なぜだかAウィンドウがCウィンドウの位置にワープしたり、BウィンドウがAウィンドウと重なる位置にワープしたり わけわかめなんだ。 原因として、何が考えられるのか。改善は可能なのか。 ちなみに、スクリプトの内容は FOR 回数 = 1 TO 5 ACW(GETID("〜-〜- Google Chrome","Chrome_WidgetWin_0"),-1,319,263,761,0) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) BTN(LEFT,CLICK,176,794,1000) NEXT こんな感じのを、A、B、C用それぞれ作ってバッチでスクリプトを同時に実行させてる。 ちなみに、全部で12ウィンドウ分。
399 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 21:21:05.08 ID:79OuEhei0] そりゃ毎回getidしてるからだろ。
400 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 21:38:40.01 ID:k1G8oZ+i0] どうせIDがかぶってるオチじゃねーの
401 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 22:02:28.32 ID:nzM92MKJ0] >>399 その通りだったみたいです。 GETIDの所無くしたら問題なく動きました。 これ、クリックする部分は絶対座標だから対象としてるウィンドウ達はスクリプトで指定してる座標から動かしちゃダメって事ですよね。 とりあえず、これで手動クリックから抜け出せましたw 1時間弱12個のウィンドウの決まった所をひたすらカチカチ作業を6時間おきにやるのがマジキチだったので 助かりました!
402 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 22:59:30.81 ID:79OuEhei0] >>401 なんか勘違いしてるっぽいな? 同じタイトルのウィンドウが複数ある場合1回目のgetidと2回目のgetidで 同じウィンドウを取得できるとは限らんって事だぞ。 一つのウィンドウに対して複数回操作をするなら getidを1回だけやってIDを変数に取って以降その変数でやる
403 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/02(金) 23:57:44.63 ID:fkbuA7P+0] どう考えてもまともな使用目的じゃなさそう ま、その程度ならたいした実害はなさそうだけどな…
404 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 00:00:36.60 ID:X9b56wfw0] マクロのまともな使用目的ってなんだよ
405 名前:403 mailto:sage [2011/12/03(土) 00:19:27.25 ID:/eCiHqMi0] >>404 だからさ、マクロ目的ならこれよりAHKの方が良いって…w
406 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 00:19:31.71 ID:i8U652yV0] ルールを正規に定めている範囲内でそのルールに違反しないこと
407 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 10:57:34.98 ID:mXU25fWD0] IF (test_flag xor PEEKCOLOR(446,182))=($FFFE or (test_flag xor 1)) then その後の処理 って感じでtest_flagの状態によって切り替えて判定してるんだけどもっとシンプルに書きたい norが有ればもう少しましに IF (test_flag xor PEEKCOLOR(446,182))=($FFFE nor test_flag) then その後の処理 って感じで書けるんだろうけどnotすらないようなので・・・ ○PEEKCOLORの取りうる値は$FFFFかそれ以外 ○test_flagは0か1の値を取る ○検出したいのは$FFFF やりたいことは ○test_flagが0の時、$FFFF=PEEKCOLOR(446,182)を検出するとthenを実行 ○test_flagが1の時、$FFFF=PEEKCOLOR(446,182)を検出出来なければthenを実行 頑張って一回で両方を判定しようとして2,3時間悩んだ結果がこれなんだ 実際にはthread処理してて別のルーチンでtest_flagの状態を変えてるからタイミングが悪い時に 2回判定するとタイミングずれて結果が変わる 両方を同時に判定しないといけないんだけどもっといい方法無いかな
408 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 11:25:51.48 ID:mXU25fWD0] ○test_flagが1の時、$FFFF=PEEKCOLOR(446,182)を検出出来なければthenを実行 ↑間違えた ○test_flagが1の時、$FFFF=PEEKCOLOR(446,182)を検出するとthenを実行 普通は判定で処理が変わるけど、処理が同じで判定の方が変わる
409 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 11:52:21.95 ID:9zFEGBoU0] それ、test_flag で何も切り替わってない気がするけど if peekcolor(446,182)=$FFFF then 〜 ではダメな理由は何? それと、一行にまとめたからって同時に実行されるわけじゃないかと
410 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 11:52:50.87 ID:1rpOnUv/0] this_test_flag = test_flag this_PEEKCOLOR = PEEKCOLOR(446,182) 共有変数を直接参照し続けなければ良いだろう…とは当然考えてしまうのだが。
411 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:08:59.69 ID:mXU25fWD0] >>409 test_flagは別ルーチン(thread処理で別のが切り替えてる) ダメな理由は if peekcolor(446,182)=$FFFF and test_flag=0 then 〜 if peekcolor(446,182)<>$FFFF and test_flag=1 then 〜 って書くとifとifの間の実行中に別スレッドがtest_flagの値を切り替える可能性があるから >>410 これも同じ理由です。そもそも状態を記憶するためにフラグを使ってるのですから 直接参照した上でないと代入や判定の際にタイミングずれて誤作動しました
412 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:14:18.13 ID:1rpOnUv/0] >>411 別スレッドで動作させるなら >IF (test_flag xor PEEKCOLOR(446,182))=($FFFE or (test_flag xor 1)) 最初のフラグと最後のフラグが同じ値である保証は無いのだが。
413 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:17:11.88 ID:1rpOnUv/0] 俺が誤解してるのかなぁ…
414 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:18:53.23 ID:1rpOnUv/0] まぁ、そこまで動作を把握してるなら自分で聞いた答えは自分で出してるんだろうな。 もっとシンプルには書けない、で終わりだ。
415 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:26:58.10 ID:mXU25fWD0] >>408 が間違いです。ほんとすみません test_flagが1の時、$FFFF=PEEKCOLOR(446,182)を検出出来なければthenを実行であってました どうも混乱しててごめんなさい
416 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:34:58.12 ID:mXU25fWD0] >>413 ほんとうにごめん。>>415 です。>>408 が間違ってました 気分を害したのならあやまります。ただ、こう言ったロジックの話は チェスとかパズルとか将棋みたいで知的遊戯な気がするので聞いてみました 詰め将棋やってて解けたと思ったら実は他に逃げ道が有って・・・みたいな感じですね >>412 なんですがその通りなんですよね 完全に回避しようと思ったらuwsc自体にthread処理を一旦止める実装がないと無理だと思います ただ、 if peekcolor(446,182)=$FFFF and test_flag=0 then 〜 if peekcolor(446,182)<>$FFFF and test_flag=1 then 〜 と書くよりは誤作動する確立が減るので、一回でなるべく高速に判定したいと思った結果なんですよ
417 名前:名無しさん@お腹いっぱい。 mailto:sage [2011/12/03(土) 12:42:03.86 ID:1rpOnUv/0] いや、実際の動作的に試したことは無かったので面白いと思いますわ。 で、実際に書いてみた…num=numでfalseが出るよねw 確実性を求めるなら、処理が外部に出る前に必ず別フラグを参照して止める必要性があるねぇ。 ---- public num thread _set() while 1 ifb num = num print "true" else print "false" endif sleep(0.1) wend procedure _set() while 1 num = random() wend fend ----