1 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/12(土) 19:52:22.18 ID:syCLE48Q0] 前:名無しさん@お腹いっぱい。[] 投稿日:2014/01/09(木) 13:16:00.50 ID:hFz7Kd3R0 [1/3] Windowsの作業を自動化するツール フリーソフト版とシェアウェア版の2種類がある ttp://www.uwsc.info/download.html ●UWSC 掲示板(※作成依頼掲示版ではありません) 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫 ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past ●UWSC - Wikipedia ttp://ja.wikipedia.org/wiki/UWSC ●使い方・基礎解説学習サイト ttp://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584 ttp://www.confrage.com/uwsc/ ttp://necro.jp/dev/uwsc/ ttp://park14.wakwak.com/~simizu/uwsc/fruwsc.html ttp://canal22.org/ ttp://big.tm.land.to/handbook/uwsc.htm ttp://www.game-rev.com/review/gameut/uwsc.html ●スクリプトテンプレサイト ttp://izagne.com/uwsc/ ttp://scripts.web.fc2.com/ ttp://www.nagomi-jp.net/~liners/ ttp://nem.symphonic-net.com/uwsct/0610uwsct.html ttp://siromasa.digi2.jp/uwsc/ ttp://iriyak.adam.ne.jp/uwsc.html
29 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/20(日) 03:18:55.49 ID:NCuX3Azm0] windows8.1 v5.0.2 で動かしているけれど、 画面ピクセル数と G_SCREEN_W、G_SCREEN_Hが違うのは Windows の仕様? MMV(G_SCREEN_W, G_SCREEN_H) で右下に行くし、 ピクセル数とG_SCREENの割合が一致するから、ディスプレイの画素数か何かの関係だと思うのだけど、 CHKIMG が G_SCREEN 以上画面ピクセル数未満の範囲を検知してくれないから困る・・・
30 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/20(日) 11:05:17.34 ID:8Vpm7gDu0] >>29 コントロールパネル→ディスプレイでサイズ変更とかは関係ない?
31 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/20(日) 13:10:06.17 ID:rVNBBInA0] 画面の解像度は? そんときのG_SCREENはそれぞれ幾つになってるの? MMV(G_SCREEN_W, G_SCREEN_H)で右下ってことだけどMMV(0,0)なら何処に行く?
32 名前:29 mailto:sage [2014/07/21(月) 16:36:03.31 ID:AE7vI9bU0] 解像度変えてやってみたら、低解像度だと一致してるみたい ・解像度 => G_SCREEN 1280x720 => 1280x720 1600x900 => 1600x900 1920x1080 => 1536x864 MMV(0,0)で左上、MMV(G_SCREEN_X、G_SCREEN_Y)で右下に移動 問題のある 1920x1080 のときはG_SCREENとの比率0.8なので、 意図する座標を0.8で割ると意図した場所がクリックされるので、それはそれで問題ない ただCHKIMGだと、横で 1536〜1920 の範囲内にある画像を検知してくれない 機種はDELLのノートPCで、GPUはRadeonHD7700M まぁ自動作業させるときだけ、解像度落とせば問題ないみたいではあるのでそれでやればいいかな >>30-31 ありがとうございます
33 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/21(月) 16:45:44.75 ID:a2zvhja+0] >>32 実行の度に解像度変えるのも問題だろう 作者に報告しといた方がいいんじゃないか
34 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/21(月) 17:26:07.99 ID:ZGGcH9wx0] >>32 そのノートの液晶の解像度は1600x900なんだけど 擬似的に1920x1080を表示してるってことは無い?
35 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 20:33:02.72 ID:Jy+dAtXX0] 下に書いているFOR文の現在の繰り返し回数が奇数か偶数かを判断する方法など、もしその数の性質が〇〇だったら□□というもの(論理式?)でもっと素直な書き方は無いのでしょうか 前略 ifb i/2=int(i/2) then 偶数の時の処理 else 奇数の時の処理
36 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 20:36:05.97 ID:YxSgu4LD0] MOD 余り
37 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 20:57:26.02 ID:Jy+dAtXX0] なるほど!ありがとうございます
38 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 21:10:44.34 ID:hvJxmGgq0] //何回かに一回実行、のような処理で頻用 for i=0 to 100 msg = i+"は" ifb isEven(i) then msg=msg+"偶数" else msg=msg+"奇数" endif if isMultiple(i,5) then msg=msg+"、5の倍数" if isMultiple(i,7) then msg=msg+"、7の倍数" print msg next FUNCTION isEven(ltargetNum) //偶数ならTRUE RESULT = isMultiple(ltargetNum, 2) FEND FUNCTION isMultiple(ltargetNum, lMultipleNum) //ltargetNum が lMultipleNumの倍数ならTRUE RESULT = ( ltargetNum MOD lMultipleNum = 0 ) //またはRESULT = ( ltargetNum = INT(ltargetNum/lMultipleNum)*lMultipleNum ) FEND
39 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 21:46:21.62 ID:VFuufThe0] わざわざ関数にしたりしないで if !(i mod 2) then 〜 if !(i mod 5) then 〜 みたいにしない?
40 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/23(水) 23:46:24.40 ID:6lGI1a6j0] 裏マクロのやり方教えろよ
41 名前:名無しさん@お腹いっぱい。 [2014/07/23(水) 23:52:08.66 ID:ykzfFNpM0] 俺もmodだけで済ますかな 配列の剰余処理は定石だからよく使うし、関数化するほど複雑な処理でもなく 余計に長くなっちゃうし
42 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 02:54:28.62 ID:o2/dwviN0] ■Yahoo!知恵袋 chiebukuro.search.yahoo.co.jp/search?sort=16&p=uwsc 初心者向け。くだらない質問にも答えてもらえる。 ■公式掲示板 www3.bigcosmic.com/board/s/board.cgi?id=umiumi 中級者以上向け。上級者や作者も降臨。 ヘルプ見れば解決することをいちいち投稿するのは他の質問が流れるのでやめよう。 ■クラウドソーシング www.lancers.jp/work/search/all?keyword=uwsc 「他人に言えない事」、「スキル不足だが絶対完成させたい」、「業務案件」などはこっちで。 ■2ちゃんねる anago.2ch.net/test/read.cgi/software/1405162342/ ゲームマクロなど実名や公式だと答えてくれない話 実名でコード晒すのが恥ずかしいけど晒す必要のある人 無駄にディスられたいドMな人
43 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 12:24:06.28 ID:BsSHpTFO0] MOUSEORG(id,2)を使い、ウインドウに直接操作を送りたいのですが、複数のウインドウに送ることも出来るのでしょうか?
44 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 12:46:54.49 ID:iRoKUaKn0] idってのはウィンドウIDのことだぞ? なぜ出来ないと思ったのかが聞きたいw
45 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 12:59:37.32 ID:BsSHpTFO0] >>44 追々すみませんが、その場合はどのように記述すれば良いのでしょうか? id = GETID("メモ帳1") id = GETID("メモ帳2") MOUSEORG(id, 2) 以下操作 もしくは id = GETID("メモ帳") MOUSEORG(id, 2) id = GETID("メモ帳") MOUSEORG(id, 2) 以下操作 といった形でしょうか?
46 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 13:11:01.76 ID:iO8ThbRp0] id って名前の変数しか受け取らないとでも思ってるのだろうか?
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 13:22:47.51 ID:BsSHpTFO0] 後者は id = GETID("メモ帳1") MOUSEORG(id, 2) id = GETID("メモ帳2") MOUSEORG(id, 2) 以下操作 でした。 ハンドル値等でも良いのはわかりますが、単純に複数を指定する際の記述の仕方が分からずです。 他にも id = GETID("メモ帳1","メモ帳2") MOUSEORG(id, 2) 等色々試してはみましたが上手くいきません。
48 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 13:28:42.36 ID:BsSHpTFO0] ちなみにメモ帳1、メモ帳2というのは変数ではなく 「メモ帳1」というウインドウと「メモ帳2」というウインドウの例です。誤解を招くような例えですみません。
49 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 13:46:53.03 ID:KKP+snWA0] MOUSEORG関数に複数のウインドウIDを一度に設定する方法は無いよ 同じ操作を複数のウインドウに実行したいなら 例えば操作部分を関数化してから MOUSEORG(GETID("メモ帳1"), 2) 操作関数() MOUSEORG(GETID("メモ帳2"), 2) 操作関数() とかするのもアリ 完全並列にしたいならスレッドを分ける必要があるよん
50 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/24(木) 21:05:59.87 ID:BsSHpTFO0] >>49 一度に複数を指定することはできなかったのですね どうも有難う御座いました
51 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/30(水) 17:44:11.53 ID:Ljr+G5rq0] クリップボードにある文字以外のデータをそのまま変数に入れるにはどうすればいいでしょうか。 a = getstr(0)とすると文字として変換してしまうからか上手くいきません
52 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/30(水) 19:19:15.15 ID:VJ8GbVJK0] 1.一旦文字として受け取っておいてから、 2.必要に応じ文字列加工で邪魔な文字を除去するか、または数値変換対象から除外 3.文字を数字に変換する関数で数値変換
53 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/31(木) 01:17:16.38 ID:yjpxLrhn0] IEの制御について質問です。 「OK」と「キャンセル」が表示されるタイプのダイアログについて、表示されている文章(「よろしいですか?」のような文章)を取得するにはどうしたら良いのでしょうか。 ある申し込み処理を自動化しようとしているのですが、異なるメッセージのダイアログが連続で出てくる形で処理が進むため、どのダイアログが表示されているのかを識別したいのです。 文章を取得する以外でも、良い方法があればご教授ください。 なお、ダイアログのタイトルは全て同じなため、識別には使用できませんし、IE.document.titleでは取得もできませんでした。 無知な質問で申し訳ありませんが、晩御飯を食べてからずっとネットをさまよっていて途方に暮れています。 どなたか助けていただけないでしょうか。
54 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/31(木) 08:19:02.76 ID:fvrkKN/40] 文章量はあるのにわかりやすくてまとまった質問だ ちなみに自分は回答を持ち合わせていない
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/31(木) 09:38:51.36 ID:7gh5fHYh0] ダイアログの種類にもよるけれど GETITEMでメッセージを取得できるかもしれないし それが無理ならPOSAACでメッセージを取得できるかもしれない 頑張れ
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/07/31(木) 10:34:52.63 ID:2xGppryt0] >>53 そのダイアログに対して「fcuc.uws」を使ってみる
57 名前:53 mailto:sage [2014/07/31(木) 23:58:40.69 ID:yjpxLrhn0] レスありがとうございました。 無事にメッセージが取得でき、条件分岐させることができました! 教えていただいたfcuc.uwsを使ってみたところ、getstr(id,0,STR_ACC_STATIC) でメッセージ取得できることがわかりました。 他にもfcuc.uwsはいろいろと使いでがありそうですね。 実は早速次なる壁にぶつかっていますが、いろいろと試行錯誤して頑張っていきます。 皆さん、本当にありがとうございました。
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 02:35:45.63 ID:4dogJ4Kh0] ゲーム用にスクリプト組んでるんだけど 音量で判定って出来る? でかい音が鳴った時に動作させたいんだけど、そういう事が可能かどうかヘルプ見てもわからなかったもんで
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 03:57:03.49 ID:4CXJMfLa0] まぁ良い悪いは置いといて、音量ミキサーでも監視すれば良いんじゃないの?がんばって。
60 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 10:22:28.02 ID:gLNQAj820] 音量ミキサーが上下する訳じゃないだろ・・・
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 10:26:34.60 ID:4CXJMfLa0] 音量ミキサーが何を見てるかわかるんじゃない?
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 10:57:03.64 ID:pbjcPu7a0] まぁ、瞬間値しかわからないから音量判定はオススメ出来ない 他のトリガーを探したほうがいいよ
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 15:06:17.13 ID:sgRmVnbD0] いや、音量ミキサーの上下を画像判定すればいけるっしょ
64 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 19:34:49.87 ID:cw9PH6wx0] >>63 音量の値を返す関数かなんかあんのかなって調べてたんだが 音量ミキサー自体を画像判定か・・・試してみるかな その発想が出てくるところがすごい
65 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/01(金) 20:10:36.66 ID:sgRmVnbD0] >>64 どうしても要素掴めない時の最終手段がCHKIMGなのは前から定番 極論だがCHKIMGアリなら人間がやる動作は全て自動化可能 人間としての考えが必要な動作、例えばパズルゲームとか画像認証とかもな。 (別途、複雑なアルゴリズム組み込む必要があるがあくまで極論の話) ていうか大体はAPIか別のツールをUWSCで動かせば楽なケース多いぞ 俺はAPIは知らんが、vector辺りで音楽ソフト漁れば 音量でかければ何かしらサイン出せるようなソフトあるんじゃね? それをUWSCで判定するのが安定するかと思う
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 02:15:39.68 ID:J+3s+h/50] IE.Navigate で COM ERROR: Exception occurred が出る原因と対処法、アドバイス貰えないでしょうか? 下記のコードで、3つ目の IE.Navigate で毎回エラーが出てしまいます。 IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("shizu.0000.jp/rounge/index2.html" ) //1 Sleep(2) IE.Navigate("shizu.0000.jp/sakujyo/index2.html" ) //2 Sleep(2) IE.Navigate("shizu.0000.jp/pcqa/index2.html" ) //3 Sleep(2) IE.Navigate("shizu.0000.jp/ad/index2.html" ) //4 Sleep(2) IE.Navigate("shizu.0000.jp/flyer/index2.html" ) //5 Sleep(2) 表示するURLの順序を変えても、やはり3番目でエラーになります。 UWSC掲示板では情報が得られませんでした。 Win7 Home IE11 UWSC 4.8c
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 02:29:42.47 ID:KglVg/uo0] うちではエラーは出ないなぁ uwscを最新版にしたらどう? COMエラーを無視して実行しても問題なさそうだからエラーは無視するとか
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 08:02:51.18 ID:buVZD99L0] >>64 本気か レベルメーターなら分かるんだが・・・まあいっか
69 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 08:21:08.45 ID:EMpklq/n0] >>65 現実的には、画像をOCRに通して文字列判定させたくても、都合のいいOCRが安価に入手できない。 また縮小拡大されたり3Dなどで類似画像判定させようとすると、OpenCV+一般言語のほうがいいということになる。 もしUWSCから極めて容易に、 プロセスメモリからユニコード文字列抜き出したり、パケットからスニッフできたりするライブラリがあれば、 人間以上のことが出来ちゃうんだけどなぁ
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 13:35:13.96 ID:HI77Qwqc0] // できた!こんなところでOK? while 1 if peekcolor(レベルメーターででかい時のx,レベルメーターででかい時のy)=レベルメーターの色 then msgbox("でかい音") sleep(0.1) wend
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 18:40:27.92 ID:l/ljZJuP0] >>67 最新版5.0.2.0にしてみたけど、結果は同じでした。 エラーを無視を試してみます。ありがとうございました。 COM_ERR_IGN // 何等かのCOM処理 COM_ERR_RET
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 18:51:25.93 ID:5O9VcL/w0] >>71 なんでsleep使ってるのか知らないけど sleep30くらいにしてもおきるの?
73 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/02(土) 20:44:45.62 ID:WM1a4UDh0] >>72 別のスクリプトで IE.Navigate のエラーが発生したので、 これはあくまで原因を探るためのテストコードなのです。 Sleepはたとえば120秒にしてもダメでした。 あとエラー無視(COM_ERR_IGN と COM_ERR_RET)を使ってみましたが、 IE.Navigate が機能しないことには変わりないのでNGでした。 仕方ないので IE.Navigate を実行する部分ごとに別のスクリプトにして、タスクスケジューラでuwscを順次起動することにしました。 (uwscのスケジュール機能も動作がおかしいので) ありがとうございました。
74 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 00:16:57.12 ID:Kb0PwfYK0] これが.NETの総合開発環境なら普通にエラーコード確認できるだろうしデバッグも様々なアプローチが出来るのにねー(棒)
75 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 00:29:25.17 ID:df3QRqvg0] busywait入れてみたらどう?
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 01:39:01.99 ID:BlUvp7BS0] IE11が原因だな 10以下なら動きそう
77 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 02:21:05.46 ID:JxcSZXyH0] IE11でもエラーは起きない 本人以外で再現できる人いるの?
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 07:59:52.72 ID:GZ+WuIZ70] エラーは起きないけれどWin7 IE11で3以後は表示されない IEの外部操作は.NETでしかやったこと無いけれど同じような経験あるよ その時はデバッグの結果 1回目は初期化されたIEだから問題ない 2回目は変数IEが表示中のIEなのでナビゲート後のページが表示される 但し内部的にはナビゲートすると変数IEと表示中のIEは同じオブジェクトじゃなくなるので 3回目以後は表示されない って解釈してナビゲート後のIEを SHDocVw.ShellWindows から探す関数を作って対応した
79 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 08:11:42.83 ID:GZ+WuIZ70] 自分のケースの場合は 自動表示したページから次のURLを取得して順次ナビする必要があったけど >>66 の様なケースの場合は 固定URLの巡回なら毎回IEをCreateOLEObjして対応してもいい気がする
80 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 08:46:05.25 ID:BlUvp7BS0] >>79 なるほどなぁ それなら毎回GetActiveOleObjするのでもいいのかな 表示中のページも利用できそうだけど
81 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 17:53:01.87 ID:ygrmWk1e0] 下記のコードでポップアップのOKが押せない原因を調べているのですが、どうしても分かりません。 IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("https://ctu.fletsnet.com/") BusyWait(ie) IESetData(IE, True, "btnLogin", "ログイン") BusyWait(ie) IESetData(IE, True, "CONNECT_OFF_CLICKRUN_C1025", "切断") BusyWait(ie) IESetData(IE, True, "CONNECT_OFF_CLICKRUN_C1025", "接続", 1) BusyWait(ie) IELink(IE,"ログアウト") ID = getid("Message from webpage","#32770",-1) ClkItem(ID,"OK") // ←ポップアップのOKが押せない! BusyWait(ie) IE.Quit ExitExit ポップアップを手動で開いてから、下記コードだけを動かす時は正しくクリック出来ます。 ID = getid("Message from webpage","#32770",-1) ClkItem(ID,"OK") どうして連続処理の中では動作しないのでしょうか?
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 18:09:32.78 ID:df3QRqvg0] ポップアップが出る前にID取得してんじゃねーの
83 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 19:02:52.87 ID:mE9cDTXm0] 管理者権限のUWSCスクリプトで起動したソフトがすべて管理者権限で起動されてしまうのは防げないものでしょうか?
84 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 19:03:26.55 ID:f5gfXNnl0] 自動操作では操作の成否を戻り値で受け取って一定回数再トライするのは定石よ
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 19:05:07.65 ID:vQ3Noa3Z0] >>82 >>84 出来ました! ありがとうございます!! thread CtuPopUpClick() IELink(IE,"ログアウト") //////////// Procedure CtuPopUpClick() ID = getid("Message from webpage","#32770",-1) ClkItem(ID,"OK") Fend
86 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/03(日) 22:17:27.04 ID:f5gfXNnl0] >>85 邪魔なダイアログ消すだけならそれでOKなんだろうが sleep(1) flgOkWasClicked=false for loop=1 to 10 did=getid("Message from webpage","#32770",1) if did = -1 then continue flgOkWasClicked=clkitem(did, "OK") if !flgOkWasClicked then continue next ifb flgOkWasClicked then ... ということを言いたかったんだね〜 まぁ好きにやれや
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/04(月) 06:29:48.83 ID:+GhF8xfL0] >>86 修正 sleep(1) flgOkWasClicked=false for loop=1 to 10 did=getid("Message from webpage","#32770",1) if did = -1 then continue flgOkWasClicked=clkitem(did, "OK") if flgOkWasClicked then break next ifb flgOkWasClicked then ...
88 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 16:38:42.74 ID:qR61SyTc0] ランチメニューのショートカットキーは無効化出来ないのでしょうか? キー割り当てに「なし」という選択肢がありません。 UWSC.INI を書き換えてもダメです。 LunchMenuHotKey= を削除すると デフォルトの Ctrl-W になってしまうし、 LunchMenuHotKey=999 とか存在しないキー番号を書くと起動時にいちいちエラーが出るし。 使わない機能のためにショートカットを割り当てなきゃならないのがツライ。
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 16:48:10.96 ID:qR61SyTc0] 訂正: ショートカットキー → ホットキー
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 16:54:29.69 ID:D5Dx1Flc0] デフォだとブラウザのタブとか閉じるコマンドなんだよねそれ、無効ないししょうがないから使わないコマンドに設定してるよ
91 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 17:02:03.38 ID:M2OIrEtB0] 残念ながら有りません UWSC本体を常駐状態にせずにスクリプトを逐次起動すれば ショートカットを気にする必要はなくなりますよ
92 名前:名無しさん@お腹いっぱい。 [2014/08/05(火) 18:04:36.53 ID:0292bkw40] While true MSGBOX("testtest") IF CHKIMG("tes1.bmp",0,1,1,806,625) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(3.0) endif IF CHKIMG("tes2.bmp",0,1,1,806,625) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(3.0) endif IF CHKIMG("tes3.bmp",0,1,1,806,625) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(3.0) endif IF CHKIMG("tes4.bmp",0,1,1,806,625) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(3.0) endif IF CHKIMG("tes5.bmp",0,1,1,806,625) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) sleep(3.0) endif sleep(0.5) Wend 5この画像クリックして戦闘ループさせるようにしたつもりなんだけど 画像が見つかんねー ペイントで切り取って保存してキャンバスのサイズ1×1に張り付けて この書き方がまずいの?ちゃんと画像の探索できてんのかわからん
93 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 18:43:48.97 ID:6loQZGsf0] その程度自分でデバッグできないとか。
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 18:47:39.23 ID:M2OIrEtB0] 適当にレスするとCHKIMGで得られる座標は左上なので 当然クリックする座標も其処になる 其処がクリック可能じゃなければBTN関数は当然失敗する それ以前に比較用の画像が駄目な可能性もある 個別に判断していけ
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 19:00:12.01 ID:niZhumv+0] >>92 ・MOUSEORGを使う ・CHKIMGが失敗した場合にSLEEP挟まずに次のCHKIMGが実行されており CPU時間を独占し対象の描画を妨害する可能性がある ・CHKIMGは可能な限り IMG_MSK_BGR4 で判定すべし ・明らかにマッチする画像がマッチしないなら、そのときの画像を保存し、 比較元と比較先の画像を800%以上に拡大して肉眼比較すべし ・画像があればクリックしTRUE、無かったり座標異常等でクリックできなければFALSEを返す 例えばCLKIMG関数のようなものを定義すれば、コード量は半分に減りテストもしやすいだろう
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/05(火) 21:31:03.70 ID:oWkOQAEl0] IE操作について質問です CSSセレクタやXPathによるエレメント指定って UWSC標準関数では実現できないと思うのですが 何かいい方法ありませんか?
97 名前:名無しさん@お腹いっぱい。 [2014/08/05(火) 22:12:08.03 ID:0292bkw40] 解決しました! やっぱり画像が一致してなかったみたいです >>93 sleep関数とmsgboxで一応デバッグしとる
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 12:29:26.17 ID:OYZwCMgl0] CHKIMGを利用して指定画像があった場合、続いてその画像から右側の指定範囲をサーチさせるにはどうすればよいのでしょうか? 例を挙げると 画像A(画像左上角の座標がX=100、Y=100)があったら、次にそこから右の範囲(X1=110、Y1=100、X2=150、Y2=120)から指定画像を検索 要は画像Aの左上角座標からX1はX+10、Y1はY、X2はX+50、Y2はY+20の範囲を続いてサーチさせたいのです こういったことが可能であればどのように書けば良いのでしょうか?
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 12:51:52.41 ID:J8shURq/0] 変数使えば良いんじゃね X1 = G_IMG_X + 10 とかしても良いんだぜ
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 12:53:23.23 ID:OYZwCMgl0] なるほど!ありがとうございます。
101 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 16:49:49.42 ID:Kd4DWNAs0] PC用の無線リモコンにexe化したショートカット登録して押せるようにしたらすげー便利だった 1000円の品だったから4個しか設定出来ないがこれ捗りすぎてやばいw
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 18:59:45.71 ID:hsLYtabQ0] PCに触っている状態であればランチャー動かしたほうが早いし 欲しいけど便利な用途が思いつかん
103 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 19:15:26.39 ID:J8shURq/0] USBフットスイッチでもきっと便利に使えるだろうけれど それはUSBフットスイッチの便利な使い方の一つでしかなくて 別にUWSCじゃなくてもいいし EXE化しなくても引数付きでスクリプト起動してもいいよね まぁ、嬉しい気持ちは伝わってくるよ よかったな
104 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 19:39:18.22 ID:Kd4DWNAs0] もともとfoobarに使えるリモコンって買ったんだけどuwscに利用したら思わず便利だったんで書いちゃったわ、確かに無理してそれ目当てに買う必要はないな
105 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/06(水) 23:55:48.76 ID:h3IAvmk30] IEで、あるページを表示させて、そこに入力フォームや登録ボタンがあるかどうかを判定するにはどうしたら良いでしょうか? mailフォームと登録ボタンがあれば入力して押す。 IESetData(IE, "テストデータ", "mail") IESetData(IE, True, "", "登録する") なければ別の処理、という形にしたいのです。 ググってみたけど、どういうメソッド(?)をどう組み合わせればよいか分かりません。 教えてもらえると助かります。
106 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 00:14:05.20 ID:6xUT57kM0] POS関数
107 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 00:23:53.64 ID:Ft6QcBe/0] IESetDataの戻り値はなんのためにあると思っているんだ?
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 00:34:06.84 ID:xY78+5+d0] 複数のUWSファイルを各ループ終了後に順番に開くようにしたいのですがわかりません。 現在はmain.uwsに、 while true call A.uws call B.uws call C.uws wend と記述しており、A〜C全て画像認証で特定の画像が現れたらクリックをしてループを抜けるというものです。 Aが画像認証成功したらBへ、Bが画像認証成功したらCへ、Cが画像認証成功したらAへと行きたいのですが上手く行きません。 上記の記述だと、Aをクリアした後にBに行き、応答なしになります。
109 名前:名無しさん@お腹いっぱい。 [2014/08/07(木) 02:03:52.04 ID:fKkKz5EB0] 公式サイトの掲示板で質問すれば作者が回答してくれるのに、 何でこんな便所の落書きみたいな場所で質問するの?
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 02:33:23.60 ID:xY78+5+d0] 書き込んだ時503で見れなかったんだ・・・ 公式掲示板で聞いてみる
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 02:54:02.97 ID:S3EPzyir0] callなんてやめて関数で1ファイルにしちゃえよ
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 06:10:19.12 ID:E6P035jA0] [MAIN.uws] CALL SUB1.uws CALL SUB2.uws while true A() if !B() then exit if !C() then exit wend -- [SUB1.uws] procedure A() … fend function B() … result=true fend -- [SUB2.uws] procedure C() … result=true fend
113 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 09:04:03.29 ID:kQCQRYI80] IF CHKIMG("AA.bmp") or CHKIMG("BB.bmp") or CHKIMG("CC.bmp") BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) その他処理 endif いくつかの画像を検索して同じ処理をしたいんですけど、 上記のように書くと、AA.bmpを見つけても、CC.bmp検索までしてるようで、 AA.bmpのG_IMG_XとG_IMG_Yの値を保持してくれないみたいで上手くいきません。 IF文を分ける以外のテクニックがありましたら教えてください。
114 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 09:56:39.26 ID:S3EPzyir0] >>113 先頭に OPTION SHORTCIRCUIT
115 名前:名無しさん@お腹いっぱい。 mailto:sage [2014/08/07(木) 10:55:59.57 ID:xY78+5+d0] >>108 です 調べたところ、Bの画像認証が上手く行ってなかっただけでした。 お騒がせしました。