1 名前:名無しさん@お腹いっぱい。 [2015/11/11(水) 13:45:28.80 ID:+oPzgSay0.net] Windowsの作業を自動化するツール フリーソフト版とシェアウェア版の2種類がある ttp://www.uwsc.info/download.html ●UWSC 掲示板(※作成依頼掲示版ではありません) 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫 www3.rocketbbs.com/13/bbs.cgi?id=umiumi www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past ●UWSC - Wikipedia ja.wikipedia.org/wiki/UWSC ●使い方・基礎解説学習サイト uwsc.g.hatena.ne.jp/cx20/20100131/1264938584 www.confrage.com/uwsc/ necro.jp/dev/uwsc/ park14.wakwak.com/~simizu/uwsc/fruwsc.html canal22.org/ big.tm.land.to/handbook/uwsc.htm www.game-rev.com/review/gameut/uwsc.html ●スクリプトテンプレサイト izagne.com/uwsc/ scripts.web.fc2.com/ www.nagomi-jp.net/~liners/ nem.symphonic-net.com/uwsct/0610uwsct.html siromasa.digi2.jp/uwsc/ iriyak.adam.ne.jp/uwsc.html 前スレ 自動化ツールUWSC使いよ集まれ15 anago.2ch.net/test/read.cgi/software/1436671958/
61 名前:名無しさん@お腹いっぱい。 mailto:sage [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
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/15(日) 23:44:35.20 ID:De6xOu7/0.net] 普通にRESIZEすればいいだけの話では? RESIZE(CarSel, 8)
63 名前:名無しさん@お腹いっぱい。 mailto:sage [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 となる
64 名前:名無しさん@お腹いっぱい。 mailto:sage [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桁用みたいにそれぞれ作ればいいんでしょうが できればシンプルなコードで柔軟に使っていけたらいいなと思っております・・・
65 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 12:07:44.32 ID:Xu2hTlmU0.net] >>60 shuffle関数に要素数の引数追加してみたら?
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 12:45:32.71 ID:9wFZf3al0.net] >>60 再定義でエラーってことは、nを2回定義してるんじゃないの?
67 名前:名無しさん@お腹いっぱい。 mailto:sage [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
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 15:44:23.25 ID:9tIhQjLx0.net] 再定義でエラーになってるってことはその言葉通り定義が再び行われてるからエラーになってるんであって… 定義している部分を見れば一目瞭然なんでは? 既に定義された変数に値を代入するなら定義をする必要ないんだから その部分のDIM外せばいいだけなんじゃ…
69 名前:名無しさん@お腹いっぱい。 mailto:sage [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が入る。
70 名前:名無しさん@お腹いっぱい。 mailto:sage [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の使い分けなど、皆さんのアドバイスを基に研究したいと思います。 ありがとうございました・・・
71 名前:名無しさん@お腹いっぱい。 mailto:sage [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
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 17:47:31.69 ID:U7RMM+Pu0.net] 繰り返しテストしてみたらこれ入替えでバグってるねw すまん
73 名前:名無しさん@お腹いっぱい。 mailto:sage [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
74 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/16(月) 22:57:57.42 ID:NGCV+QQo0.net] >>67-69 おぉ、参考にさせていただきます! そうです前スレの終わり頃に質問した者です。 運用することを考えたら独立させたほうが柔軟になると…なるほど 関数やSafeArray等ちゃんと理解して使えるよう頑張ってみます、ありがとうございました
75 名前:名無しさん@お腹いっぱい。 mailto:sage [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")&l
76 名前:t;>NULL then IE.document.querySelector("#hogehoge").click() というような方法しかないのでしょうか? スクリプト実行中にページの内容が書き換わって目標とするセレクタが消えて COMエラーで落ちるというパターンが時々あって困っています。 [] [ここ壊れてます]
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 01:11:47.62 ID:EmLKpCk20.net] // COMエラーメッセージの抑止 COM_ERR_IGN // 何等かのCOM処理 COM_ERR_RET でどうですか
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 02:35:05.29 ID:X+X/Girc0.net] ハンゲのリングドリーム(Flashゲーム)でマクロを組んでるんだけど、MOUSEORGをMORG_DIRECTにするとフラッシュ上の ボタンをうまく押せない(当該ボタン上にカーソルを合わせると押そうとしているような挙動はするんだけど実際には押せていない) 状態になってMORG_CLIENTを指定するとしっかりボタンを押せるんだけど、これってどうにかMORG_DIRECTでボタンを押せるよう にすることは出来ないのかな?
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 08:30:36.92 ID:r3ygr5190.net] >>72 こんな機能あったんですね。ありがとうございます。
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 15:14:10.19 ID:r3ygr5190.net] > CALL UWSファイル名.uws(xxx, xxx, ...) // 引数を付けた場合に値は PARAM_STR[] 変数に入る CALLでスクリプトを呼んだ時のように、不定個の引数を受け取って 内部で配列として扱う関数を作りたいのですが、どうしたら出来るでしょうか?
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 16:20:50.27 ID:t2yi2j7b0.net] SafeArry使いなよ
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 16:58:26.39 ID:r3ygr5190.net] SafeArrayを使うとは具体的には? 引数が不定数だと、実行時に引数の数が違うと怒られてしまうんですが。 配列を作る関数が欲しいのですが、順序が逆の 先に配列を作ってから関数に入れる事しか思いつかないです。
83 名前:名無しさん@お腹いっぱい。 mailto:sage [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
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/17(火) 23:27:48.86 ID:3Sfs5iCK0.net] 引数を多目に書いておいて関数内で処理するんはダメなのか?
85 名前:名無しさん@お腹いっぱい。 mailto:sage [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
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 10:58:24.63 ID:R9oruk2c0.net] UWSC初心者です。つまづいてしまったのでどなたかお教えください。 Bluestacks上でアプリを起動してマウス操作などの自動化を行いたいのですが記録されても再生するとマウスがBluestacks上動いたりクリックしたりしません。PCゲーでは今まで動いていたのですが‥ なぜでしょう?どなたかお
87 名前:願いします。 [] [ここ壊れてます]
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:08:48.43 ID:6gzLq2020.net] >>80 内部で配列として扱いたいだけで、出力は配列というわけではないのです。 結局のところ、不特定数の引数を受け取りたいだけなんですが、 そのままの入力はどうやら無理のようですね。 素直に配列作って渡すことにします。 無名配列でも作れたらよかったのですが。 ありがとうございました。
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:24:54.22 ID:zICgyZ9/0.net] >>82 単純に受け側でsplitで良いような…
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 11:37:45.83 ID:6gzLq2020.net] 受け取る変数も不特定なのでセパレータが被る恐れがあります
91 名前:名無しさん@お腹いっぱい。 mailto:sage [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 みたいな形でなんとか動かせてはいるんですけど修正の作業とかが面倒なので別のアイデア無いでしょうか
92 名前:名無しさん@お腹いっぱい。 mailto:sage [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
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:07:24.77 ID:WUTAg8ze0.net] 安定性を上げる手段としては、状態判定と処理をループにしておくという手も。 while true 状態判定 a →処理 a 状態判定 b →処理 b 状態判定 c →処理 c 状態判定 d →ループ抜ける wend 処理 d
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:15:35.51 ID:gRViVlbY0.net] >>84 分ってるかもだけれど セパレータは2文字でも3文字でもOK
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 15:38:20.45 ID:bJyAh8OV0.net] >>88 自前でセパレータを仕込むのなら もう自分で配列造るのと何も変わらないさ
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 16:34:39.80 ID:95T98vMj0.net] >>87 なるほど 手探りで一本で書いて後から必要な部分だけ別ファイル用意してcall・・・みたいな事してぐちゃぐちゃになってしまったんですが最初かは処理毎に作っておいて判定してcallする形にすればあちこち修正しなくても済みそうですね その方向で整理してみます ありがとうございました
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 16:56:34.30 ID:nYaQHfF60.net] >>90 お前は次に、長時間動作させているとエラーでUWSCが落ちる、と書き込む
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 17:20:08.96 ID:bJyAh8OV0.net] そして私はスタックオーバーフローしないようにCALLは出来るだけ最初に1回 CALL先のスクリプトは関数化して本処理ではその関数を呼ぶと安定するよとFAQなアドバイスしておくのだった CALLをループ内に仕込むのは展開された動作を把握しきっていないと 資源の衝突や初期化周りで予期しない動作が発生するトラブルの原因のトップランカーさんです
99 名前:名無しさん@お腹いっぱい。 [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すべてにこの処理を導入しているため大変見苦しいコードとなって しまっているので何かいい方法はないかと・・・
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:52:19.47 ID:bJyAh8OV0.net] エラー画像を発見したら終わらせるだけなら 寧ろメインループをそっちにして 別スレッドで他の処理すると
101 名前:yだよ 終わらせたくなったらメインループを抜けるだけで全て終わるからね 処理毎の終了処理が必要なら今の方法しか無いかな [] [ここ壊れてます]
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:57:06.76 ID:bJyAh8OV0.net] 但し、デバッガがメインスレッド以外のスレッドのデバッグにマトモに対応していないから 完成した後にそうするか最初からprintデバッグする必要があるけれどね
103 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 20:57:49.77 ID:JQ1Q8izi0.net] Flashのクラッシュみたいな大きなエラーはもう別プロセス(別UWSC)で監視しちゃえば。
104 名前:名無しさん@お腹いっぱい。 [2015/11/18(水) 21:23:51.36 ID:ya19mM+o0.net] クラッシュを検出したらリロードを行ってまた処理を行うようにしているので メインループを抜けてしまうのは出来ないです。 別プロセスでエラーを監視した場合、メインプロセスを再起動させて処理を再開するというような感じになるのでしょうかか?
105 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 21:49:32.35 ID:bJyAh8OV0.net] 終わらせないなら特に楽にならないから今まで通りで良いんじゃないかな UWSCから他のスレッドを殺す事はやろうと思えば出来るけれど 予めスレッドの起動毎にプロセス番号をグローバルな配列に保存して それらをゴニョゴニョって感じになるから 今のフラグでループ制御しているのと面倒臭さは大して変わらない でも一旦終わらせて、それを検知する別スクリプトが再起動させるという考え方もあるんだけれどね (ログに書き出すとか色々方法はある)
106 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 23:05:59.51 ID:R9oruk2c0.net] >81です 初歩的な質問すぎて呆れてしまわれましたかね?ごめんなさい
107 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/18(水) 23:15:08.17 ID:xUeF/cfW0.net] 失せろカス
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 00:52:14.47 ID:d6Osv4Zy0.net] 誰か教えてやれよ
109 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 19:16:18.41 ID:5LbifL7P0.net] >>97-98 その辺の実践経験者から言わせてもらうと、 結局は人間が操作するならどういう流れで操作するか、その流れのコード化に尽きる。 処理の区切り区切りの尽くに、クラッシュその他の予期しない自体を検知する処理を行う関数を挟み込む。 何らかの無限ループがあればその内側に必ず挟みこむか、無限ループをやめて回数制限またはタイムアウトを設ける。 クラッシュを検知してリロードして処理を1からやり直すということは、 その1からの部分に何時でも戻れるよう、プログラムの十分な構造化が要求されることは言うまでもない。 関数化、関数化そして関数化だ。関数が出来過ぎてしまうので分類だ。凄まじい数の独自関数群になる。 >>81 使ったことのない対象なので無責任に答えるが、 記録できないだけなのであればキャプチャ画像から割り出した座標をDOWN-UPでゆっくりクリックするのを書いて、 それでも認識されないか否か試してみたら?認識されないのなら不可能だから諦めろってことだ。
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 22:29:12.84 ID:ZWZs69JY0.net] >>81 高レベルではなく低レベル記録する
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/19(木) 22:43:42.91 ID:oG2sQJna0.net] 仮想OS上のアプリをホスト側から操作しようなんてのは無理
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/20(金) 09:33:31.45 ID:Pd39Iv5K0.net] フラッシュは、ジョブズが嫌ってた。 firefoxとも相性が悪くてクラッシュしまくりだから大嫌い!
113 名前:名無しさん@お腹いっぱい。 mailto:sage [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("www.google.co.jp" )
114 名前:PRINT "IE Navigate end" wait(IE) fend procedure wait(IE) REPEAT SLEEP(0.1) UNTIL !IE.busy AND IE.READYSTATE = 4 fend [] [ここ壊れてます]
115 名前:名無しさん@お腹いっぱい。 mailto:sage [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 にしたら良いと思う
116 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 12:11:56.37 ID:kt2iHckZ0.net] >>107 サンクス メイン側で生成したオブジェクトをスレッドに渡しても(グローバル変数でも駄目だった)、動かないって事で すかね。 メインでタブを二つ作ってそれぞれのオブジェクトをスレッドに渡して処理させようとしてたんだけど、タブは 作ったうえでスレッド側でオブジェクトを生成するようにしたら期待する動作になったようです。
117 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 17:03:31.49 ID:+ESe50Z90.net] UWSCでループを用いないキー入力待ちって作れる?
118 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 17:25:25.61 ID:B04dZN/C0.net] SETHOTKEYを使えば出来るよ でも厳密にはこれは待たないからね イベントドリブンなスクリプトになるイメージ
119 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:07:35.61 ID:+ESe50Z90.net] それってホットキーの入力を待つ時には結局ループ系必要にならない?
120 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:24:22.67 ID:valwfeOZ0.net] ならない
121 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:34:12.81 ID:+ESe50Z90.net] >>110,111 ありがとう やってみるわ
122 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 18:38:50.90 ID:B04dZN/C0.net] ホットキーで割り込む隙もなくメイン処理が終わるなら当然終わるよ キー入力の待機ループが不要なだけさ
123 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/21(土) 21:26:37.91 ID:+ESe50Z90.net] >>114 sleep中でも無視して関数呼び出してくれるんだね これでPCへの負荷が激減した ありがとう
124 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 17:32:21.47 ID:3BpSGfNj0.net] test
125 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 22:48:31.92 ID:JF3Q3VkF0.net] UWSCのウィンドウを出しておいて 右クリックからランチメニューを辿って スクリプトを実行しようとしたとき メニューにある「タスクトレイに格納」で 左クリックしてるわけでもないのに タスクトレイに格納されてしまうことがあるけど これは仕様なの? ゆっくりやれば問題ないけど ササッとやりたいときに タスクトレイに格納されてしまって萎える Free版 ver5.2.0
126 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 22:55:07.30 ID:qS8AAPnY0.net] マウスが古くなっていてチャタリングが発生している可能性はゼロなの?
127 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:07:09.04 ID:W5FAQXAx0.net] 何言ってんだと思ってやってみたらなるほど 右クリックするとメニューが表示されるわけではなく、右ボタンを押下した時点(離す前)でメニューが表示される そして丁度カーソルの位置にタスクトレイに格納がある。 そのため、メニューを開く時に右クリック(押して離す)をしてしまうと格納されてしまうことがある。 こういうことかな? それなら右ボタン押してメニューを開いたら、押したままドラッグでランチメニュー→スクリプトの上で離すってやればいいんじゃね
128 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:30:20.08 ID:s/LW23zM0.net] HOTKEYじゃ駄目なの?
129 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:32:44.91 ID:JF3Q3VkF0.net] 右クリックメニュー上で右クリックしても 決定したことになるのか それは知らなかった
130 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/24(火) 23:53:35.41 ID:qS8AAPnY0.net] だからチャタリングが発生するマウスだとコンテキストメニューが誤爆しやすくなってしまうのよね
131 名前:名無しさん@お腹いっぱい。 [2015/11/25(水) 11:13:45.29 ID:rJNaTAeQ0.net] 今Windows8.1を使用しているのですが 外付けHDDが短時間で休止状態になってしまって困っています UWSCで定期的にアクセスして休止に入らないようなスクリプトは どうやったらかけるのでしょうか
132 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 12:42:30.98 ID:txG9N8jK0.net] がんばって調べれば書けるよ つか、わざわざUWSCでやることでもないだろそれ
133 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 15:20:51.71 ID:S/4vbjYn0.net] USBかATAコントローラーのドラ
134 名前:Cバ設定かサスペンドの設定だろUWSC関係ねえ OSがスリープ命令出したらたとえUWSCで自動書き込みさせても電源落ちるぞ [] [ここ壊れてます]
135 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 15:51:54.62 ID:Iap/Z3Jk0.net] UWSCでやる意味は全くないけど、OSのスリープタイマーをリセットするコマンドがあったような
136 名前:名無しさん@お腹いっぱい。 mailto:sage [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をクリック。 頭爆発しそう
137 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 17:19:07.03 ID:rT4L+apC0.net] ここはお前の日記帳じゃない
138 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 17:29:57.74 ID:y0cJp4zm0.net] ABCいずれかがなければDで ABCいずれかあれば終了 どっちも同じ? A がなければ D だけど AがなくてもBとCがあるから終了? でもBとCがあってもAがないからD?
139 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 17:37:42.03 ID:txG9N8jK0.net] WHILE TRUE IF Aあり BREAK IF Bあり BREAK IF Cあり BREAK Dクリック WEND じゃいかんのか?
140 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/25(水) 19:31:02.42 ID:JO/DUQA90.net] >>129 >>130 初歩的な勘違いやった。 申し訳ない
141 名前:名無しさん@お腹いっぱい。 mailto:sage [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です デスクトップコンポジションを無効にする以外の解決法はないでしょうか?
142 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 03:10:30.73 ID:6LeH5ZQ60.net] どうでもいい指摘だけど i が加算されないからそれ延々ループしまくるよね CPUパワーの可能な限り延々チェックし続けて、そりゃウインドウも点滅するさね リソース不足じゃない?
143 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 03:24:45.08 ID:uYW4zJhI0.net] >>133 chkimgの後のi=i+1が抜けてましたね ご指摘の通り非力なPCを使っているのですが、 タスクマネージャーで確認したところCPU使用率は50%を下回っているようでした chkimgの後にsleep(1)を入れても点滅するのでパワーの問題じゃないと思ってたのですが…
144 名前:名無しさん@お腹いっぱい。 [2015/11/27(金) 04:39:10.35 ID:gIPgqqH30.net] クリックしたときにその下のウィンドウのID取得してるのにわざわざMORG_BACKを指定してる 理由がよくわからないけど試しにMORG_FOREにしてみたらどうなるかな?
145 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 11:40:45.00 ID:qwTQlhP30.net] peekcolor・chkimgは実行された瞬間にウィンドウ内にちらつきが走る。 実際にどうなってるのかは一瞬過ぎてわからないが、タイトルバーの明滅からして ウィンドウがアクティブ→非アクティブ→アクティブというようになっている感じがする。 大量にchkimgすると結構チラチラとして不快に感じる。
146 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 12:27:45.06 ID:AjRZAbKp0.net] MORG_BACKでやってるとなるよね バックグラウンドでやる必要ないならFOREでやれば点滅しないはずだけど
147 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 12:32:28.19 ID:wntLhT
] [ここ壊れてます]
148 名前:d20.net mailto: MORG_BACKでなるなら相手に再描画をお願いするためっぽいね 仕方なかろう [] [ここ壊れてます]
149 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 14:12:30.76 ID:FeZzskVz0.net] >>134 2コアなら1コアがフルに使ってても50%超えないから
150 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 14:23:32.71 ID:qwTQlhP30.net] >>137 ,137 バックグラウンドで動作させてるわけではないんだが、IEだとちらつく。 他のアプリではあまり見ないのでIEだけが問題なのかもしれん。 あとposaccもちらつくな。 使ってる量的にはchkimgよりpeekcolorが、peekcolorよりposaccの方が多いから 原因はposaccかも。
151 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 14:33:55.72 ID:AjRZAbKp0.net] え、MORG_BACKにする=バックグラウンドだろ だったらMORG_FOREにしとけよ
152 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 19:20:14.27 ID:qwTQlhP30.net] 俺と>>132 は別人だよ。 最初からバックグラウンドにはしていない。
153 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/27(金) 21:21:48.29 ID:AjRZAbKp0.net] おお、すまんな IEだとFOREでもちらつくのか
154 名前:131 mailto:sage [2015/11/27(金) 23:19:54.60 ID:uYW4zJhI0.net] みなさんありがとうございます バックグラウンドで動かしたかったんですがMORG_BACKだと仕方ないみたいですね 諦めてちらつきは我慢することにします
155 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 18:17:20.79 ID:FR9Rv/l10.net] VMwareのゲストOS上で主に、たまにホストOS上で動かすスクリプトがあるんですが スクリプトからホストかゲストか否かを判定する方法ないですかね?
156 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 20:22:07.03 ID:dldTCCO80.net] >>145 c:\ほにゃ.txt とか置いといてそん中に Guest or Host って書いておく 起動時にそれを読んで判断じゃダメ?
157 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 20:39:20.97 ID:wN8TzbSm0.net] レジストリ読めばいいだけじゃん UWSCじゃなくてバッチでもできることだしこのスレでは特に関係ない話題よね
158 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 20:53:54.86 ID:FR9Rv/l10.net] >>146 それ単純でいいですね。146さんもありがとうございます。
159 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 21:25:51.53 ID:qtPTFMZU0.net] >>146 もっと言えば、ほにゃがGuest or Hostで、そのファイルがあるかないかだけで、中まで見なくていいよね
160 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 21:43:33.70 ID:oqtIKp380.net] GET_APPDATA_DIRでユーザーネームあたりを確認してもいいよね 同じじゃなければだけど
161 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/11/28(土) 23:05:00.83 ID:wN8TzbSm0.net] だからレジストリ見れば一発だろうが DosCmd("wmic csproduct") の戻り値を参照しろ VMware Virtual Platform ってのが入るから