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/
801 名前:名無しさん@お腹いっぱい。 [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
802 名前:名無しさん@お腹いっぱい。 [2016/02/29(月) 19:14:05.70 ID:7awlWggQw] >>704 if -1 <> CHKBTN(GID,"閉じる") then CLKITEM(GID,"閉じる")
803 名前:名無しさん@お腹いっぱい。 [2016/02/29(月) 20:24:39.97 ID:7awlWggQw] >>709 www.uwsc.info/faq.html#N15 CLKITEM関数のCLK_ACC指定にてダイアログを出すと閉じるまで制御が戻らない #N15 CLK_LEFTCLK を付加してください。 CLKITEM(id, "xxx", CLK_ACC or CLK_LEFTCLK)
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 00:51:55.84 ID:Hw/6RB5N0.net] 基本的な操作でお恥ずかしいのですが、どうしても自力で解決できなかったので ヒントだけでもお教えください。 Win 7 Professional 64 bit + IE 11での操作です。 テーブル内にダウンロード用リンクが複数(*および青文字のアルファベット部)あり、 それらを自動でひとつずつダウンロードしようとしています。 s1.gazo.cc/up/179236.jpg 画面の状態までは持ってこれたのですが、どうしても赤枠で囲った保存(S)を 押すことが出来ません。サンプルコードも試してみたのですが、 理解不足かIE, OSのバージョン違いなのか、上手く動作させられませんでした。 クリックすると緑枠部に一瞬新しいタブが出来ているのでそこが関係あるのか、 或いはCLKITEM部が間違っているとは思うのですが……。 A = 0 Repeat DLLTEXT = IE.document.links[A].innertext IfB DLLTEXT <>
805 名前:名無しさん@お腹いっぱい。 mailto:sage [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〜部は、ソースを確認したところ見えないリンクがあったので、それを回避しようと思い付け加えました。 長々とすみません。よろしくお願いします。
806 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 04:46:22.39 ID:mSZ5heBH0.net] IEの "ファイルのダウンロード" にて "保存" ボタンが反応しない #N23 www.uwsc.info/faq.html#N23
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 07:01:07.94 ID:pMN1suyz0.net] エクセルのマクロでリンクを取り出してファイルに書き出して、ロダに食わせるほうがいんでないのかね
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 07:34:10.51 ID:uRkQmwxK0.net] >>760-761 ありがとうございます。 #N23は試してみたのですが、上手く出来なかったのでWin7だからかIE11だから無理なのかと 思っていたのですが、何か間違えていたのかもしれません。 エクセルマクロの方は考えてもいませんでした。 あまりに手間取るようなら別の方法を試したほうがいいですね……。 もう少し自分でやってみます。ありがとうございました。
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 07:53:15.84 ID:mSZ5heBH0.net] であればクリックに必要なタイトル、クラス名を調査用のスクリプトを書いて調査したり 開発環境にあるSPY++をつかって調査したりすると良いよ 問題点は 保存ボタンがあるウインドウ(ポップアップ)のIDが取得できていない 保存ボタンのアイテム名が正しくない のどちらかだからね 後、リンクのクリックまで手動でやってみて 保存ボタンのクリックだけスクリプトで可能かも評価が必要 失敗するなら IEの操作(COM)にて、ダイアログが出ると動作が停止する #N25 www.uwsc.info/faq.html#N25
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 07:57:24.35 ID:mSZ5heBH0.net] あ、ごめん リンククリック(手動)、保存ボタンクリック(スクリプト)→成功 リンククリック(スクリプト)、保存ボタンクリック(スクリプト)→失敗 なら IEの操作(COM)にて、ダイアログが出ると動作が停止する #N25 www.uwsc.info/faq.html#N25 の対処も必要かも
811 名前:名無しさん@お腹いっぱい。 mailto:sage [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これいらんのとちゃうんか
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/01(火) 22:50:42.13 ID:HDjL1sAH+] >>763-764 親切にありがとうございます。 SPY++はVisualStudio?を持っていないので用意できなかったのですが、 類似のuuSPYを使用して調べたところ 親の"IEFrame"→子"Frame Notification Bar"→孫"DirectUIHWND"というクラス名の ダイアログだと分かったので、そこから調べて操作できるようになりました。 問題点の洗い出し方も勉強になりました。これでもう少し自分で調べて解決できるように なれそうです。>>765 サンプルまで用意して頂きすみません。 実際に動かしてみたのですが、やはりIDが取得できていないのか 押してくれず……。 お二人とも親切にありがとうございました。
813 名前:749 mailto:sage [2016/03/02(水) 01:27:17.46 ID:41jBzZAb0.net] >>763-764 一応動作させることが出来ました。 結果的には、保存ボタンのウィンドウIDが取得できていなかったようです。 (クラス名IEFrameだと思っていたのですが、ダイアログは別の名前でした) SPY++はVisualStudio?を持っていないので用意できなかったのですが、 uuSPYという類似ソフトで調べられました。 SPY++的なソフトの存在(というか問題の洗い出し方?)すら知らなかったので勉強になりました。 丁寧にありがとうございました。 >>765 サンプルまで提示して頂き、すみません。 流してみたのですが、やはり反応せず…… ダイアログが出た後もそのまま動いていったので、 動作停止したわけでもなさそうなんですが…… ともかく、ありがとうございました。
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/02(水) 20:36:33.34 ID:TfJohTOi0.net] A.bmpがあったとき Aからx+30、y+30の場所にB.bmpがあったときのみC.bmpを押す 画像範囲について検索しましたが画面全体から範囲を指定するみたいですし Aはいろいろな場所に現れます Bは複数現れます Aから相対座標で検索範囲指定するためにはどうすればいいのですか?
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/02(水) 20:39:40.47 ID:yBkd0HNE0.net] >>768 【ヘルプより引用】 座標情報は配列変数 ALL_IMG_X[], ALL_IMG_Y[] に格納(配列はゼロから) B探してから配列変数をコピー ループさせながら相対範囲指定でAを探して あればCをクリックしたら良いんじゃないかな
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/02(水) 21:39:50.37 ID:TfJohTOi0.net] ありがとうございます いろいろ試してみます
817 名前:名無しさん@お腹いっぱい。 mailto:sage [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 格納がよくわかんないし雑だけどこんな感じは
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/03(木) 12:50:46.44 ID:Ck6IE5Sq0.net] PCからスマホの内臓ストレージにファイルやフォルダを転送したいです。 アイテムには日本語が含まれているため、DOSCMD+ADBでは文字化けしていたので、 [MultiByteToWideChar][WideByteToMultiChar]を組み合わせましたが、 半角スペースや特定の文字のため、転送ができませんでした。 何か回避策はないでしょうか?
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/03(木) 14:01:05.13 ID:0xlIg63T0.net] よく知らんから適当いうけど、コマンドプロンプトのshift_jisをUTF-8にするとかで解決しない?
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/03(木) 14:38:58.59 ID:o8n0++8T0.net] UWSCってどう? ブラウザとか制御しにくい気がするんだけど
821 名前:名無しさん@お腹いっぱい。 [2016/03/03(木) 16:23:03.08 ID:Ck6IE5Sq0.net] > 759 それも試しました。 CHCPでSHIFT−JISからUTF-8に変換して、書き込みに行ったんですが、 UTF-8化した文字列が受け付けませんでした。
822 名前:名無しさん@お腹いっぱい。 [2016/03/04(金) 02:14:39.26 ID:EA8iP2810.net] すみません、助けてください bluestacks uwscをつかって自動化しようとしてるのですが uwscのクリックを認識?してくれません マウスでツムツムの操作は普通にできます。 bluestacksの代わりにエクセルを起動させておく(画面に表示)とクリックも認識してくれています。 非アクティブの問題かとおもいアクティブ化もいれてみましたがだめでした 助言お願いいたします
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 02:49:01.44 ID:sp+52hH20.net] UWSCが使いないアプリもある bluestacksはそれ 以上
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 04:06:59.33 ID:32k0gAq70.net] genymotionで散々やったけど無理だったよ ウィンドウは掴めるけど内部idが掴めない
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 09:01:58.98 ID:lSRUIbNn0.net] >>776 絶対座標は? 両方ともプロパティ-互換性-管理者として実行を試す 他にもgoogleでいろいろ試す ダメならダメ
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 17:10:22.64 ID:qcabtBIu0.net] プログラミングって具体的な目標が無いと向上しないな
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 19:28:46.89 ID:0avFt52T0.net] MOUSEORG関数でMORG_DIRECTを指定するとCHKIMG関数とBTN関数の座標に ズレが発生します。 どうせればズレを解消または補正できますか?
828 名前:名無しさん@お腹いっぱい。 [2016/03/04(金) 20:28:03.15 ID:Cx1nPm1Z0.net] >>781 たぶん、ウィンドウ座標とクライアント座標のズレが原因だから ウィンドウ座標を基準にすれば一致すると思う。
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:31:12.71 ID:6AjLUgCP0.net] >>782 ウィンドウ位置を(0,0)に合わせて起動してもズレます
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:53:16.26 ID:ojY0v8Jg0.net] >>783 たいていウィンドウには枠があるでしょ タイトルバーとかウィンドウを広げたり縮めたりする細い線 アレが影響してると思われるから ウィンドウ位置を00にしても・・・
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/04(金) 22:54:21.95 ID:1DETh6nk0.net] これはさすがにネタだろw uwsc以前のWindowsの基礎知識の問題だぞ
832 名前:名無しさん@お腹いっぱい。 [2016/03/04(金) 23:02:35.51 ID:Cx1nPm1Z0.net] >>783 MOUSEORG( ID, MORG_CLIENT ) と MOUSEORG( ID ) で比較してみて あと、CHKIMG で取得する座標は画像の左上になるけど、 検索画像と座標の間にどのようなズレがあるのか書いてね。
833 名前:名無しさん@お腹いっぱい。 mailto:sage [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
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/05(土) 04:31:42.39 ID:TP9s+Xc10.net] MOUSEORG(id)とMOUSEORG(id, MORG_CLIENT)の座標逆でした
835 名前:名無しさん@お腹いっぱい。 [2016/03/05(土) 05:02:22.36 ID:PQgaMRcF0.net] >>787 www.vuzix.jp/dev/images/asm/device_list.png この画像と比較すると、横の枠がない状態なので タイトルバーの幅
836 名前:の分だけ MORG_CLIENT のありなしで違う状態ですね。 MORG_DIRECT の方は訳が分かりませんね。 原因を調べるには、MORG_DIRECT を指定した状態で SAVEIMG することです。 画面が崩れて見えると思います。 画面が崩れて見えるだけで、クリックが正常に行えるなら、 MOUSEORG をその都度実行して CHKIMG のときは MORG_DIRECT なし BTN のときは MORG_DIRECT あり とかにすればいいと思います。 [] [ここ壊れてます]
837 名前:名無しさん@お腹いっぱい。 [2016/03/05(土) 23:00:40.60 ID:+UaXZBac0.net] WinnyでMP3ファイルを手に入れたのだが、10曲が1つのMP3ファイルになっている。 これを1曲ずつ10個のMP3ファイルに分けたいのだがどうしたらいいのかね?
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/05(土) 23:04:45.09 ID:t6t79+190.net] うーん わかんない!
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 00:14:59.81 ID:dCUjX7lH0.net] >>790 torスレに回答してくれてる人がいるぞクソ虫
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 09:47:42.18 ID:TvpTaFVp0.net] >>790 .zipをつけて解答
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 10:49:16.69 ID:zGk8lpZo0.net] >>790 手動でやればいいんじゃない?
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 11:37:41.69 ID:RRLqddKE0.net] 10個のmp3のアーカイブならともかく、10曲が一つのmp3になってるなら 編集ソフトで切り出すしかないのでは
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/06(日) 12:04:50.72 ID:WY+6IsJt0.net] なんでおまえら答えてんの
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 14:52:09.82 ID:9LHTjHFn0.net] 関数の呼び出しで参照引数の初期値代入とか出来ないんでしょうか? あらかじめ先に初期値代入するしかない? abc(hoge=111) print hoge procedure abc(var hoge) hoge = hoge + 100 fend
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:09:06.92 ID:WbyHlW0e0.net] なんじゃそれ abc(111) でいいだろ
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:12:10.38 ID:WbyHlW0e0.net] ああ、そんでhogeを続きの処理で使いたいのか それで動かないんならできないんだろ 大人しく先に代入しとけよ 1行増えるだけじゃん どうしてもそうしたい理由でもあんの?
847 名前:名無しさん@お腹いっぱい。 mailto:sage [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
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 15:58:21.83 ID:9LHTjHFn0.net] 上で挙げてるのはただの例です。 実際は参照引数が多く、引数の一部だけ初期値代入したいのと print文は無いですね。
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 16:09:04.11 ID:gjVyQnvH0.net] はげ+150本 = そんなに増えていませんよ
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 20:04:53.77 ID:tjYcm4Q90.net] それは参照渡しを使うことが間違いなんじゃね?
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 20:20:19.36 ID:tjYcm4Q90.net] 参照引数ってのは値じゃなくてメモリの番地とかそういうものを入れてるんじゃなかったっけ? だから参照引数に値は代入できない
852 名前:名無しさん@お腹いっぱい。 mailto:sage [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文外すと怒られるから意味が無い
853 名前:名無しさん@お腹いっぱい。 mailto:sage [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
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/07(月) 22:43:28.84 ID:YgJHqyxo0.net] >>797 を見ると受け取り専用とは見えなかったけど 単にその目的なんだったら>>805 の人が書いてるように Dim a,b,c... abc(a,b,c...) でいいんじゃないの?
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 0
] [ここ壊れてます]
856 名前:9:25:26.60 ID:X39hgh8s0.net mailto: 1つの引数に参照渡しが多すぎるのは関数分割が出来てなくて 無駄に粒度が大きすぎる疑いがあるが、UWSCの言語仕様上仕方ない面もある。 それより使用する変数については、module変数とそのコンストラクタを利用して 初期化すれば何の問題もなくスマートに書けるはず。 ただし最初からそう書いていればスマートで苦労もないが、 後から直そうとすると抜本的な書き直しとなり苦労する俺。 [] [ここ壊れてます]
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 11:36:49.32 ID:mdQ0PQ+40.net] >>808 正にそんな感じ… 参照引数が多いのは外部からのデータ取得を一気にやるせいで その関数の内部は整理されてるんだけど。 最初は小規模なスクリプトで変数の管理とか適当で、後から書き加えていったから 今はこんなはずじゃなかったorzって状態になってて後悔してる。
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 14:04:27.07 ID:EYyC3Yny0.net] 質問です。 MOUSEORGを使用したバックグラウンド操作で、 マウスオーバーする方法ってありますかね? マウスオーバーして出てくる画像の認識をしたいんだけどできぬ
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:29:09.82 ID:X39hgh8s0.net] それはバックグラウンドのウィンドウにマウスオーバーイベントを 発生させろと言っているに等しいんだが… これ自動化ツールよ? まずあなたが手動で隠れたウィンドウにマウスオーバーしてみなさいよ! とんちかな?
860 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:47:28.50 ID:YrarT/t10.net] 一休さんのトラの屏風の事だな 次の方どうぞ
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:52:30.08 ID:uEQeFD2u0.net] mmvのこといってるんじゃない?
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 15:58:04.94 ID:/957NIFT0.net] 煽りたいだけで答えられないならちょっと黙ってろよ 俺は黙る
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:05:17.57 ID:CELrwcnT0.net] >>811 どういう理屈だよ 元々UWSCで出来るバックグラウンド操作は手動で出来ないでしょ
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:25:16.15 ID:XRfaJMaM0.net] バックグラウンド操作でもマウスオーバーイベントが発生するかどうかという その対象ソフト側の問題なんだから、UWSCの質問じゃないぞ。
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 16:54:18.27 ID:oQSRIGCR0.net] なんかレベル下がったなここ
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:08:25.81 ID:X39hgh8s0.net] >>815 バックグラウンド操作は元々のUWSCのコンセプトPC操作の自動化を あくまで拡張したものであって、 出来なくて当然のことが出来るようになった機能だよ。 それをあたかも出来て当然のように認識されても困るわな。 まぁこんなソフトが無料で使えるだけでも奇跡的なんだが。 マウスオーバーイベントをマウスオーバーせず強制的に 外から発生させることが可能なAPIが公開されてるならば、 もはやマウスオーバー画像を直接ぶっこ抜くことも出来るんじゃね? 自動操作というよりアプリハッキングだわな。 まぁこれであっさり出来ますよとかコードが出てきて 俺が逆立ちするハメになるかもしれんがw
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:29:48.80 ID:d7jVEpko0.net] Win32ApiのSendMessage(PostMessage)等を使ってイベントを発生させる方法はあるにはあるよ それをアプリハックと呼ぶかは置いておいて 重要なのは作業中のマウスは普通に存在し続けているって事なので バックグラウンドだと資源衝突が発生するのでやっぱり安定しないのよ 平たく言うとスクリプトがここにマウスがあるよとした直後に 本当のマウス位置に更新されるのでここにはマウスは無いよとなる だからよく分からなければ別PC用意して最前面でやる 仮想環境が分かるならそっちの最前面でやれ(内部的なマウス位置が存在するので資源衝突しない)がFAQとな
868 名前:チてるのよ [] [ここ壊れてます]
869 名前:名無しさん@お腹いっぱい。 [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が選ばれる理由は画像認識と操作の記録再生が簡単ってところだよ。 別に自動操縦が特別ってことはない。(特許を取ってるところはある)
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 17:41:37.94 ID:EYyC3Yny0.net] >>811-817 無知でごめんな >>818-819 詳しく教えてくれてありがとう やっぱり仮想環境構築か物理的にもう一台PC用意するのが手っ取り早いってことですね 仮想環境構築してやってみます
871 名前:名無しさん@お腹いっぱい。 mailto:sage [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,
872 名前:名無しさん@お腹いっぱい。 mailto:sage [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させるには どうしたらいいでしょうか。
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:06:11.90 ID:mdQ0PQ+40.net] ユーザー作成関数を組み込み関数であるかのように書かれても…
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:10:36.84 ID:mdQ0PQ+40.net] あとそれスレッド1とスレッド2とほぼ同時に走るから実質同じものかと
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:16:33.76 ID:X39hgh8s0.net] たしかUWSCのスレッドは、スレッド無いから呼び出したユーザー定義関数を、 そのスレッド内で実行しなかったような気が? 引数だけで算数して結果を返すだけのようなリエントラントな関数ならいいけど、 Windows上のリソースにアクセスするようなのは期待した動きをしなかった気がする。 試しに、自作関数を一時的にスレッドで呼び出すプロシージャ内に展開してやってみて。
876 名前:名無しさん@お腹いっぱい。 mailto:sage [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
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:41:58.65 ID:bSkm1Om50.net] 連投ですいません。 >>826 Windows上のリソースにアクセスするようなものではないですね。 ブラウザを2個起動した状態で同じ動作を並列処理させようとしてるのですが >>827 の関数を使うと相対座標が片方に寄ってしまうんですよね。。。 展開すると関数が入れ子しているか、閉じていませんでエラーになります。。
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:46:18.69 ID:4EtCLtde0.net] ID[i] = GETID(GET_FROMPOINT_WIN) これってカーソルの下のウィンドウよね? スレッドでほぼ同時に取得してるのにこれでIDきちんと2つ取れてるん?
879 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 18:49:12.06 ID:4EtCLtde0.net] どっちか片方のIDしか取れてなくて2つのスレッドが同じウィンドウにMOUSEORGしているような気がする ID二つとも確認してみたら
880 名前:名無しさん@お腹いっぱい。 mailto:sage [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側の相対座標
881 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:03:16.67 ID:X39hgh8s0.net] 今テストプログラムで確認してみたら、 PCが高負荷でなければスレッドがリソース云々は無かった。 それよか、各スレッドのpeekcolorが対象にするウィンドウIDが mouseorgで指定されないから、 たまたまアクティブなウィンドウが対象になる。 ウィンドウID管理しなきゃ。
882 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:05:47.87 ID:X39hgh8s0.net] 具体的には、スレッドにする関数の引数にウィンドウIDを追加して自作関数呼び出す直前にmouseorg または自作関数の引数にも追加してpeekcolorの直前にmouseorg
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:22:19.67 ID:bSkm1Om50.net] >>830 PRINTにID表示させてみました。1と2でしっかり別れてました。 >>832 助言感謝です。さっそくやってみます。
884 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:24:40.32 ID:X39hgh8s0.net] mouseorg使ってたねスマンね、きっと想定通りにウィンドウIDが取れてないんだろうね。 現在対象にしてるウィンドウIDをball0onで表示するようにしてみるといいよ (スレッドごとに表示されるのでID*100ぐらいの座標指定して重ならないよう別位置に表示)
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:27:50.46 ID:X39hgh8s0.net] 被った、IDがいいなら後は判らんな 判定直前に対象ウィンドウをCTRLWIN(ID, ACTIVATE)してみるとか、 判定対象の位置付近にballoonを表示してみて見てるとこ合ってるかどうか確認 ぐらいかな
886 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 19:32:50.77 ID:bSkm1Om50.net] >>836 了解です。バルーンで追うのはまだやってなかったので バルーンでしばらく追いつつ試してみます!
887 名前:名無しさん@お腹いっぱい。 [2016/03/08(火) 19:57:44.27 ID:OiSIw5XY0.net] >>822 CALL をスレッド関数内でやってんの? これはスレッドで動かないんじゃない? あと、スレッドを使うならグローバル変数使うんじゃなく データを渡してしまった方がいい。 なんで添え字を渡してグローバル変数の配列にアクセスさせるのかわからない。 そういうのはC言語でやってください。 C言語でも配列の添え字を渡してグローバル変数にアクセスとかしないと思うけど。 普通はアドレスを渡しますね。 別にグローバル変数にアクセスしてもいいんだけど それは変化するデータをリアルタイムにアクセスする必要があるときや スレッド関数から値を戻すときくらいですね。 一度取得したIDは変化しないからコピーを渡してしまって構わない。
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 20:13:05.28 ID:X39hgh8s0.net] それは多分ね、UWSCのスレッドとして呼び出した関数は、 戻り値を得ることが出来ないから、スレッドで取得した値を メインから得る方法はグローバル変数しか無く、 スレッドがGETIDしたウィンドウIDをメインから見たいんじゃないかな。 CALLをスレッド内に入れるのはちょっと変態的なのは同意
889 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/08(火) 20:44:35.98 ID:bSkm1Om50.net] 返事遅れて申し訳ないです! 別の方法(スレッド化せず処理)でさっくり想定通りの結果が得られました! 無駄に難しい処理しようとしてたんだなと・・・ ハマって色々学べたのでよかったです。 >>838 今後のために参考にさせて頂きますOTZ >>839 他皆様、ご助言たくさんいただき有難う御座いました!
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 17:41:50.93 ID:mQOmooo80.net] getidで2窓で開いているIE上の同じページを区別させたいんですが、 クラス名で区別させるんだと思いますがそのクラス名が分かりません 今現在は getid("ウインドウタイトル","IEFrame") でやっています どなたかお願いします
891 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:17:29.81 ID:llmIWy
] [ここ壊れてます]
892 名前:Ss0.net mailto: やれているならそれで良いんじゃないの クラス名が知りたいなら 自分で調査スクリプトを描け(個人的には最初に造るもんだと思う) SPY++使えVisualStudioCommunityは無料でコレも付いてる 過去レスにSPY++互換ツールもあってそれを使っている人も居る でもURLとかでクラス名は変わったりしないから一緒だよ [] [ここ壊れてます]
893 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:25:43.67 ID:sRxQkC9R0.net] >>841 教えてヤフーにあったよ オイラもそれでフラッシュゲームのバックグラウンド化に成功した (´・ω・`)
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 18:47:20.16 ID:mQOmooo80.net] >>842 ごめんなさい 今現在↓こう書いてるのですが、このIEFrameというのがクラス名ですよね? getid("ウインドウタイトル","IEFrame") 二つ目のIEではこれはなんと書けばいいんでしょう? >>843 お手数ですが、そのURL教えてもらえませんか?
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:04:38.44 ID:sRxQkC9R0.net] おいおい それぐらい自分で探しなよ オイラはそれを保存してるからもうそのページに用はないんだよね (´・ω・`) オイラもフラッシュゲームのバックグラウンド化について 検索しながら試行錯誤しながら廻りまわってたどり着いたんだよね オイラたちはヒントをだす あとは自分で調べる、試す これは基本だよ
896 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:26:22.70 ID:llmIWySs0.net] 一般論として クラス名は単なるウインドウの種類の宣言でしかない 従ってほぼ全てのアプリで2つ目のウインドウだからといって違うクラス名になったりはしない それぞれのウインドウはIDで区別される UWSCの機能だけでやろうとしたらGETALLWINを使ったりする 個人的にはIEのタブを探して操作するなら SHDocVw.ShellWindows から目当ての SHDocVw.InternetExplorer を見つけてCOM操作するけれどね どっちにしてもいきなり二つ目のウインドウってアクセスは出来ない IEのウインドウをループで回して対象URLのウインドウをピックアップして集めてから その何個目ってしないと駄目
897 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:28:29.35 ID:llmIWySs0.net] で、面倒臭いなと思ったら半自動スクリプトにしたら良いんだよ スクリプトの最初に操作対象をクリックして下さいとか表示するとかね 完全自動化はそのための知識が揃ってからチャンジしたら良い
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/09(水) 19:59:37.81 ID:ZH6SCA5x0.net] UWSC公式サイトのFAQに載ってる毎度の質問だな
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/10(木) 00:09:29.62 ID:kbf2APsQ0.net] canal22.org/kansu/getctlhnd/
900 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/03/11(金) 02:09:47.22 ID:vpN6R87y0.net] AutoHotKeyとの違いってなに? こっちに出来て向こうにできない、またはその逆とか