1 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/16(月) 07:57:49 ID:+HI9MOeK0] Windowsを自動化させるツールUWSC。 ttp://www.h7.dion.ne.jp/~umiumi/ uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。 前スレ 自動化ツールuwsc使いよ集まれ2 pc11.2ch.net/test/read.cgi/software/1156416884/
783 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/24(土) 16:24:29 ID:T53k2DPg0] かなり、基本的なことで恥ずかしいことなのですがどうしても解決できず… HAZU = GETID("www.*** ") ClkItem(HAZU, "事件", CLK_BTN) 上記では、webウィンドウ上のアイテムをくりっくすることができません。 エラーは起きないのですが。。 原因としてはなにが考えられるでしょうか?
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/24(土) 16:35:10 ID:jFu+yqaK0] left clickではないだろうか。
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/24(土) 17:06:55 ID:JOvNHrQj0] >>781 =>>783 ?
786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/24(土) 19:22:15 ID:nTyZ62iO0] 早速のへんしんあり Left Clickということは、そのあとに座標指定ですよね? web上だとずれてしまいませんか?? >>785 違いますよ〜
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 02:35:43 ID:XdmZStkM0] >>782 わからなかったからここできくといいよ その時はURL晒すように! ↓のようなレベルの質問しなければだけどw ID:5VRwikzI0 ID:V1b5lGQF0 >>783 IE上のはCOMで書かないとだめ ウィンドウ関連はWindowsフォームを扱うもの
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 12:17:04 ID:mUdf+86S0] COMで書くと言うことは、C++や、java言語で組め ということですか?
789 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 12:29:17 ID:KXHTzu1o0] 座標(720,100)の赤要素が200〜255の時はAキーを押し、 赤要素が199以下の時はBキーを押す。 というように動かすにはどう記述すればいいですか? ---------------------------------------------- IFB (PEEKCOLOR(720,100) and $0000FF) 55 then KBD(VK_A,CLICK,40) ELSE KBD(VK_B,CLICK,40) ENDIF ---------------------------------------------- 上記のように書きましたがうまくいきません。 ご教授お願いします。
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 13:03:24 ID:mUdf+86S0] IE上の、どのラジオボタンをクリックするのかを指定するにはどのようにすればよいのでしょうか? IESetData(IE,True,"lr","lang_ja") // ラジオボタン選択:日本語のページを検索 IESetData(IE,"UWSC","q") // 文字設定:検索単語 IESetData(IE,True,"btnG","Google 検索") // SUBMIT ヘルプではこのように載っていますが1行目のlrというのは、ラジオボタンということを示しているのでしょうか? よくわかりません><
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 13:17:12 ID:yFPEYg0l0] 教授じゃなく教示だと何度言ったら
792 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 14:10:16 ID:XdmZStkM0] >>790 IESETDATA( IE, 値, Name, [Value, 番号] ) google.co.jpのソースを見ると <input id=all type=radio name=lr value="" checked><label for=all> ウェブ全体から検索 </label> つまり Name=lr, value= "" <input id=il type=radio name=lr value="lang_ja"><label for=il> 日本語のページを検索 </label> 同様に Name=lr, value= "lang_ja" 値がtrueということは,選択もしくはクリックするということ
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 14:11:57 ID:XdmZStkM0] >>790 //以下コード IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("www.google.co.jp ") BusyWait(IE) IESetData(IE,True,"lr","lang_ja") // RADIO: 日本語のページを検索 MSGBOX( "日本語のページを検索 のラジオボタンをオンにしました." ) IESetData(IE,True,"lr") // RADIO:ウェブ全体から検索 MSGBOX( "ウェブ全体から検索 のラジオボタンをオンにしました." ) Procedure BusyWait(ie) Sleep(0.5) // Wait Const TIME_OUT = 90 tm = Gettime() repeat Sleep(0.2) ifb Gettime() - tm > TIME_OUT MsgBox("Time Out:BusyWait") ExitExit endif until (! ie.busy) and (ie.readyState=4) Sleep(0.5) Fend
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 14:34:02 ID:XdmZStkM0] >>789 IFB ( PEEKCOLOR( 720, 100 ) and $FF ) >= 200 then andってどういうこと?教えて!
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 14:44:55 ID:od339K0v0] >>794 ビット積 ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=all&no=26&log=ON&cnt=1 オイラも前に同じこと聞いたw
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 14:48:20 ID:XdmZStkM0] >>795 ありw
797 名前:789 mailto:sage [2009/01/25(日) 18:08:13 ID:KXHTzu1o0] >>794 ありがとうございます。うまく動きました。
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 23:25:00 ID:mUdf+86S0] >>792 なるほど。ソースを調べるわけですね 骨が折れますね 大事なことを教えて頂き、ありがとうございます^^ しかし、右クリックでソースを調べることが出来ない場合はどうすればよいでしょうか?
799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 00:00:03 ID:o/KQMVrn0] >>798 opera使うといいよ 右クリック禁止抑制とかフレームのソースも簡単に拾える 俺も解析用に使った 今ではメイン
800 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 19:12:01 ID:+wQJsntF0] なにからなにまでありがとうございます 試してみます
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 21:28:55 ID:+wQJsntF0] InternetExplorer上で、操作したいページを表示した状態で、 IE = GETACTIVEOLEOBJ("InternetExplorer.Application", "Web航海時代" ) IESetData(IE,True,"point","3") ↑のようなコードを実行しても、なにも起きません エラーは起きていないし、nameやvalueも間違っていないと思うのですが…
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 21:58:38 ID:lqCZORip0] nameかvalueが間違ってるんだと思う IESetDataの戻値を見て正常かエラーか見てみればいかが?
803 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 22:40:25 ID:+wQJsntF0] <input type=radio name=point value="3"> ↑ソースコードですが、name,value共にあっているかと…
804 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 03:31:42 ID:i4vBvxWB0] 志村ー!、ダブルクォーテーション!ダブルクォーテーション!
805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 21:41:22 ID:ko0WGgzz0] うぅ、、、ダブルクォーテーションまーくをつけたりとったりしてみましたが、エラーになりました><
806 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 21:51:17 ID:i4vBvxWB0] <input type="radio" name="point" value="3"> これで行けるはずだけど、行けなかったらごめん、その時は他が間違ってると思う。
807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/28(水) 14:39:28 ID:Di5rN0Wd0] 色の判定をしてるのですが全然認識をしてくれません・・・ 自分の環境に合わせてるつもりなのですが、どうすればBRG値をうまく範囲化できるのでしょうか><?
808 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/28(水) 20:10:56 ID:aP03qKyG0] >>806 わざわざありがとうございました^^ しかし、なにもかわらず… 色々やってみます。
809 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/28(水) 20:42:55 ID:aP03qKyG0] 普段のIEの操作では実行できないページってあり得ますか? 例えば、私が操作しようとしているページは、そこのURLを直接打ち込んでもまっすぐ行けず 必ずホームに戻って、ホームから行きたいページのリンクをクリックしなければならないんですよ ホーム→ttp://www9.plala.or.jp/system19/ 操作したいページ→www9.plala.or.jp/system19/games/koukai/ ※Operaだと、直接飛ぶことが出来ました
810 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/28(水) 23:52:01 ID:NvkvtEFN0] オンラインゲーム? ならこのスレの上の方で散々書いてあると思うよ。 (それに当てはまるかどうかは知らない)
811 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 21:45:54 ID:3VYUuVlD0] 私は、ゲームの操作を自動化したいなとは考えていますが、特別なページ 殊に、上記のように、なぜURL直接入力では希望のページに飛べないの か疑問に思った だけです。
812 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 22:44:04 ID:7CcxhBvcP] >>811 ソースを見ればすぐ分かると思うのですが・・・ Windows Script Encoderはもちろん知っていますよね? IEでのみlocation.replaceがdecodeされるので別ページに遷移するのです。 これがuwscと一体どう関係あるのでしょうか?
813 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 03:55:44 ID:OeBnpuaS0] >>812 横レスだが おまいは常に人を馬鹿にしてないと生きていけない奴だなw 哀れw
814 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 04:18:35 ID:SPXRBmP00] >>813 横レスとか言いつつ本人乙
815 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 04:25:19 ID:OeBnpuaS0] >>814 横レスだといったろ?w 恥ずかしい奴だな おまいはw
816 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 05:00:06 ID:3mlQ1XKW0] ここまで俺の自演
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 05:17:44 ID:SPXRBmP00] >>815 単芝厨きもいです
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 21:23:01 ID:AuYpJb6K0] と、ここまで俺の自演。
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/31(土) 00:13:38 ID:vsuJT7Qv0] 集まってるおまえらよ、そろそろ散れよ。
820 名前:811 mailto:sage [2009/02/01(日) 06:29:15 ID:KLbW2NFD0] すいません><よく知りません
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 12:52:27 ID:w5ujQ7MM0] UWSCのスケジュールの設定で質問があります。 インターバルの設定が、1〜5分の設定と10分毎の設定などがあるのですが 7分や8分でのインターバルの設定は、どのようにしたら良いのでしょうか? 式による設定で式を入れれば良いのでしょうが どんな式を入れればインターバルが7分や8分になるのか わかりません。 ご教授頂ければと思います。
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 13:07:22 ID:VbDhycHQ0] >>821 インターバルだけでよかったら Interval_7min.uws かなんか作ってそこに Call Main.uws while true main() //関数呼び出し sleep(420) //7分 wend これでいいんじゃない?
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:14:17 ID:ZukW/kKt0] それだと、 7分 + main()処理 じゃん? GETTIME使えばピッタシ!! > 式による設定 > 自分で式を記述する事により細かな時間設定が決められます > 使える変数 > YY (年)、MM (月)、DD (日)、HH (時)、NN (分)、YMDNN (2000年からの経過分)、WW (曜日:日曜=0,.....土曜=6) > 注意:チェックは分単位でされます、分単位の設定(NN, YMDNN)を忘れずに > 例) > (WW=2) AND (HH=0 OR HH=12) AND (NN=0) // 火曜日の0時と12時 > (YMDNN mod 18)=0 // 18分間隔 7分 : (YMDNN mod 7)=0 8分 : (YMDNN mod 8)=0 1、YMDNN (2000年からの経過分) 2、modは割り算した余り 3、割り算して余りがゼロ じゃまいのか?
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:17:37 ID:ZukW/kKt0] 4、式を希望する日時で”真”になるようにすればいい たぶん・
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:59:54 ID:v32FCtQy0] >>823 Gettimeの戻り値が秒だからそれ使うだけでいいよ 分とか見たら割り切れないし。 ニュースの記憶見るかガンダム見るか悩むが やっぱりガンダム見る
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 19:06:26 ID:ZukW/kKt0] ??? SLEEPと、 Gettimeと、 スケジュール設定の式による設定 の3つのメリットデメリットを書いたんだけど。 >>分とか見たら割り切れないし。 って意味わかんないんだが、 何を意味した書き込みなんだ?
827 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 04:55:33 ID:cpjbDFRd0] >>826 ああ、ごめん。 >YMDNN (2000年からの経過分) これ知らんかった
828 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 13:10:24 ID:yH09tKlS0] 質問です .vbsファイルをuwscで開くにはどのように記述すれば出来ますか? exe以外のファイルの開き方が分からず、 今はクイック起動にショートカットを作成し、クリックして開くように記述しているので 直接開く方法があればご教授頂きたいです。
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 14:08:30 ID:pdMh/tE90] doscmd("???.vbs")
830 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 14:30:06 ID:yH09tKlS0] >>829 有り難う御座います。 ですが実行されませんでした フルパスで""も付けたんですが… OSはvistaなんですが関係無いですよね…
831 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 14:49:49 ID:cpjbDFRd0] >>830 ショートカットのプロパティにリンク先っていうのがあるでしょ。 それをコマンドラインに入力したらいいんだけど。 コマンドプロンプトを開いて実行するか、 ファイル名を指定して実行(Vistaにあるかは知らないが)で、実行できるか試してみて。
832 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 15:05:20 ID:yH09tKlS0] >>831 有り難う御座います。 先ほどuwscで動かなかったので、 コマンドプロントからも直接やってみましたが、 vbsは実行されてませんでした orz
833 名前:rpaawnaw mailto:sgixjd@qloaau.com [2009/02/02(月) 15:07:51 ID:2TLMPBOD0] qFqgve <a href="lycvakiqmpbn.com/ ">lycvakiqmpbn</a>, [url=gxsxjoosngmt.com/]gxsxjoosngmt[/url], [link=ifsiyjjscezd.com/]ifsiyjjscezd[/link], piuboesbpern.com/
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 15:11:57 ID:pdMh/tE90] >>832 Vistaでも問題なくできるぞ どんなエラーメッセージが出る?
835 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 15:21:46 ID:yH09tKlS0] >>834 いえエラーは出ないんですが、 コマンドプロンプトに(フルパス).vbsをペーストしてEnterを押しても 動いた形跡が無いんですよね・・・ ただbatファイルをウインドウ非表示で実行させるだけの簡単な物なんですが それとも何か必要な物が欠けているんでしょうか 普通にクリックしたときは動くんですが・・・
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 15:28:21 ID:PVHBkFFR0] >>835 vbsのほうにメッセージボックスを1行入れてみたら?
837 名前:名無しさん@お腹いっぱい。 [2009/02/02(月) 15:49:30 ID:yH09tKlS0] >>836 有り難う御座います。 色々調べてみて今、解決出来ました。 お騒がせしました。
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 19:05:09 ID:Os9uDG+70] できれば、何が原因だったか教えてくれると有り難いとか思ってるのは俺だけかな? 初心者だからどういう時にそうなるのか気になる。
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 20:36:43 ID:bbkYkSZI0] ブラウザを起動するときに最小化できませんか? 検索では、UWSC.exeのあるフォルダのUWSC.INIをメモ帳で開き、 StopForm=0 を StopForm=1 に変更して保存します。 とあったのですが、iniファイルがなく設定できませんでした。 キーボードからオルトとスペース、Nキーで最小化できるので キー操作のスクリプトからできることはできるみたいですが 一回、表示されてからの対応になるのでできれば起動時から できたらいいのですが。
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 21:07:48 ID:yMTVVraI0] comでxmlhttpを使え。解決する。 他にも色々あるが、まぁ、とりあえず使ってみろ。
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 03:38:57 ID:eeztqI130] >>839 UWSC.INI の StopForm キーの値は スクリプト再生中に現れるフォームウィンドウを 表示するかしないかってやつじゃなかった? 最小化でアプリ起動ってのは API 関数の ShellExecute() を使う HINSTANCE ShellExecute( HWND hwnd, // 親ウィンドウのハンドル LPCTSTR lpVerb, // 操作 LPCTSTR lpFile, // 操作対象のファイル LPCTSTR lpParameters, // 操作のパラメータ LPCTSTR lpDirectory, // 既定のディレクトリ INT nShowCmd // 表示状態 ); ブラウザのパスは適宜変更してください DEF_DLL ShellExecuteA(hwnd, string, string, string, string, int): dword: shell32.dll CONST SW_SHOWMINIMIZED = 2 IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL, SW_SHOWMINIMIZED) < 32 THEN MSGBOX("実行に失敗しました") ENDIF
842 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 03:52:05 ID:eeztqI130] >>841 すみません、比較式を間違えました 失敗時は 32 以下の値を返すので、正しくは以下です IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL, SW_SHOWMINIMIZED) <= 32 THEN MSGBOX("実行に失敗しました") ENDIF
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 09:29:53 ID:9ClBsfHO0] API 関数とかしりませんでした。 実際やってみたらブラウザは機動できました。 しかし、そこからの動作がされません。 指定のアドレスに移動するにはどうしたらいいのでしょうか? DEF_DLL ShellExecuteA(hwnd, string, string, string, string, int): dword: shell32.dll CONST SW_SHOWMINIMIZED = 2 IFB ShellExecuteA(NULL, "open", "C:\Program Files\Internet Explorer\iexplore.exe", NULL, NULL, SW_SHOWMINIMIZED) <= 32 THEN MSGBOX("実行に失敗しました") ENDIF IE = getactiveoleobj("internetexplorer.application") IE.Visible = True IE.Navigate("URL") 上記のような感じでやっています。アドバイスお願いします。
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 21:49:12 ID:eeztqI130] >>843 起動と同時に URL に移動するには ShellExecute() の第 4 引数に URL を渡します なお、ProgID は大文字小文字を区別するので 正しくは『InternetExplorer.Application』です また、以下のコードでも同じことができます OPTION EXPLICIT DIM url = "www.2ch.net/ " DIM ie = CREATEOLEOBJ("InternetExplorer.Application") CTRLWIN(HNDTOID(ie.HWND), MIN) ie.Visible = True ie.Navigate(url)
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 12:53:58 ID:m6en7Q5I0] uwscでIEを開いた後、そのIEで開いたHP内の文字データなどを EXCELのセルに代入することはできますでしょうか?
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 13:05:01 ID:tXqKlnWn0] できます
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 13:20:25 ID:m6en7Q5I0] ありがとうございます なんとかやってみます
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 19:46:29 ID:MfK5WOxL0] >>844 勉強になります。ヘルプみたり過去の質問検索してみましたが、 あまり、APIとかのことが載ってないのね・・・
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 23:12:09 ID:N1AZKeZ50] >>848 MSDN見たほうが手っ取り早い事が多いからなぁ?
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 12:59:57 ID:hPEtxwon0] A = "●●"と言った感じのものを20ぐらいあるとしてそれを順に 送信しようと頑張っています。ちなみに一個だけならなんとかなる のですが、複数だとどうしてもコードがいっぱいになってしまします。 IESetData(IE,A,"kakikaki") id = getid("internet explorer") clkitem(id,"ボタン",CLK_ACC,CLK_BACK) sleep(15) これが、そのコードなのですが、Aのところに複数の文字を順に設定 できたらと思っています。よろしくおねがいします。
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 15:36:29 ID:q6mgGLtH0] A[0] = "●●" A[1] = "○○" FOR i = 0 TO 20 - 1 IESetData(IE,A[i],"kakikaki") id = getid("internet explorer") clkitem(id,"ボタン",CLK_ACC,CLK_BACK) sleep(15) NEXT これでいいじゃん
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 16:05:23 ID:BBz1+Wne0] レスどうも。m(_ _)m 実際に実行してみたら下記のようなエラーがでました。 Uスクリプト: 変数: A 配列をオーバーしてます 8行目:A[1] = "●●" こんなエラーがでます。A[0]は、大丈夫みたいです。 なんでだろう?なにかわかりましたら詳細お願いします。
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 16:32:11 ID:1eXzPAIO0] dim a[19]= "●●","○○","△△","▲▲",・・・・・(20個記述) "とりあえず1から10まで聞いとけ"という性格が羨ましいと思うようになったこの頃。('A`)
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 17:44:09 ID:BBz1+Wne0] うまくいきました。m(_ _)m なぜ、前にやつはエラーがでたのかしら? 原因が分からない。
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 18:42:36 ID:q6mgGLtH0] 変数の定義、宣言と 変数への値の代入という 二つの違いを理解してないから
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 03:18:07 ID:vXpPMDOu0] 前から疑問だったけど、聞けなかったこと。 >>841 のshellexecuteのnShowCmd。msdn等を見ると記述順番は SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOW ・・・ で順番違うじゃない? この定数はどこで判別するんでしょ? どなたか解説してくれないかな…
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 09:37:19 ID:xlfhJ7RV0] >>856 Windows Platform SDK の WinUser.h で定義されてます ドキュメントの値は、記号定数名でソートされてるようです CONST SW_HIDE = 0 CONST SW_MAXIMIZE = 3 CONST SW_MINIMIZE = 6 CONST SW_RESTORE = 9 CONST SW_SHOW = 5 CONST SW_SHOWDEFAULT = 10 CONST SW_SHOWMAXIMIZED = 3 CONST SW_SHOWMINIMIZED = 2 CONST SW_SHOWMINNOACTIVE = 7 CONST SW_SHOWNA = 8 CONST SW_SHOWNOACTIVATE = 4 CONST SW_SHOWNORMAL = 1
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 11:36:45 ID:l5adthQH0] >>857 回答ありがとう!見つけられました。 これ、目的の記述部分を捜すのは適当な属性値をGrepで捜すくらい しか思いつかなかったのですが、(ちゃんと順を追ってじゃなく、 あくまでdef_dllのためだけという意味)他に良い方法ありますでしょうか? 重ね重ねで恐縮ですが、もし知恵があれば教えてくださいませ。
859 名前:名無しさん@お腹いっぱい。 [2009/02/07(土) 20:34:24 ID:TsGY9ahZ0] BMP画像(100x100)からUWSCを使ってRGB値をテキスト出力するにはどうすればよろしいでしょうか?
860 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 00:47:32 ID:fB3ojcA60] 色情報を取得してそれをファイルに書き出せばいいのではないでしょうか
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 07:22:53 ID:QoTANPZk0] >>858 大抵の IDE はシンボルの定義部にジャンプする機能があるけど 確認のためだけに起動するのは避けたいので 俺は grep してます
862 名前:858 mailto:sage [2009/02/08(日) 18:05:42 ID:iaalqOSe0] >>861 ナルホド〜。 ひとつ賢くなりました。多謝。
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 22:31:33 ID:dNKbKAR9O] いくつかの画像のサンプルがあって、指定したウィンドウ内からその画像を書いた順番で探す。 合ったら処理抜け、なかったら次の画像探し 最終的にどれもなかったらまた処理抜けってのをがんばってやろうとしてるんだけどどーすりゃいいのかな いちいちifbで探してなかったらbreakみたいにやらんとダメ? もーちょいスマートにやれないかな
864 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 23:45:58 ID:vASK790PO] 日本語でおk
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 23:51:13 ID:SXOT3GUb0] 例えば test test1 test2 って画像があって どれかがヒットしたらその画像をクリックってことやらせたい場合 ifb chkimg (test.bmp) = true then mmv(g_img_x, g_img_y) sleep(1) endif ifb chkimg (test1.bmp) = true then mmv(g_img_x, g_img_y) sleep(1) endif ifb chkimg (test2.bmp) = true then mmv(g_img_x, g_img_y) sleep(1) else break endif ↑よりもスマートってか効率的な書き方があるのかなってこと
866 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 23:55:43 ID:3bfozRlh0] ifb chkimg (test.bmp) OR chkimg (test1.bmp) OR chkimg (test2.bmp) then mmv(g_img_x, g_img_y) sleep(1) endif
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/09(月) 00:20:04 ID:wdWGM0TOP] 日本語でおk こういう意味?私はスマートという日本語を知りません DIM bmp[]="test","test1","test2" for n=0 to length(bmp)-1 ifb chkimg(bmp[n]+".bmp") = true then mmv(g_img_x, g_img_y) sleep(1) break endif next
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/09(月) 00:34:17 ID:fwfzfodA0] 867のをかきかえてみると DIM bmp[5]="Garnet","Star sapphire","Topaz","Spinel","Emerald" for n=0 to length(bmp)-1 ifb chkimg(".\image\"bmp[n]+".bmp") = true then mmv(g_img_x, g_img_y) sleep(1) break endif next こうなったんだけど式違うって怒鳴られました・・・
869 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/09(月) 12:18:39 ID:wdWGM0TOP] パソコンに同情するわ
870 名前:名無しさん@お腹いっぱい。 [2009/02/09(月) 16:18:53 ID:5wLvS0Ft0] ".\image\"bmp[n]+".bmp" × ".\image\" + bmp[n] + ".bmp" ○ ちゃんとスペース入れないから間違うんだ
871 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 14:57:33 ID:ldVPkdsr0] 特定の文字を含むアドレスを抽出しそれを順々に周っていくという のを作っています。 IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate("www.yahoo.co.jp ") REPEAT SLEEP(0.1) UNTIL !IE.BUSY AND IE.READYSTATE = 4 KAISU = IE.document.links.length FOR A = 0 TO (KAISU - 1) IFB POS("www. ●●[A]", IE.document.links[A].href) > 0 IE2 = GETACTIVEOLEOBJ("InternetExplorer.Application") IE2.visible = True IE2.navigate(IE.document.links[A].href) UNTIL !IE.BUSY AND IE.READYSTATE = 4 ENDIF NEXT IE.QUIT [A]のところは毎回違います。これでやると順々に周ってくれません。 フリーズさえしないもののページを読み込むのが終了せずそのままに なります。 実行したときには、"www. ●●[A]"←この部分はちゃんとしたアドレス になっています。
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 16:02:10 ID:HCMc1CKn0] >>871 >IE2 = GETACTIVEOLEOBJ( これってIEを起動していないと、オブジェクトIEとオブジェクトIE2は同じものになるよね。 で、元のIEで他のページ開いちゃったら、IE.document.linksが無効になっちゃうんじゃないかな。 というか最初にとったIE.document.links.lengthとページが切り替わったあとのやつとでつじつまが合わなくなってちゃんと動かないはず。 特にUWSCのFOR分は、ループに入ったら回数固定だから、その辺が変動しないようにきっちりやらないと。
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 16:11:49 ID:ldVPkdsr0] IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate("www.yahoo.co.jp ") REPEAT SLEEP(0.1) UNTIL !IE.BUSY AND IE.READYSTATE = 4 KAISU = IE.document.links.length FOR A = 0 TO (KAISU - 1) IFB POS("dailynews.yahoo.co.jp ", IE.document.links[A].href) > 0 IE2 = CREATEOLEOBJ("InternetExplorer.Application") IE2.visible = True IE2.navigate(IE.document.links[A].href) ENDIF NEXT IE.QUIT これが参考にしたソースなのですが、871は私が色々やってるやつです。 上記のソースだとそれぞれブラウザで開くということになってしまいます。 表示されたページで特定の語句が含まれるアドレスをゲットして それをもう一つ起動したブラウザで順に巡回するというのでもいいのですが。
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 16:54:12 ID:HCMc1CKn0] >>873 2つ目をCreateしてれば問題ないけど、 1つ目に上書きするとだめなんですよ。 Getするということは、確率的に1つ目を取得することになります。 他の窓がない場合は100%1つ目の窓を取得します。 どうしても1つ目の窓でやりたければ、 Navigateする前にlinksを全部配列にコピーしておかないと駄目です。 ループすると次々に窓を起動するのでいやだということなら、 ループに入る前にあらかじめ2つ目をCreateしておけばいいんです。 そもそも参考にしたソースは実用的な動作じゃありません。 ただ、Navigateした後に待ちを入れていないので、スクリプトの動作は快適で安定するでしょう。
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 17:15:37 ID:ldVPkdsr0] とりあえず >ループに入る前にあらかじめ2つ目をCreateしておけばいいんです。 この手法をお願いします。できれば配列にコピーというのもお願いします。
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 17:54:36 ID:HCMc1CKn0] >>875 まずは2つ起動 IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate("www.yahoo.co.jp ") REPEAT SLEEP(0.1) UNTIL !IE.BUSY AND IE.READYSTATE = 4 IE2 = CREATEOLEOBJ("InternetExplorer.Application") IE2.visible = True KAISU = IE.document.links.length FOR A = 0 TO (KAISU - 1) IFB POS("www. ●●[A]", IE.document.links[A].href) > 0 Then IE2.navigate(IE.document.links[A].href) REPEAT SLEEP(0.1) UNTIL !IE2.BUSY AND IE2.READYSTATE = 4 ENDIF NEXT IE.QUIT IE2.QUIT if 〜 Then REPEAT 〜 UNTIL ThenとREPEATが抜けてました あと、IE2でNavigateしたのに待ちループではIEになってました。 インデント(頭の空白)入れないとそういうところのミスが発見できません。
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 18:23:31 ID:ldVPkdsr0] 正直、わからないです。 質問が悪かったのかしら・・・ 1、指定ページに移動 2、特定の文字を含むアドレスをゲット 3、ゲットしたアドレスを順に表示(IE2でも可) この動作なんだけどなー。うーむ。
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 18:43:10 ID:HCMc1CKn0] >>875 配列を使うやつ DIM リンク[]="ダミーデータ" IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate("www.yahoo.co.jp ") REPEAT SLEEP(0.1) UNTIL !IE.BUSY AND IE.READYSTATE = 4 KAISU = IE.document.links.length FOR A = 0 TO (KAISU - 1) IFB POS("www. ●●[A]", IE.document.links[A].href) > 0 Then リンク[length(リンク) - 1] = IE.document.links[A].href resize(リンク, length(リンク)) ENDIF NEXT KAISU = length(リンク) - 1 // 配列の最後尾は空欄 FOR A = 0 TO (KAISU - 1) IE.navigate(リンク[A]) REPEAT SLEEP(0.1) UNTIL !IE.BUSY AND IE.READYSTATE = 4 NEXT IE.QUIT
879 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 18:51:38 ID:HCMc1CKn0] >>878 の補足 リンクの選別を最初のループでやってるので、2回目のループは無条件に処理できる。 ループ回数が違っているのも要チェック。 配列がちょっとややこしいやり方だけど、カウンタが2つ以上になってもややこしいのでこういうやり方してます。 リンク[length(リンク) - 1]は、リンクっていう配列の最後尾を意味します。 resize(リンク, length(リンク))は、配列を一つ増やします。 上記2行により、最後尾にデータを追加するたびに配列を増やし、常に最後尾をあけておきます。 ちなみに、最初に配列数を0にしておけばごみがでないように思われますが、 最小配列サイズが1なので、どうしてもごみが入ります。 また、最初の1回で隙間をなくそうとすると、ループの処理がおかしくなります。 >>877 おいおい 1、指定ページに移動 は、IE.Navigateだし 2、特定の文字を含むアドレスをゲット は、 POS("www. ●●", IE.document.links[A].href) > 0 の条件を満たすときの IE.document.links[A].href だし 3、ゲットしたアドレスを順に表示(IE2でも可) は、 ループの中でIE.Navigateですよ これ以上丁寧に教えるのは無理。 ヘルプとサンプルをじっくり見てください。 1行ずつ実行してみるのもいい手。 僕は実験のファイルが70くらいたまってる。
880 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 20:47:55 ID:ldVPkdsr0] お手間をかけます。m(_ _)m 実際に実行してみたのですが、両方駄目でした。 エラーは出ませんが、最初のヤフーページが読み込み中になりそれ以後が進みません。 難しいわぁ〜('A`)
881 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 21:20:46 ID:HCMc1CKn0] >>880 とりあえずそのままuwsファイルに書き込んで起動したら、IEは自動的に終了した。 読み込み中で止まるって? IEの設定の問題かな? >>876 のやつの POS("www. ●●", IE.document.links[A].href) を POS(".html", IE.document.links[A].href) に書き換えたらばんばん開くんですけど。 POS(”www”, IE.document.links[A].href) で試したらファイルのダウンロードが動いてCOMエラーになったけどさ。 IEのバージョンでも違うのかもしれないけど、IE6ではしっかり動きました。 ちなみに僕が使ってるのはちょっと古いバージョン。 4.4.2.4のやつ
882 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/10(火) 23:15:08 ID:d1Cz2CKr0] ちと教えてくれい。 JscriptのSort関数ってUWSCで扱えるかしら? 連想配列のソートを使って凌いでしまったんだけど、 もし使えるようなら、そのうち、ちゃんとw悩んでみようかと思って…。
883 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/11(水) 00:17:02 ID:HuYbgfa/0] >>882 無理じゃね? そういうCOMオブジェクトがあるとも思えない。 DLLの場合は配列を渡せればいけるかもしれない。 と思ったけど、データベース使えばSortできるっぽいね。 テーブル作るのめんどくさそうだけど。