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/
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 04:43:07 ID:/iPm/dkm0] そもそも uwscの話題なのか?ww
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 04:48:06 ID:8PVexPPM0] >>636 >>633 どこが敬語だよ 俺は語尾を揃えてくれればタメ語でも問題ないんだけど ネットバンクっぽいからSSでも上げてくれればいいのに >>641 >>633 UWSCっぽいけど?w
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 09:41:27 ID:WuPgWUsB0] 自演乙
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 13:51:01 ID:tGHU8yNl0] グラフィック関連描画関連のハードが違うと全く同じスクリプトでも動かないよね。画像判定は。 色無視ならまだ行けそうだけど。
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 14:50:08 ID:Htt4DvzM0] シェアウェア版はほとんど話題になっていないし 他でもあまり情報が無いみたいだけど Web自動巡回する場合はUWSCが一番良いのでしょうか それとも他に良いのがあるのかな
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/03(土) 16:05:34 ID:89fA0Ah10] 漠然としすぎてるだろ。 なにを対象として巡回したいのか…極論RSSだけだったらGoogleReaderとか使え。 UWSCとかのスクリプトを触ったことが無いなら、とりあえずほかのソフトに不満を持ってからだな。 何を対象としてどんなやり方でどういう使い方を想定してこんな結果が便利そう・・・とか具体例を持てないと『作る』のは難しい。 使い込み始めると分かるが、シェアの利点はEXE化とデバッガぐらいしかない。 フリーで試してみるならそれはいい事だ。必要なのは探究心です。
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 00:16:56 ID:QbcstKJg0] >>645 Web自動巡回は昔から色んなソフトがある。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 01:26:47 ID:PWm0tapx0] 株式、先物、FXのシステム売買で APIを公開していないブローカーを使って取引する時は シェア版UWSC等で書かれたスクリプトが役に立ちそう つーか、この分野で一番需要がありそうw
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 01:58:34 ID:uSQIty0X0] 流石に自動取引は危なっかしくて俺には出来ねぇ…。
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 03:28:43 ID:ugW3lSoF0] >>648 なんでシェア? Web記録があるから?フォーム作れるから? どうみてもC#で十分です。
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 03:43:43 ID:7ITfu5Zd0] C#とかいい始めたらキリが無いだろ。
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 04:05:12 ID:ugW3lSoF0] 冗談で書いた
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 09:35:21 ID:CqAA14y10] ∧l二|ヘ (・ω・ ) ←に土産を持たせてどこかのスレに送ってください ./ ̄ ̄ ̄ハ | 福 | | | 袋 | |,,,....  ̄ ̄ ̄ ̄ 現在の所持品: 帽子 老眼鏡 爪楊枝 ステテコ コタツ 仲村みうのDVD「卒業」 東名 オプーナ オプーナ オプーナ 株券 オプーナ 信長の野望online争覇の章 いづおロール 犬上小太郎 神藤美香のDVD(赤) ( ´;゚;ё;゚;) FF11アルタナの神兵追加ディスク 、FF11ジラートの幻影追加ディスク、xbox360エリート もんもん ネコ ミカン DDR2 32G分 E8500 トイレ 精力剤 GV-MVP/HS2 ヘンシェル λ ID:x9wfJxWn 敵の潜水艦 AIR Cl_ sabo10
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 17:06:35 ID:Sh/j4CRt0] >>650-651 C#で簡単に作れるのかまじで? ちょっとやってみたけど WebBrowserコントロールっての使って単純なブラウザーは簡単に出来るけど 自動でパスワード入力とかラジオボタン操作とかフォーム送信とかの機能を実装出来るの?
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 17:15:35 ID:ugW3lSoF0] >>654 できるよん SetAttribute,GetAttribute,InvokeMember
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 18:29:45 ID:ika+BqcM0] ブローカーにこだわらなければMT4使うのがベストだろ
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/04(日) 20:19:05 ID:1GxGvmcA0] 昔、株板に自動売買スレあったけど、C#やExcelとかで作っている人はけっこういたな 俺もExcelで作ったのみたことある。 VBAでIEのコンポーネントを非表示でやってたな。 今なら、Rubyのwww::Mechanizeあたりでやるだろうけど >>656 そうですな。俺はNinjtaTraderもオススメ
658 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/05(月) 20:36:45 ID:Agh4FC2Z0] 確認させてもらいたいのですが、1024×768の画面サイズで使用する場合、 CHKIMGで使う座標は、左上が(0,0)で右下が(1023,767)で合ってますでしょうか?
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 00:47:24 ID:IQ+0SvAq0] つ 座標君
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 02:41:16 ID:HzO9vyYE0] 普通にそれで良いと思う。 俺は欲しい画面をキャプチャしてレタッチソフトなんかでその場所確認してるけど…新規でそのためだけのツール入れるのが面倒なだけだったり。
661 名前:658 mailto:sage [2009/01/06(火) 20:17:34 ID:dXsYDRZb0] >>659-660 座標君ですか。使ってみます。 ところで、「探したい画像が画面にいくつあるのか、またその位置をチェックする」というスクリプトを書いてみたのですが、 暇な方がいらっしゃいましたら校正お願いできませんでしょうか。 とくに配列の宣言はこれでいいのか・・・。 関数の戻り値は1つだけだと思うので位置はグローバル変数で指定しないとダメですよね? 今は数が99個までとしているのですが、99個超えたらどうしようみたいなのもあります。 //////////// PUBLIC X_Zahyo[99] PUBLIC Y_Zahyo[99] Num = CountImage( 0, 0, 1023, 767, "乳首.bmp", 11) FOR i = 1 TO Num PRINT X_Zahyo[i] + "," + Y_Zahyo[i] NEXT // 続く
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 20:18:05 ID:dXsYDRZb0] // 続き FUNCTION CountImage( X_Start, Y_Start, X_End, Y_End, FileName, Y_Size) // X_Start サーチ範囲(X座標開始位置) // Y_Start サーチ範囲(Y座標開始位置) // X_End サーチ範囲(X座標終了位置) // Y_End サーチ範囲(Y座標終了位置) // FileName 画像名 // Y_Size 画像の高さ(ドット数) Y = Y_Start // サーチ位置(初回はY_Start) i = 0 // 発見した個数 WHILE CHKIMG( FileName, 0, X_Start, Y, X_End, Y_End) = TRUE i = i + 1 // 発見した個数をカウント X_Zahyo[i] = G_IMG_X // X座標を格納 Y_Zahyo[i] = G_IMG_Y // Y座標を格納 Y = G_IMG_Y + 1 // 次は発見した場所の1ドット下からサーチする // 以下、発見した画像の真横をサーチ WHILE CHKIMG( FileName, 0, G_IMG_X + 1, G_IMG_Y, X_End, G_IMG_Y + Y_Size - 1) = TRUE i = i + 1 // 発見した個数をカウント X_Zahyo[i] = G_IMG_X // X座標を格納 Y_Zahyo[i] = G_IMG_Y // Y座標を格納 WEND WEND // 戻り値 RESULT = i FEND
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 21:04:53 ID:yXB+Es0j0] なんかいろいろめんどくさいことやってるね… 関数にするのはともかく、わざわざ個数と座標を返して 関数の外でPrintする必要はないんじゃない? わざわざ配列を作る必要もないし、配列サイズを気にする必要もなくなる 二重ループも意味不明 総当たりだと時間かかるから、画像サイズとか入れて少しでも時間短縮できれば便利じゃない? あ、でも真横にある場合もあるから一応チェックするか みたいな思考かもしれないけど、結局ただの二度手間 単純に総当たりのループ一つだけでいいじゃん。 最初に書いたとおりループ内でPrintした方がスマート
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 21:27:37 ID:0pokcDL30] >>661 どうかな wkx = 0 wky = 0 while CHKIMG( "乳首.bmp", 0, wkx, wky, 1024, 768 ) PRINT G_IMG_X + "," + G_IMG_Y wkx = G_IMG_X + 1 wky = G_IMG_Y wend printすると.\UWSC.LOGに残るよ
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 21:56:54 ID:1giQJn+o0] >>664 この書き方で同一X軸上にある2つ目の画像って取得できる?
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 22:10:22 ID:1giQJn+o0] 自分は質問者じゃないんだが >>663 まぁ、関数の外にデータを持っていきたい場合もあるだろう。 ってんでprintは便宜上の表現として良いかなと思う。 >単純に総当たりのループ一つだけでいいじゃん。 これはどういう書き方になるんだ? >664だと >665 に書いたとおりに同一X軸の画像は取得できない。 増減対象をXとYで2回繰り返しても、XとY軸に同一の座標(格子状の配置)のものがあれば取りこぼすし。
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 22:20:35 ID:53iAnw2k0] なんで出来ない?
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 22:24:53 ID:0pokcDL30] >>665 CHKIMGってtrue返したあとどういう挙動してるの? x,yってもちろんxから走査するよね?
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 22:51:48 ID:1giQJn+o0] 自分の知る限り chkimgは x=0,y=0〜画面解像度 x=1,y=0〜画面解像度 x=2,y=0〜画面解像度 と走査していって 最初に見つけた座標ひとつだけをG_IMG_X,G_IMG_Yへ返して終わりだ。 戻り値が配列になってるとかそういうのは聞いたことがないなぁ。 …なんか質問者の意図とは違うところに話が行ってる気がするよw 配列の受け渡しは関数宣言のvarで出来るからグローバルじゃなくても良いよ。 後、あんまり綺麗じゃないけど、対象数が不明すぎるなら連想配列でも良いんじゃないかな?
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 23:22:48 ID:1giQJn+o0] xyが違ってた y=0,x=0〜画面解像度 y=1,x=0〜画面解像度 y=2,x=0〜画面解像度 と走査していって だな …しかし、>663はどうやってループひとつで解決できるんだろう。
671 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 23:24:29 ID:0pokcDL30] >>669 今テストしたんだけど一発で>>664 俺書けてるじゃんw 君のPCがおかしいよ .\UWSC.LOGはどこにあるかしってる? 処理したいならprintのところに関数でもなんでも置換すればおk
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 23:30:04 ID:0pokcDL30] >>670 ごめん間違ってたOrz 再考するわ
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 23:54:50 ID:0pokcDL30] これでどうよ wkx = 0 wky = 0 while CHKIMG( "乳首.bmp", 0, wkx, wky, 1023, 767 ) PRINT G_IMG_X + "," + G_IMG_Y wkx = G_IMG_X + 1 wky = G_IMG_Y ifb CHKIMG( "乳首.bmp", 0, G_IMG_X , G_IMG_Y + 1, G_IMG_X, 767 ) then PRINT G_IMG_X + "," + G_IMG_Y endif wend
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/06(火) 23:58:58 ID:1giQJn+o0] アルゴリズムの初歩っぽいけど、こういうのは考えると楽しいよね。 >673 惜しいけど、それは考え方が変わってないよね? 二つ目以降が取得できない。 ■ ■ ■ ■ ■ ■ ■ ■ ■ 658の二重ループはスマートな結論だと思うんだけどなぁ。
675 名前:673 mailto:sage [2009/01/07(水) 00:04:09 ID:yeJt08sV0] >>674 君スマートやね 初歩とかそういうレベルじゃなくて CHKIMGの仕様,振る舞いがおかしくない?
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:04:29 ID:7ES8amql0] しかし、シレっと「乳首.bmp」なんて書くんだもんなぁ。 ネタ過ぎるwwwwww
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:06:33 ID:68bDEsj20] >>674 単ループで2個目が取れないと思ってるのなら 二重ループじゃ3個目が取れないんじゃないのか?
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:11:23 ID:yeJt08sV0] >>676 どうなんだろうw本人消えたし >>677 単ループがどのことを指しているのかわからないけど >>673 じゃ実際にできなかった
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:11:34 ID:7ES8amql0] >>675 まぁ、おかしいというか物足りないというか。 『最初に見つけたものだけを返す』仕様だから仕方が無い。 その上で自前で関数書くのもライブラリ探すのも結果は一緒だよ。 >677 2重目のwhileのchkimgで 見つけたx座標に+1して再探査してるから、3個目も探し続けるでしょうね。
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:14:13 ID:tfkVUyW50] この中に本人がまぎれてます
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:19:23 ID:7ES8amql0] ああ、小学生的に日本語を間違えてた >>674 × 二つ目以降が取得できない ○ 三つ目以降が取得できない もしくは ○ 二つ目までしか取得できない ですね
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:42:30 ID:68bDEsj20] ああ、誰も突っ込まないからそこが間違ってるだなんて思わなくて そこを疑わずに話をしてたけど Whileの条件だけでループさせたところで 一重だろうが二重だろうが…何重にしたところで駄目だろ FOR i = 0 TO 767 - 画像縦サイズ X_Start = 0 WHILE CHKIMG( FileName, 0, X_Start, i, 1023 - 画像横サイズ, i) = TRUE X_Start = X_Start + G_IMG_X PRINT 個数 + ":" + G_IMG_X + "," + G_IMG_Y WEND NEXT
683 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 00:45:17 ID:68bDEsj20] > X_Start = X_Start + G_IMG_X X_Start = G_IMG_X + 画像横サイズ こうか…間違ってたわ
684 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 01:09:03 ID:yeJt08sV0] >>682 >>661 これでできたよ Y = 0 Y_Size = 1 FileName = "乳首.bmp" WHILE CHKIMG( FileName, 0, 0, Y, 1023, 767) print G_IMG_X + "," + G_IMG_Y Y = G_IMG_Y + 1 WHILE CHKIMG( FileName, 0, G_IMG_X + 1, G_IMG_Y, 1023, G_IMG_Y + Y_Size - 1) print G_IMG_X + "," + G_IMG_Y WEND WEND >>661 なんでわざわざ配列使うの? printを他の処理に変えばいいんじゃない?
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 09:05:43 ID:KoQ4Gi/C0] 結論 乳首の数は2個、位置は乳輪の真ん中
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 10:05:27 ID:KoQ4Gi/C0] という冗談はおいて置いて、 >>666 の言う通り、PRIINTは便宜上だろう。 最終的に配列で欲しいんじゃないか? 散布図画像のプロットデータを読み込んで何やら高度な計算、とかだったら99個じゃ足りないだろうな。 1. 数と位置を調べ、ファイルに書き出す。 2. ファイルを一旦閉じる。 3. ファイルを開く。 4. 配列宣言 DIM X_Zahyo[FGET(ID,-1)] DIM Y_Zahyo[FGET(ID,-1)] 5. 配列に値をほうり込む。 これで大丈夫かな? 試してないけど。
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 11:37:52 ID:NIEdi7RU0] おまいらがあんまり楽しそうに語ってるから久々に触ってみようと思ってヘルプ読んでみたけど ChkImgの挙動ちゃんと書いてないんだなw 二箇所引っかかるような画像用意して MsgBox(ChkImg(fname) + "<#CR>" + "x: " + G_IMG_X + "<#CR>" + "y: " + G_IMG_Y) MsgBox(ChkImg(fname) + "<#CR>" + "x: " + G_IMG_X + "<#CR>" + "y: " + G_IMG_Y) ってやったらこの二行目ので二箇所目の座標もちゃんと検出したんだけど While ChkImg(fname)
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 11:40:31 ID:NIEdi7RU0] 途中で送信しちゃった 座標指定も使わず While ChkImg(fname) //G_IMG_XとG_IMG_Yの出力 Wend だけでいいんじゃないのか? って思ったけどどうなんだろ
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 11:50:19 ID:KoQ4Gi/C0] 一番左上の画像が延々と検出されるだけ。
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 11:57:26 ID:NIEdi7RU0] え…俺二箇所ともWhileの方で引っかかるんだけど… 俺も無限ループになるのかなと思って>>687 で試した結果 引数省略した時のデフォの値に前回取得したG_IMG_X,G_IMG_Yの結果を勝手にずらした座標が使われるって解釈して ほんでもって>>688 でちゃんと2箇所無限ループもせずに取得できたんだけど…
691 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:05:53 ID:KoQ4Gi/C0] 試したけどやはり一つだけを延々と検出するだけなんだが?
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:06:49 ID:NIEdi7RU0] あ、ごめんごめん この手の用途はPC放置してずっと監視させるのが目的だから 前回の値を起点にしたら長時間の画面監視なんてできないよね 忘れてちょうだい
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:08:35 ID:KoQ4Gi/C0] >>692 試したらなったってのはどういうミスだったの?
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:08:46 ID:NIEdi7RU0] リロードしてなかった… >>691 なんでなのかな uwscのバージョンとかで挙動が違うんかな
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:11:33 ID:KoQ4Gi/C0] >>694 >>692 を読むと結局無理だったというふうに読めたんだが、あくまで>>688 はOKなの?
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:15:24 ID:NIEdi7RU0] すまん久々に触ってるもんだから自分でも把握できないわ 混乱させるだけだからひっこむよ ごめんよ(´・ω・`)
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 12:38:00 ID:NH/SArFRO] 走査しても人間が数値を読み違える事が在るからな。 MMVとSLEEP入れて、どこを検知したか分かり易くすると良いよ。
698 名前:658 mailto:sage [2009/01/07(水) 20:28:09 ID:SaObSndz0] みなさんどうもありがとうございます。 連想配列という言葉は初めて聞いたので調べてみたいと思います。
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/07(水) 20:43:38 ID:UInQEAud0] ReSize使えよ
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 11:31:39 ID:Ou47XQg10] UWSCを再生させるとPCで他の作業ができなくなり困ってます。 又、窓別に違うUWSCを再生することはできますか? この腐れに教えて下さい・・・
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 11:38:17 ID:9uVCk7/U0] >>700 よく意味が分かりません スクリプトを窓別に書けばいいだけじゃないんですか?
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 17:07:03 ID:Ou47XQg10] ALT+F2キー(再生)押した後PCの操作がすべて取られるので他の作業が できないのです・・・
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 17:12:14 ID:p1dhSGKj0] 色々言いたいことはあるがやっかいなことになりそうなので、一言だけ。 諦めてください
704 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 17:14:03 ID:oR+RJomT0] 操作を取られないように書けばいいだけ
705 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 17:16:21 ID:kg5KLxKp0] >>702 IEを操作するのならCOM使うとフォーカス奪われないよ Windowsフォームを操作するのなら諦めて
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 17:31:46 ID:gYr5hc3Z0] やったことはないのが 仮想PC(VMWare等)上でuwscを動かせば 自分は普通に作業できるのでは?
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 18:37:21 ID:U0BD8E1t0] >>700 仮想マシンを使うのが簡単。 または、一つ一つの操作を、マウス・キーボードからWindowsAPIだとかを使うように全部変更すれば可能。 だだし、それ調べるのにソートー時間かかる。 WindowsAPIの知識が無いならやめとくべき。
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 18:51:10 ID:oR+RJomT0] MOUSEORGすりゃいいだけだろw 何で仮想マシンになるんだwww
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:00:58 ID:gYr5hc3Z0] >>708 それってさー 例えば、マウスポインタの位置を操作するスクリプトを動かしている最中で 自分はエクセルとかで同じくマウス使っている時に マウスカーソルの位置がスクリプトによりどこかに飛ばされて作業の邪魔にならないの?
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:33:46 ID:kmMJQUqm0] そうならないように指定すればいい。ってのに そうならないの?って逆質問するのは馬鹿に見えるからやめたほうがいい
711 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:39:43 ID:gYr5hc3Z0] >>710 馬鹿か お前はw 「そうならないように」するための 具体的な >>706 や>>707 の意見が出たんだろ? そもそも >>700 の質問自体が「そうならないように」する方法を問う質問だろうがw お前、頭が不自由な子か?w
712 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:44:24 ID:gYr5hc3Z0] >>710 >>700の用件を満たしていない様に思える >>708 に対して 本当に用件を満たしているか問うことが何故馬鹿なんだ?w お前は頭大丈夫か?w
713 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:48:21 ID:LxZPgn7U0] 必死だなww
714 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 19:48:51 ID:oR+RJomT0] >>709 ならないよ
715 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/09(金) 21:11:26 ID:/4uiTXok0] 以下頭の悪さをひけらかすID:gYr5hc3Z0はスルーでどうぞ
716 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 21:25:56 ID:5RFVaUTS0] >>714 アプリに直接では送る相手が変わってしまって期待通りの動作しなかったりする。 それだったら直接API使った方がマシという。
717 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 23:38:46 ID:0l2ZHHwf0] 送る相手が変わる??? 送り先指定してんのにどうやったら変わるんだ?
718 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/10(土) 23:56:02 ID:wtsRJKdD0] 716は昨日のID:gYr5hc3Z0だろw こいつは妄想で適当なことしか書き込まないからスルーしとけ
719 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/12(月) 03:23:39 ID:A1VFSCeY0] >>717 相手が変わるって言うか アプリケーションに送るのとクライアントに送るのとで変わってくるだろ? ちがうのかな。 アプリケーションに直接送るっていうのは、受け側がWM_CHARを処理しないといけないんだろ? ゲームのようなやつはそんなの見てないし。
720 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/12(月) 08:10:08 ID:fTsgyzyK0] >>719 そんな妄想はいいから具体的にスクリプトあげてみてくれよ
721 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:43:09 ID:kqB6nrSU0] // 投稿関数はtest15.uwsのもの。スレ覧取得ループはv1をさらに改造。 // キーワードに合致するものを優先的に検索・投稿し、そのほかは余裕があれば2ゲットする。 // 2008/7/4 // スレ覧はSubject.txtをGetして使うように変更。 // それに伴い304エラーのために間隔を開ける必要がなくなり、鯖への負荷も減らせる。 // 2008/07/14 OpenJaneでnewsplusを開いていてsageチェックがはずされていれば投稿し、待ち状態に入る。 // 2008/11/02 FOXの板を回避 // 2008/11/25 3回目の規制で、「二日までなら見逃し」という依頼者からの発言を受けて、 // 日付変更をチェックして自動終了するように変更。 def_dll GetWindow(hWnd,long):long:user32.dll Public GW_ENABLEDPOPUP = 6 // ポップアップウィンドウ board = "ニュース速報+" //Jane本体のID取得 JBID = GetID("", "TMainWnd") Public ProblemName = "FOX★", "番犬★" ///////// // 定義 STOPFORM(true) メモ帳 = Exec("notepad.exe") 板アドレス="mamono.2ch.net/newsplus/ " TEXTBLOCK text24 正論が通らない狂った日本 ttp://ryotaroneko.ti-da.net/e2186226.html // 2ch規制 ENDTEXTBLOCK Dim TitleWord = "更迭" // text1の投稿対象とするスレッドタイトル text0 = text2 // そのほかのスレッドへの投稿内容 text = text0 // 投稿テキストにセット
722 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:44:13 ID:kqB6nrSU0] Dim oHttp // 通信オブジェクト conturl = "mamono.2ch.net/test/read.cgi/newsplus/ " // スレッド保存場所 url=板アドレス + "subject.txt" // 新着監視ページ PUBLIC errortitles[]="サーバーが見つかりません", _ "ERROR", _ "ERROR", _ "error", _ "" DIM LastThreadNo=0 // スレ番を保存し、2重の書き込み、過去スレへの書き込みを回避する。 ///////// // 処理 // 通信オブジェクト接続 oHttp = CreateOLEObj("MSXML2.XMLHTTP") // 投稿用ブラウザを起動 IE = CreateOLEObj("InternetExplorer.Application") IE.visible = True ID = HNDToID(IE.HWND) SendSTR( メモ帳, TitleWord + "を処理します。<#CR>", 1, false, false ) LastModified = "Thu, 01 Jun 1970 00:00:00 GMT" LastThreadNo = 0 sleeptime = 9 Gettime() StartDay = G_TIME_DD while 1 sleep(sleeptime) Gettime() SendSTR( メモ帳, G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2 + "." + G_TIME_ZZ2 , 1, false, false ) ifb StartDay <> G_TIME_DD then SendSTR( メモ帳, "<#BR>日付変更により終了", 1, false, false ) exit endif
723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:45:08 ID:kqB6nrSU0] // Webページ読み込み COM_ERR_IGN //COMエラー無視 SendSTR( メモ帳, " ", 1, false, false ) oHttp.Open("GET", url, True ) SendSTR( メモ帳, ".", 1, false, false ) oHttp.setRequestHeader("If-Modified-Since", LastModified); SendSTR( メモ帳, ".", 1, false, false ) oHttp.Send("") SendSTR( メモ帳, ".", 1, false, false ) ifb 200 = oHttp.status Then SendSTR( メモ帳, ";", 1, false, false ) sleeptime = 3 else SendSTR( メモ帳, ":", 1, false, false ) sleeptime = sleeptime + 10 SendSTR( メモ帳, " " + oHttp.status + "<#CR>", 1, false, false ) continue endif SendSTR( メモ帳, ".", 1, false, false ) LastModified = oHttp.getResponseHeader("Last-Modified") SendSTR( メモ帳, ".", 1, false, false ) ifb COM_ERR_FLG SendSTR( メモ帳, ".", 1, false, false ) SendSTR( メモ帳, "COM ERROR<#CR>", 1, false, false ) continue endif SendSTR( メモ帳, ".", 1, false, false ) COM_ERR_RET //エラー処理復帰 SendSTR( メモ帳, " stat:" + oHttp.status + "<#CR>" , 1, false, false ) str = DECODE(oHttp.responseBody, CODE_BYTEARRAY)
724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:48:23 ID:kqB6nrSU0] // IEが終了された場合は連動して終了 if !IDToHND(ID) Then break // スレッド一覧を処理 ThreadNo = 0 for TCnt = 1 to 50 str1 = token( "<#CR>", str, true, false ) Ifb 1 < Pos("(1)", str1) Then SendSTR( メモ帳, str1 + "<#CR>", 1, false, false ) // スレ番取得 str2 = CopyB( str1, 1, 10 ) ThreadNo = Val(str2, -1) if -1 = ThreadNo Then continue 2 ////////////////////////////////////// // 特定のスレッドにのみAAを投稿する。 Ifb Pos(TitleWord, str1) Then text = text1 break Else // デフォルトテキストをセット text = text0 // 処理しなかったスレ番の保存 //LatestNewList = ThreadNo Endif endif next /////////////////////////////////////////////// // 未処理の新規スレが残っている場合、投稿する。 // ループの外でやる理由は、一番古いスレから処理するため。 Ifb ThreadNo Then
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:49:05 ID:kqB6nrSU0] // 投稿処理 ret = Cont( IE, conturl, ThreadNo, text, メモ帳) // text = text0 Gettime() TS = G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2 + "." + G_TIME_ZZ2 ifb ret Then LastThreadNo = ThreadNo SendSTR( メモ帳, "●good " + TS + "<#CR>", 1, false, false ) sleeptime = 130 else SendSTR( メモ帳, "▲err " + TS + "<#CR>", 1, false, false ) sleeptime = 5 endif Else // Janeの書き込み準備ができていれば投稿 Ifb -1 <> JBID Then //JCID = GetID("", "TWriteForm") JCID = GetChldID(JBID) Ifb JCID Then Ifb 0 = ChkBtn(JCID, "sage") Then GetItem( JCID, ITM_ACCCLK, 1) Ifb Pos(board, ALL_ITEM_LIST[10]) Then Ifb SaveJane( JBID, JCID ) Then SendSTR( メモ帳, "〓OpenJaneで投稿" + "<#CR>", 1, false, false ) sleeptime = 130 else SendSTR( メモ帳, "〓投稿失敗" + "<#CR>", 1, false, false ) endif Endif Endif Endif Endif Endif wend
726 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 01:53:06 ID:kqB6nrSU0] >>721-725 関数化した部分があるけど長すぎたので省略 Function GetChldID( PID, CID = 0 ) // 投稿処理 //////////////////// // 戻り値: TRUE:正常、FALSE:エラー // 引数: // IE :IEオブジェクト // conturl :スレの場所 // TNo :スレ番 // text :投稿テキスト // メモ帳=0 :メモ帳ID // メモ帳IDはデバッグ用 Function Cont( Var IE, conturl, TNo, text, メモ帳=0) ////////////////////////////////////////////////////// // 投稿ページを開く // 引数:IEオブジェクト、アドレス、スレッド番号、投稿テキスト、試行回数、メモ帳ID // 成功すればtrue、不完全なページならfalseを返す。 Function OpenContPage( Var IE, conturl, TNo, text, LTimes=3, メモ帳=0) ////////////////////////////////////////////////////// // OpenJaneの投稿処理をする。 // 開いているスレと投稿先が違うと出る警告画面の処理のため関数化。 // _分で処理できなければFalseを返す // ID:親ウィンドウのID // IDD:Web ページの保存ダイアログID // OpenJaneはウィンドウを閉じても非表示で存在している。 // そして投稿窓もダイアログでなく独自ウィンドウクラス。 // なので、制御がややこしい。 // 投稿窓が非表示になるとき、別の子窓が取得できるので、・・・ // 1000レスついてたり書き込みできない場合延々と繰り返してしまう・・ Function SaveJane( ID, IDD, メモ帳=0 )
727 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/13(火) 02:41:28 ID:OFjJkjc60] 2getに加担して鯖の負荷を上げるのは嫌だねぇ。 こういうのだったら使い勝手とか言わないでセカンドマシンでぶん回しておけよ。 …何で2get…ブログ先の人も首を傾げてるんだがなぁ。
728 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 15:27:40 ID:xOT5hdBj0] uwscで単純な作業複数を、それぞれひとつずつのキーに割り当てることってできますか? 記録と再生でひとつの動作は行えるのですが、 複数のマクロや○+○じゃなくひとつのキーで実行は出来ないのかなと。
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 15:34:16 ID:ENz9kV0Y0] できるよ
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 16:11:48 ID:rt4k6YB30] >>728 出来るけど、ショートカットKey絡みならAHKの方が楽だと思う。
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 16:16:45 ID:dFd2Qpc10] 私はAHKでuwscファイルを呼び出すけど
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 16:21:26 ID:rt4k6YB30] >>731 お、同志w 自分も行数あるスクリプトはすぐに面倒になってUWSCで書いてるわ…
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 18:00:21 ID:5VRwikzI0] ある株ソフトにアラーム機能がないので UWSCで出来たらいいなと思いましたが どうしたらいいのか分かりません。 そのソフトはシグナルが出たときに 一番上の行に時間やら銘柄やら株価などが更新されていきます。 上昇のシグナルは緑背景に白文字、 下降のシグナルは赤背景に白文字となっており 上昇の緑の時にだけアラームを鳴らしたくて WHILE TRUE IFB PEEKCOLOR(887 , 241) = $2F6B55 THEN SOUND("C:\WINDOWS\Media\notify.wav") sleep(2) else sleep(1) ENDIF WEND 分からないなりにやってみたけど これじゃあ赤いシグナルから緑に変わったときにしか 役に立たない・・・ ボクにも書けそうな簡単なスクリプトあれば教えてください。
734 名前:733 mailto:sage [2009/01/14(水) 21:00:55 ID:5VRwikzI0] 追記 とにかくソフトになにか変化があったらアラームを 鳴らさせるように出来ないでしょうか?
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 22:46:19 ID:INWUQKt00] そこまで聞くならソフト名ぐらい晒せ
736 名前:733 mailto:sage [2009/01/14(水) 22:51:25 ID:5VRwikzI0] >>735 大人買検知機というソフトです。 www.vector.co.jp/soft/winnt/business/se359706.html
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 22:55:16 ID:hOB1qOFr0] いっこのループと、いっこの条件分岐が出来てるから… 後は、ほしい数だけ条件分岐を作れば出来るよ。
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 22:59:56 ID:rt4k6YB30] >>734 ttp://ochoja.web.fc2.com/uwsct/0610uwsct.html#MakingSupport UWSCコードの断片生成器 を使わせて貰って一番都合のよいもの(status,str,etc)選んでスクリプト書けば良い。
739 名前:733 mailto:sage [2009/01/14(水) 23:34:18 ID:5VRwikzI0] >>737 どういう条件分岐作ればいいのでしょう? peekcolorだけでやるのは無理ですよねえ? >>738 ***** getstr() sendstr() ******************** getstr(id,0,STR_STATIC)="大人買検知機" getstr(id,0,STR_ACC_STATIC)="時刻" getstr(id,1,STR_ACC_STATIC)="時刻" getstr(id,2,STR_ACC_STATIC)="銘柄" getstr(id,3,STR_ACC_STATIC)="約定値" getstr(id,4,STR_ACC_STATIC)="出来高" ちょっとやってみましたが getstrで更新される文字とれるのでしょうか? むずかしい〜
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 23:39:21 ID:3rpO1RzOP] >>733 えーと監視する項目の色が緑に変わったときにアラームを鳴らしたいんだよね? ということは、前回チェックした時の色と今回の色を比較しなければダメだよ。 色は何種類あるの? 赤と緑以外に通常の表示色はある? それと気になった点を言うと、何秒おきに監視するの? 1、2秒単位で監視する アルゴリズムになっているようだけど無駄にマシンパワーを食うんじゃない? 30秒おきとか1分おきとか5分おきとかだよね? アルゴリズムを書くけど スクリプトにする時は文法と変数規約に則して変えてね。 ※←は代入の意味ね。 前回の色 ← 通常色 今回の色 ← 通常色 WHILE TRUE 今回の色 ← 今回の色を取得して変数に代入 IFB 前回の色と今回の色が違う AND 今回の色は緑 アラームを鳴らす ENDIF 前回の色 ← 今回の色 次回チェックまでXX秒スリープ WEND
741 名前:733 mailto:sage [2009/01/15(木) 00:55:00 ID:tW7kX9XU0] >>740 緑背景から緑背景の場合もあるから 文字の入る場所も含めて取得する地点を複数にして 判断すればいいのかな 比較ののところがどう記述すればいいのかまったく分かりません。 今のところ1秒でやっても負荷たいしてかからないけど 複数地点にして比較すると相当負荷かかってくるカモですね。 その場合はもうちょっと間隔あけるようにします。
742 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/17(土) 11:18:45 ID:iMN83Hym0] // === 前回の色 = "" WHILE TRUE WHILE TRUE 今回の色 = (PEEKCOLOR(887 , 241) IF !(今回の色 = $白ーい色) THEN BREAK // 白以外ならループ抜ける // !で真偽反転だっけかな; 今回の色 = (PEEKCOLOR(111 , 222) IF !(今回の色 = $白ーい色) THEN BREAK // 白以外・・ 今回の色 = (PEEKCOLOR(333 , 444) IF !(今回の色 = $白ーい色) THEN BREAK // 白以外・・ WEND IFB !(今回の色 = 前回の色) THEN // 同じ色ではない場合の処理 IF 今回の色 = $2F6B55 THEN SOUND("C:\WINDOWS\Media\notify.wav") // グリーンなら IF 今回の色 = $レッドオ THEN SOUND("C:\WINDOWS\Media\レッドオ.wav") // レッドなら ENDIF 前回の色 = 今回の色 sleep(1) WEND // === 泥くせ;;;
743 名前:733 mailto:sage [2009/01/17(土) 20:56:43 ID:3elNHqC+0] 分からないなりに理解しようとしましたが 色を取得するってところが全然分からない。 今回の色とか前回の色oldcolor newcolor?
744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/17(土) 23:58:47 ID:70fVoJI80] >>743 ひょっとして変数が判ってない? いずれにしろ、UBTrek使ってpeekcolorを検索すれば沢山ヒットすると思う。
745 名前:733 mailto:sage [2009/01/18(日) 00:49:03 ID:V1b5lGQF0] >>744 単純なpeekcolorの記述は何個か出てきましたが 前回の色と今回の色を比較するような例が見つかりませんでした。
746 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 01:13:45 ID:WQ5z9x9T0] >>745 dim color=peekcolor(100,200) while true newcolor=peekcolor(100,200) ifb !color=newcolor msgbox("変わった") color=newcolor endif sleep(0.5) wend 無限ループなので適当にBreak。 Mouseorg(id,2)使ってwindow指定した方がよいかも。 RGBが少しでも変化すれば反応してしまうので、RGBに分解した方がよいかも。
747 名前:733 mailto:sage [2009/01/18(日) 01:13:47 ID:V1b5lGQF0] 緑、赤とか関係なく ある一点の色変化があったときに アラームを鳴らす具体的なスクリプト教えていただけませんか なんとかそこから発展させてやっていきたいと思いますので。
748 名前:733 mailto:sage [2009/01/18(日) 01:18:03 ID:V1b5lGQF0] >>746 ありがとうございます でもまったく反応しないですね。 このままじゃダメなんでしょうか?
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 01:21:04 ID:aouJYoBm0] >>748 プログラムの基礎から学び直したほうがいいよ 君にはまだ早い
750 名前:733 mailto:sage [2009/01/18(日) 01:29:38 ID:V1b5lGQF0] あ、反応しましたが なかなか反応しない感じです。
751 名前:名無しさん@お腹いっぱい。 [2009/01/18(日) 03:18:31 ID:lcf3XQYB0] 皆さんのUWSCを使用する用途は大体何ですか? 自分のPC環境の最適化以外にUWSCというのは マスターしたとしても他に例えば何に役立つのでしょうか? 例:仕事面 WEB製作面 etc マジ質問です
752 名前:WTTEkBtZS mailto:xthaterends@yahoo.com [2009/01/18(日) 03:22:58 ID:24LUwixi0] rybeiddery.awardspace.com/dominos-sub.html dominos sub maridoctoge.awardspace.com/ruff-ryders-columbus.html ruff ryders columbus caross.awardspace.com/darren-nadel.html darren nadel maridoctoge.awardspace.com/ruff-ryders-soccer.html ruff ryders soccer rybeiddery.awardspace.com/dominos-pizza-nutrition.html dominos pizza nutrition therybaive.awardspace.com/lenora-jubilee.html lenora jubilee caross.awardspace.com/nadel-jewish.html nadel jewish maridoctoge.awardspace.com/ruff-ryders-layout.html ruff ryders layout therybaive.awardspace.com/jubilee-history.html jubilee history deadingrain.awardspace.com/facbook.html facbook therybaive.awardspace.com/red-cedar-jubilee.html red cedar jubilee caross.awardspace.com/natasha-nadel.html natasha nadel rybeiddery.awardspace.com/pizza-hut-ottawa.html pizza hut ottawa caross.awardspace.com/nadel-sarasota.html nadel sarasota maridoctoge.awardspace.com/bay-ruff-ryders.html bay ruff ryders maridoctoge.awardspace.com/left-ruff-ryders.html left ruff ryders caross.awardspace.com/nadel-artist.html nadel artist maridoctoge.awardspace.com/ruff-ryders-do.html ruff ryders do caross.awardspace.com/bernard-nadel.html bernard nadel caross.awardspace.com/fred-nadel.html fred nadel
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 05:43:43 ID:85r780v+0] プログラムの何の知識も無いものがuwsc用のスクリプトを 作れるぐらいにったと仮定した場合に、既存のプログラミング言語では何が一番 とっつき易いでしょうか?
754 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 06:09:29 ID:7B/GQZFQ0] >>751 仕事面:決まりきった作業、繰り返し作業の効率化 Web製作面:ランダムな操作で想定外行動のチェック漏れ発見(意味あるかは知らない セキュリティ面:泥棒が侵入してきたとき、クイックメニューから一発でメールで連絡できる。 ある程度相手が分かってる時便利。 DOSコマンドでメール送信するのを使ってたけど、コマンドラインにパスワード入れなきゃいけなかったので削除されてしまった。 うpろだのJpeg画像とか、一回ペイントで開いて上書き保存すると、サイズが半分近くになる場合が多い。 だからダウンロードした画像のリストをエクスプローラーで出して、ドラッグとCtrl+Sで更新を繰り返すのとか作った。 あとは、性能は低いけどパスワードクラックとか2Getスクリプトとか たくさんのID作りたいときに自動登録マクロとか。
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 06:10:50 ID:7B/GQZFQ0] STOPFORM(true) ID = Exec("C:\WINDOWS\system32\mspaint.exe") while ID = (-1) // 負荷が高いとID拾えないので sleep(0.1) ID = GetID("無題 - ペイント") wend Repeat; sleep(0.1); Until GetKeyState(VK_CONTROL) StartX = G_MOUSE_X StartY = G_MOUSE_Y sleep(1) While !GetKeyState(VK_CONTROL) CLKITEM( ID, "ファイル\新規", CLK_MENU ) sleep( 0.1 ) // Ctrlキーで中断・再開 ifb GetKeyState(VK_CONTROL) then sleep(5) Repeat; sleep(0.2); Until GetKeyState(VK_CONTROL) sleep(1) endif MMV( StartX, StartY ) BTN( LEFT, DOWN, StartX, StartY ) EndX = Status(ID, ST_X) + 30 EndY = Status(ID, ST_Y) + 10 MMV( EndX, EndY ) BTN( LEFT, UP, EndX, EndY ) If DlgWait(ID, EndX , EndY) Then Continue If Status(ID, ST_TITLE) = "無題 - ペイント" Then break CLKITEM( ID, "ファイル\上書き保存", CLK_MENU ) DlgWait(ID, EndX , EndY) wend CtrlWin(ID, Close) MsgBox("処理が終了しました。")
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 06:12:23 ID:7B/GQZFQ0] // マウス形状が通常の状態が1秒ほどあればタイムアウト。 // その間にダイアログが表示されるかどうかで戻り値が変わる。 // ダイアログが出た場合、OKをクリックする。 // True: 窓出現 False: 窓出ず Function DlgWait(ID, EndX , EndY) Result = False cnt = 0 while cnt < 6 sleep(0.1) MMV( EndX , EndY ) if MUSCUR() = CUR_ARROW Then cnt = cnt + 1 CID = GetChldID(ID) Ifb CID Then sleep(1) ClkItem(CID, "OK") Result = True break endif wend Fend // 子ウィンドウを探す // 戻り値:子ウィンドウのID。見つからなければ0。 // PID:親ウィンドウID // CID:子ウィンドウIDの候補 // GW_ENABLEDPOPUPはWindows2000以降のみでサポート // // GetWindowによる子ウィンドウ取得を、GetChldIDに使ってみたが、 // Zオーダーで手前のウィンドウを全て取得するので選別する必要がある。 // メニュー Class:"#32768" // ダイアログ Class:"#32770" // ツールチップ Class:"tooltips_class32"
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 06:17:23 ID:7B/GQZFQ0] Function GetChldID( PID, CID = 0 ) Ifb CID Then Ifb PID = STATUS( CID, ST_PARENT ) Then result = CID exit endif endif h = GetWindow( IDToHnd(PID), GW_ENABLEDPOPUP ) Ifb h Then S = Status(HndToID(h), ST_CLASS) Select S case "#32768" Result = 0 case "tooltips_class32" Result = 0 default Result = HndToID(h) Selend Else Result = 0 Endif Fend // エクスプローラーとペイントを使った、Jpeg画像ファイルダイエットスクリプト 2008/10/21 // 使用方法:対象ファイルをエクスプローラーで表示し、ペイントが起動したら、エクスプローラーの // ファイル一覧画面の一番下のファイルにマウスカーソルを合わせ、Ctrlキーをクリックする。 // Ctrlキーで中断。 ソースは >>755-757 ※エクスプローラーで、ファイルを詳細表示し、表示中ファイルの一番下のやつをクリックすると勝手に一つスクロールする。 これを使うと簡単に順番に処理することができる。スクロールしない場合は窓の高さを変更する。
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 06:25:01 ID:7B/GQZFQ0] >>753 VBSかな。これもスクリプト言語だけど・・・ 次はVB.netかな。 >>750 sleepが0.5秒だから反応は遅いね。
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 09:12:15 ID:BRvZ2wPi0] >>733 とりあえず、最低限 ttp://big.tm.land.to/handbook/uwsc.htm の内容くらいは自分で理解してから質問してくれぃ。
760 名前:733 mailto:sage [2009/01/18(日) 11:55:00 ID:V1b5lGQF0] >>759 一応読んでみたのですが 取得した値と新しく取った値を比較 さらに新しく取った値と比較みたいなことは どこにも書いてないのではないでしょうか? >>758 これって最初に取得した色と比較してMSGBOXが出るようになってますよね? ある地点の色を取得して現在の色と比較 さらに取得して新しく取得した色と比較と これを繰り返していきたいんです。
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 12:41:56 ID:O40sJXqz0] >>760 あなたは日本語言語でちゃんと処理を記述してるじゃないか。 あなたがセンテンスを分割して2行で書いたとおり uwscで2回比較処理をすればいいじゃないか。 これ以上はちょっと俺は関与することに面白みを見出せないわ 別にアルゴリズム的に難題というワケでもなし。 単なる知識不足のサポートは自助努力で補うといいよ。 …書いたものに駄目だしをされるだけなのは疲れるからね。 自分で書きなさい。想定がつけば駄目だしをしてあげるから。
762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 12:45:57 ID:Xm1Xcjw/0] 自分でやろうって気が少しも感じられないもんな
763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 13:15:24 ID:I+l/Qm3w0] >>760 自分のやりたいことがそっくりそのまま1から10まで書いてあるわけ無いだろ。 基本的なことは書いてあるんだからそれを理解したなら自分で作れ
764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 15:31:11 ID:xwkw1ib70] >>754 真面目にレスありがとうございます UWSCで画像を対象にした条件分岐や色々作成した事はあるのですが (今ではすっかり文法忘れてます) ルーターにアクセスしてある設定を切り替える、等も UWSCで可能でしょうか? PHP等のスクリプトですると難しそうなので・・・
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/18(日) 18:34:11 ID:o9RUmICX0] 可能です
766 名前:733 mailto:sage [2009/01/19(月) 15:25:59 ID:V9clvX4k0] みなさんのヒントを元になんとか完成しました。 またつまづいたらよろしくお願いします。
767 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/19(月) 20:54:27 ID:qcrdC3FS0] ハハ お断りします (゚ω゚) _(_つ/ ̄ ̄ ̄/_ \/___/
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 00:58:10 ID:CMylmmuM0] [Ver4.5]
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 01:37:12 ID:0N/gC0gi0] 高レベル記録… なんというお手軽システム。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 10:17:34 ID:Rt1OsezX0] うう、まだcall文で変数が使えんのか・・・
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 11:22:31 ID:mivuHGw40] IE_Subってもう入手できないの?
772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 16:02:13 ID:6xnO4udb0] 一昨日からスクリプト組始めたんですが、どうにも配列変数の使い方(定義を含めて)がわからないので 詳しい方ご教示願います。 例えば変数ABC(x、y)に10*10=100個の変数にX軸Y軸共に1を格納していく場合、 BASICで書くと(うろ覚えですけど。) FOR Y=0 to 9 FOR X=0 to 9 ABC(X,Y)=1 X=X+1 NEXT X Y=Y+1 NEXT Y と、したい所をuwscでは最初にどう定義して配列変数を使っていけばいいですか? ヘルプ見たんですけど、イマイチイメージがつかめません お願いします。
773 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 16:09:22 ID:6xnO4udb0] あ、FOR〜NEXTってX=X+1とかいらないんだっけ?・・・orz
774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 17:49:05 ID:LpFWL/UM0] どうって、 DIM ABC[10][10]って定義して > ABC(X,Y)=1 ABC[X][Y]=1 っていれてくだけでしょ…
775 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/20(火) 18:03:13 ID:6xnO4udb0] ああ、(x,y)じゃなくて[x,y]じゃないといけないのね・・・helpそういう意味かorz とんだ勘違いしてました。どうもです
776 名前:名無しさん@お腹いっぱい。 [2009/01/23(金) 08:39:26 ID:n0Gk8YsY0] 複数のスクリプトを連続で起動させるにはどうすればよいですか? 1のスクリプトがおわったら自動的に2をのスクリプト起動、2→3、3→4...という感じです。
777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/23(金) 10:36:35 ID:E4bxtYk+0] >>776 各スクリプトの最後でcall。 もしくは exec("フルパス\uwsc.exe フルパス\hoge.uws") こちらは多重起動禁止だとダメかもしれん。
778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/23(金) 12:19:14 ID:v1eHViqS0] >>776 1の頭で2,3,4をcallして 1でprocedureやFunctionを順に呼び出してもいいよ
779 名前:名無しさん@お腹いっぱい。 [2009/01/23(金) 12:30:51 ID:n0Gk8YsY0] >>777 >>778 ありがとうございました。とても参考になりました。
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/23(金) 14:55:53 ID:uyPNdhnC0] >>705 さんの >IEを操作するのならCOM使うとフォーカス奪われないよ これについて理解を深めたいのですがどのあたりを具具れ場良いのでしょうか?
781 名前:705 mailto:sage [2009/01/23(金) 20:41:40 ID:CkpYM4hA0] >>780 これに関してはググってないからわかんない ヘルプのじゃ難しい? スクリプト > スクリプト関数 > COMオブジェクト, IE操作関連 あとはページソースと睨めっこ
782 名前:780 mailto:sage [2009/01/23(金) 22:39:18 ID:aJMC8HA30] >>781 ありがとうございます。よく読んでみます。
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できるっぽいね。 テーブル作るのめんどくさそうだけど。
884 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/11(水) 01:07:21 ID:kWARHqJn0] >>883 レスサンクス。 時間掛けずにヨカッタw
885 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 14:30:03 ID:3ZWIkmUk0] com操作から指定の同じ画像が2枚以上あるかどうかのチェックを するスクリプトを作っています。 <img alt="画像" src="/img/member/status_01.gif?1234414294" /> これがそのソースなのですが、altの画像の個数でもおkです。とにかく2個以上 あったらメッセージボックスで知らせてくれるみたいなのができたらと思っています。
886 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 15:36:56 ID:yfzZRrrS0] そうですか
887 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 16:29:22 ID:mUOb2ZH60] >>885 一致するやつの個数を数えるだけですよね
888 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 16:31:07 ID:3ZWIkmUk0] >>887 画像があるかどうかというのはできると思うのですが、同じ画像が2枚あるかどうか となるとちょっと私のスキルでは難しいので訊いて見ました。 数を数えなおかつメッセージボックスなどで同じ画像が2つ以上あると知らせてくれる というものです。
889 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 16:39:01 ID:mUOb2ZH60] >>888 cnt = 0 while 全部処理 ifb 画像一致 then cnt = cnt + 1 eneif wend ifb 2 <= cnt then MsgBox() endif
890 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 17:35:13 ID:3ZWIkmUk0] メモリが・・・というエラーがでる。 今、他の手法でやってますが、IE.document.body.innerHTMLで 画像で使われてる文字の数というので判断しようとしています。 一つだけの場合、ちゃんとうまくいきました。しかし上記のやつをすこし 変えてやってみましたが駄目でした。
891 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 17:43:52 ID:Ro94SGUQ0] 情報を小出しにするのはやめてください。 チャットじゃないので整理してまとめてから書き込んでください
892 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 18:00:45 ID:3ZWIkmUk0] str = "UWSC" ifb pos(str, IE.document.body.innerHTML) then MsgBox("あるよ") endif 画像でエラーが出るので上記のやつで挑戦してます。 HTMLにUWSCという語句が2つ以上あればメッセージ ボックスにあるよと表示されるというものです。 ひとつでは成功しています。
893 名前:名無しさん@お腹いっぱい。 [2009/02/13(金) 18:30:14 ID:mUOb2ZH60] >>892 だから>>889 のとおりにやれよと。 str = "UWSC" cnt = 0 while 全部処理 ifb pos(str, IE.document.body.innerHTML) then cnt = cnt + 1 eneif wend ifb 2 <= cnt then MsgBox("あるよ") else MsgBox("ないよ") endif
894 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 18:34:04 ID:3ZWIkmUk0] 全部処理についてkwskm(_ _)m
895 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 18:40:58 ID:mUOb2ZH60] >>893 はミス str = "UWSC" ifb pos(str, IE.document.body.innerHTML, 2) then MsgBox("あるよ") eneif posは個数指定があるからループしなくてよかった。 ループする必要があるのは、前から順に1こずつ検索する場合。 >>894 全部とは、IE.document.body.innerHTMLの1文字目から最後まで処理する条件ってこと。 つまり、ループに入る前に src = IE.document.body.innerHTML として文字列を取得し、見つかるたびに読み進めていく。 tokn() を使って1行ずつ処理する場合とか IEGetSrc( IE, タグ名, [番号] ) で、番号を順に指定して取得する場合とか。 BodyのHTML全部取得してPosで個数まで数えるならループはいらない。
896 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 18:44:29 ID:mUOb2ZH60] 見落とすかもしれないからもう一度書くけど、 pos()の3番目に2って指定すれば、2個目の位置を調べてくれる。 つまり、2個目があるかないかはPos()一回でわかる。 だからこれだけで完成 str = "UWSC" ifb pos(str, IE.document.body.innerHTML, 2) then MsgBox("あるよ") eneif
897 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 18:45:01 ID:3ZWIkmUk0] 詳しい説明どうも。 しかし、みんなどこで勉強してるんですか? とりあえず、UWSCの掲示板とマクロテクニックという本、 検索などでやってますが、なかなか目的の回答にたどり つけないことも多く、時間ばかりがかかってしまいます。 このスクリプトだってもう何時間も費やしていますからね・・・
898 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 19:03:33 ID:mUOb2ZH60] 大事なのは情報の探し方。 探すためのキーワードはマニュアルを順番に読んで探し出す。 UWSCは覚えることは少ないほうだし、ヘルプにまとまっているからヘルプを見る。 基本の使い方はサンプルコードを探す。 で、一つ一つの細かい使い方は、それを確認するためのサンプルコードを自分で書く。 公開されたツールを使うのも手。 あとはテクニックを覚えて応用していく。 if Pos() then で、存在チェックするというのもテクニックのひとつ。 Pos() は文字列の位置を返すだけだけど、取りうる値が1以上になるのでそういう使い方ができる。 if 文が、0か0以外という判断基準だからできることだけど、 それを知ってればほかの関数でもそういう使い方ができるかどうか判断できるわけ。
899 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 19:14:00 ID:6zXjaVj00] 俺個人の意見だと、そういう書き方は好きじゃないし人にも勧めないな…
900 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 03:00:48 ID:lbAzgdO20] >>897 とりあえずnotepad以外のエディタを用意して文字列ハイライト&F1key(大体のエディタがそうだと思う) でHelpファイルの項目にジャンプできるようにする。 その後、Helpファイルのサンプル、ネットに挙がっている短目のサンプルをコピペ。 エディタのショートカットKeyからサンプルを実行して結果を見たうえで、関数等を理解。 自分はこんな感じかな?
901 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 09:57:37 ID:l4ICTSX40] >>899 でも、 flag = true if flag = true then みたいに書くと期待通りの動作にならないですお。 いや、DLLとかの外部プログラムで言うtrueが、自分の処理系でのtrueと一致するとは限らないというべきか。
902 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 14:13:39 ID:uUjk6ugC0] >>901 IF flag <> 0 THEN MSGBOX("真") ELSE MSGBOX("偽")
903 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 15:31:54 ID:kc2bS8a/0] >>900 私もかれこれ1年ぐらいやってますが、実際に自分でサンプルとかを やってみるのがいいみたいですね。本の内容とかを理解するより 結果そっちのほうが早かった。 あと、情報量が格段に違うので本はお勧めできない。価格が高いというのもあるけど。 本の内容なんかヘルプの1/100も載ってないしw掲示板での回答のほうが例としても すぐれてるよね。本は失敗したわぁ〜w
904 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 15:46:35 ID:w6PpT+IB0] >>901 俺はUWSCなんて一度もさわったことはないが if flag = trueだと代入してないか? 他の割とよくある言語だと、 flag == trueとか flag eq trueとか そもそも条件比較せずに if flag thenって書き方だと思うが =が比較にも使えるんだったらすまぬ
905 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 20:38:54 ID:+5xZKKxJ0] 複数開いてるIEでウィンドウ情報に「ソフトウェア」とか特定の文字が含まれている ウインドウを閉じたいのですが、選択して閉じることはできますか?
906 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 20:42:00 ID:mPJsDYRZ0] >>904 普通に使えるお。 条件式では代入は行われないっス。 唯一Evalの代入で ':=' があるくらいで '==' とかはないっス。 おばかには有難いすw
907 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 21:00:49 ID:qfzVhbRR0] >>905 できます
908 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 21:08:42 ID:6gNN+jj+0] trueが1、falseが0という前提で if XXX then YYY を日本語で説明するとXXXが真の場合YYYだけど 内部仕様で0 or not 0 falseじゃなければ真だからって if POS() thenって書くのはどうかなと言っただけよ ちゃんと?if POS() > 0 thenと書いた方が分かりやすいじゃんってこと if flag = trueとかはまた別な話、if POS() = true then と書けと言ってる訳じゃないし 2以上の値が返ってきたら、true(1)ではないんだから。
909 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 22:24:08 ID:oEG6WUs+P] なるほど ヘルプを文字通りに解釈すればIF文は真偽をチェックするのであって それと0チェックは等価ではないという事か (実際は0と0以外のチェックだろうけど) C言語にどっぷり漬かった脳なので>>898 が言っているような 書き方のほうが理解しやすく感じてしまった
910 名前:905 mailto:sage [2009/02/14(土) 22:56:30 ID:+5xZKKxJ0] 事故解決しました。 しかし、次の問題が。ソースから <!-- △△△ --> 複数のアドレス <!-- ◇◇◇ --> このようなソースがあった場合、三角から四角までの間にある複数アドレスを ゲットして一個ずつ開いていくというのはできますか? ちなみに間になければ似たようなアドレスは開けています。上でも書きましたが 改めてソースを書いときます。 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 上記のソースでページ内にあるアドレスを順に開いていくことはできます。 何かわかりましたらよろしくお願いします。m(_ _)m
911 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 00:48:48 ID:48UC/FQI0] >>908 if flag = true とかいう書き方をしてると if POS() = true というバグを見落とすことになる。 flagにしたって、状態がOn/Offだけとは限らない。 ボタンは白黒が基本だけどグレーだってある。 拡張してグレーを入れるとき、 何も考えずに取得した状態を放り込んでるとバグが発生することになるが、 自分がいじってない場所に影響が出るとは考えにくいし。 なにより、取りうる値をいちいち調べないといけない if flag = true なんか使ってると手間が増えるだけ。
912 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 01:18:42 ID:48UC/FQI0] >>910 <!-- △△△ -->と<!-- ◇◇◇ -->を除外ということならシンプルだけど <!-- △△△ -->と<!-- ◇◇◇ -->の間を処理するというのは、その処理基準が不適切と思われる。 ほかに手がなければしょうがないけど。 @ FOR A = 0 TO (KAISU - 1); start = A + 1; next // <!-- △△△ -->が出るまで空回り A FOR A = start TO (KAISU - 1); 処理; next // <!-- ◇◇◇ -->が出るまで処理 @で空回りした回数をstart にセットして、Aでstartから再開すればいい。 <!-- △△△ -->が一度も出てこなかった場合、startにKAISUが入るので、多分Aは素通りする。 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) start = A + 1 IF 0 < POS("<!-- △△△ -->", IE.document.links[A].href) then break NEXT FOR A = start TO (KAISU - 1) IF 0 < POS("<!-- ◇◇◇ -->", IE.document.links[A].href) then break IFB 0 < POS("dailynews.yahoo.co.jp ", IE.document.links[A].href) then // まだインデントつけてないしThen抜けてるよ。 IE2 = CREATEOLEOBJ("InternetExplorer.Application") IE2.visible = True IE2.navigate(IE.document.links[A].href) ENDIF NEXT IE.QUIT
913 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 01:38:43 ID:h4gEwsYs0] ちなみにその考えじゃ永遠に無理。
914 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 01:53:42 ID:MQRSTk0U0] こんなことができたらいけるかもと考えました。 1、三角から四角までの文字列をゲット。 2、1の中のアドレスだけゲット。 3、上記のやつでアドレスを一個ずつ巡回。 1は、HTMLで見ると表示されてるやつです。コメントというのかな?
915 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 04:44:36 ID:ZJEnRiKf0] >>911 > if flag = true とかいう書き方をしてると > if POS() = true というバグを見落とすことになる。 バグとか言う以前に、そんな書き方はしない。 思いつく時点でおかしい なんで、IFの条件文でTrue/FalseのBoolean型をチェックするのに その条件文の中でわざわざTrue/FalseのBoolean型と比較する必要があるのか 無意味な重複になってる
916 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 06:36:23 ID:LdrnYZV60] flag = trueって書き方自体はおかしな事じゃないでしょ ifの条件式の一部にあってもおかしくはない ただ、単体で「if flag = true then」と書くと蛇足ということになる UWSC的にあってるかどうかはわからないけど 「if (flagA = true) AND (flagB = true) then」なんて場合があるわけだし 「if POS() = true then」をPOS() > 0 のつもりで書いているなら 変数にどんな値が入っているか、型とかを考えてない。って話になるし POS() = 1 のつもりで書いているなら、同じ値だからといって 関係ない定数を使い回すな。という話になる 「if POS() then」がC畑の人の流儀というのは理解してるけど それを理解してない初心者が、何となく親切心かお節介で付け加えた結果が 「if POS() = true then」ということになってるじゃなかろうか
917 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 11:31:41 ID:48UC/FQI0] >>916 >flag = trueって書き方自体はおかしな事じゃないでしょ 処理系にもよりますが、TRUEの値は保障されないので、比較で使うのはおかしい。 実際1という値を持っているしUWSCでは保障してるかもしれないけど、 一般的にそうなのでUWSCでもそういう癖はつけないほうがいいんじゃないかなと。 if (flagA = true) AND (flagB = true) then × // 成立するのはflagが1か0のときだけ if (flagA <> false) AND (flagB <> false) then ○ // 全ての値で成立
918 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 20:05:10 ID:LdrnYZV60] だから、flag = trueに違和感を感じる人は boolean型がないC畑の人だけで boolean型がある言語系の人は何の違和感もないんだって flagって変数がboolean型なんだな。って思うだけだから
919 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 20:30:21 ID:LdrnYZV60] > KAISU = IE.document.links.length > flag = false > FOR A = 0 TO (KAISU - 1) > IF POS("<!-- △△△ -->", IE.document.links[A].href) THEN flag = ture > IF POS("<!-- ◇◇◇ -->", IE.document.links[A].href) THEN flag = false > > IFB flag THEN > IFB POS("dailynews.yahoo.co.jp ", IE.document.links[A].href) > IE2 = CREATEOLEOBJ("InternetExplorer.Application") > IE2.visible = True > IE2.navigate(IE.document.links[A].href) > ENDIF > ENDIF > NEXT 例えば>>910 のサンプルで言ったらこういうことでしょ flagにはtrueかfalseしか代入してないんだから trueの値が保障されてないとか、trueかfalse、0か1以外が入ってることなんて考えなくていい この場合は「IFB flag THEN」を「IFB flag = true THEN」と書いたところで お節介と言うことにはならない それをPOS()という戻り値がINTのものに対してPOS() = trueとか書いてしまうと たまたま1の時だけtrueになってしまうということになる
920 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 20:56:45 ID:48UC/FQI0] >>918-919 まあPos()のように0と0以外で判断するのはC言語系の考えとしても、 trueの定義がfalse以外のものとされてるのは、他の多くの言語で共通してるようだけど。 確かにtrueしか代入しないのなら確実に動作しそうだけど なんかの拍子にごみが入ったとき、trueで比較するとどんな動作をするか分からない。 まあごみが入った時点ではじかれるべきだからむしろtrueと比較すべきかもしれん。 つまりelseなんか使うなって事だ・・・
921 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 21:21:15 ID:o+fSWy2v0] 型通りに書けばいいだけじゃ?、 flagはboolean型とみなしてコード書いてんだからtrueでいいし、 Pos()はint型だからtrueでの判定はナンセンスってだけ。
922 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 06:46:17 ID:EmOr31T+0] For y = 0 to 250 〜 Call 〜 〜 Next POFF(P_SUSPEND2) と言う感じで外部スクリプトを呼び出して繰り返し作業をさせているのですが なぜか毎回209回で終わってスタンバイになってます なにか制限でもあるのでしょうか?
923 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 09:09:28 ID:Y25mNBPu0] >>922 変数がかぶっているとか? callをコメントアウトしたらどう?
924 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 23:09:04 ID:QUmq6Zuh0] >>922 //主 public i for i= 1 to 250 call call2.uws next //call2.uws print i でテストしてみたけど、制限などないようだよ…(アホだな自分もw)
925 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 23:19:50 ID:+qFEC0Zh0] 自作関数で戻り値を配列で返すにはどうすればよいのでしょうか? 普通に配列を指定すると怒られます。
926 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 01:13:40 ID:shI/FnE+0] >>925 イマイチ質問の意味がわからんけど関数内でResizeしてないんとちゃう? ttp://www.geocities.jp/stardust774/
927 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 03:52:10 ID:X+NUGRkd0] >>925 関数の戻り値に配列って指定できたっけ? 俺は配列変数を参照渡しして、配列の長さを返却するようにしてる DIM ary[0] DIM i FOR i=0 TO hoge(ary, 3)-1 PRINT "ary["+i+"]: "+ary[i] NEXT FUNCTION hoge(VAR a[], n) DIM i FOR i=0 TO RESIZE(a, n-1) a[i] = i NEXT RESULT = LENGTH(a) FEND
928 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 06:36:49 ID:hsq0Fe2s0] >>925 一言で言えば、無理
929 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 12:52:47 ID:zwqJ4YAK0] >>925 俺もそれやろうとしたけどできなかったんで、配列のグローバル変数使ってやりとりしてるな かっこ悪いけど
930 名前:925 mailto:sage [2009/02/17(火) 15:04:26 ID:zlTNHss50] うーん、やっぱりできないっぽいですね 関数自体をループさせるか、グローバル変数使うしかないのかな… ありがとうございました
931 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 15:42:00 ID:gznT5Jkz0] >>930 いや、>>927 は無視ですか。 関数の引数を定義するときに、var 変数名 と定義してやれば、値の受け渡しができます 同じ変数名ならグローバル変数みたいに使える。 2次元配列とかもできる。 ちょっと配列数と添え字がややこしいけど。 dim a[0] hoge( a ) FUNCTION hoge( var a[] ) dim i resize(a,10) for i = 0 to 9 a[i] = "x" next FEND >>927 はfor文 でResizeしてるっぽいけどありなのか。
932 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 16:19:37 ID:gQhLPPZu0] FOR文自体は、中がループしてるだけで ループ毎にFOR文の行を処理してる訳じゃないからね。 2行に分けて書くか、1行にまとめて書くかだけの違いで。
933 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 16:52:39 ID:gznT5Jkz0] いや、 for i=0 to Max っていうのは、i とMaxを比較するんじゃないかなと。 そしたらMaxは毎回処理されるんじゃないかなと思ったんだけど UWSCの場合はForが回数固定でカウンタとか保護されてるから大丈夫なんだろう。 いや、サイズが一緒だから変化がないだけかも。 C言語でいうと for( i=0; i<Max; i++ ) iやMaxはループ中で変更できちゃうんだよね。 そんで初期化以外は毎回評価、実行されるんだよね。 初期化が入ったとき1回だけなのは当然だけど、終了条件の実行回数は分からない。 だからC言語でループ回数に関数を使うときは for( i=sizeof(array); i>=0; i-- ) て言う風に初期化子として使う。 いや、そんなことしてなかったな。俺は。 どうせ最適化してくれるだろうと思って。
934 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 17:00:23 ID:gznT5Jkz0] // forのテスト。終了条件を関数で指定するとどうなるか。 for i = 0 to test(i) print "roop" + i sleep(1) next Function test(i) print "Func" + i result = 2 FEND 実行結果。終了条件の関数は、カウンタの初期化の後1回だけ呼ばれる。 Func0 roop0 roop1 roop2
935 名前:925 mailto:sage [2009/02/18(水) 13:34:14 ID:YzuvFpA90] 恥ずかしながら>>927 の意味がよくわかってませんでした(;´Д`) >>931 わかりやすい説明ありがとうございます これは便利ですね!
936 名前:922 mailto:sage [2009/02/19(木) 18:03:25 ID:LQepcHmb0] ログが最大209行で終わっていたというあほな理由でした 吊ってきます
937 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 18:22:19 ID:ac9y3F6q0] (´・ω・`)
938 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 20:54:42 ID:UxnJe9qS0] 複数行のテキストを入力できるようなインターフェースって作れる? INPUTだと1行だけだよね
939 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 21:04:22 ID:vC1/avge0] フォームでできるよ
940 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 21:19:52 ID:UxnJe9qS0] >>939 ありがとう
941 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/20(金) 02:33:51 ID:Zfo0EG+70] IEでの動作の途中に、別ウインドウのコマンドプロンプトに文字列を記入するマクロをつくっているのですが、 SENDSTR関数か、SCKEY関数か、どちらの方が安定するものでしょうか? SENDSTR関数の方がいいような気もするし、 SCKEY関数の方が コマンドプロンプトのウインドウをアクティブにしなくていい分、 有利な気もするし、、、 ちなみに、CPU負荷が高い状態での動作になります。 どちらがいいでしょうか?
942 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/20(金) 06:24:43 ID:cWHe1c0/0] IEの特定のアドレスが含まれている画像のクリックするスクリプトを組んでいます。 前に、指定の範囲のアドレスを・・・と書いたものです。 他に方法はないかとソースなどをみてみたのですが、画像のアドレスなら前回の 場合と違い数が少なくできそうだなと思いました。 <a href="○○" target="_blank" onClick="return top_ekiden_click_chance('top4', '○○')"><img src="●●"></a></p> 上のソースの●●の部分は、複数あるのですが、POSでゲットして巡回できたらと思っています。 ちなみにリンクの場合上記にも書きましたが下のようになります。 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
943 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/20(金) 11:35:06 ID:mn16sQrP0] >>941 SendSTR()は使えないよ。 ショートカットでのコピペもできない。 右クリックメニューを出して貼り付けは可能。
944 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/21(土) 19:32:30 ID:P+noKJtd0] uwscのエラーウィンドウを消すマクロってありませんか
945 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/21(土) 19:49:38 ID:OlRYAKfW0] >>944 まずはエラーメッセージを抑制するようにしたらいいよ。 OLEなら関連関数の例に書いてあるし、それ以外はUWSC本体の設定にあるか、INIファイル編集するとか。
946 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/21(土) 20:01:51 ID:P+noKJtd0] >>945 具体的にどうすればいいか教えていただけますか
947 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/21(土) 20:10:20 ID:P+noKJtd0] 例外エラー対策ならマクロの 最初に TRY を入れて マクロの末尾に EXCEPT endtry あたりいれるのがもっとも簡単なんでしょうか
948 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 10:05:02 ID:Rpahjq6x0] >>947 まぁ、UWSCで用意されてるものだしなぁ 例外処理でこれ以上簡単なのはないと思うよ。 …エラーを起こさせないという前提で作ればもっと簡単になるけどねw あと、全体を無理やり囲うのはどうなん
949 名前:名無しさん@お腹いっぱい。 [2009/02/22(日) 17:59:07 ID:a3nz7nXd0] 特定の文字を判定してそこまでの文字を消すマクロはありますか? 例えば 「あいうえお」と入力してあって 「う」まで消したい、そうすると 「あい」となるようなマクロです。
950 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 18:28:16 ID:DuKIHBzQ0] POS COPY CHGMOJ でいいじゃねーの
951 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 18:31:19 ID:K0Xm20HXP] string = "あいうえお" find = "う" MsgBox(COPY(string, 1, POS(find,string)-1)) いや、違う? この世界に「愛」だけを残す方法を我々に聞いているのか?
952 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 19:08:17 ID:a3nz7nXd0] >>950 初心者なのでよくわかりません >>951 できれば表計算ソフトで使用したいのですが・・・
953 名前:名無しさん@お腹いっぱい。 [2009/02/22(日) 19:14:53 ID:mX0F8+M00] >>952 冗談じゃなく、ロジックを正しく説明してくれないとプログラムなんか書けませんから。 日本語から勉強してきてください。
954 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 19:16:18 ID:lHLWjdVe0] >>952 その表計算ソフトのスレででも聞けよ…
955 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 21:10:11 ID:a3nz7nXd0] >>953 セル内に 1戦1勝0負 10戦5勝5負 1000戦500勝500負 ・ ・ ・ となっているものを負を消して 1戦1勝 10戦5勝 1000戦500勝 ・ ・ ・ としたいのです。 よろしくお願いします。
956 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 21:21:24 ID:feS5VAah0] 丸投げしたいなら他行ってくれ スレ違いだ
957 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 21:37:49 ID:a3nz7nXd0] >>956 そうですか、自分で努力します。 失礼しました。
958 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 22:42:54 ID:K0Xm20HXP] うむ たとえばExcelの場合だとしよう A1:A100(A1,A2,・・・A100のセル)にそのデータがあるとすればB1に =LEFT(A1,FIND("勝",A1)) を入れる。次にB1選択した状態でメニューから 編集-コピーを選択、B2:B100選択した状態で 編集-貼り付けを選択。 さらにB1:B100を選択した状態で 編集-コピーを選択、 C1を選択した状態で、 編集-形式を選択して貼り付け(だったっけ?)-値を選択すると C1:C100に目的のデータが入力される UWSCでやれない訳ではないけれど結構大変になる 一般的な表計算ソフトの標準機能でこのような簡単な手段は 用意されているのでそちらを調べたほうがいい
959 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 23:27:25 ID:q6eIkfWd0] >>958 反応するなよ。反応されるとそれに対して反応したくなる… そんなに面倒なことせんでも(ry
960 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 23:54:16 ID:a3nz7nXd0] >>958 ありがとうございます。参考になります。
961 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 04:11:08 ID:S/nw+oX60] IEが複数開いてたとしてウインドウタイトルに特定の文字が含まれているもの 以外閉じるということはできますか? 例えばタイトルに「自動化ツール」というのがあるとして、その他タイトルに「自動化ツール」 が無かったら閉じるといった感じです。
962 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 08:00:29 ID:7fqz0Mlm0] >>961 できます
963 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 10:33:55 ID:S/nw+oX60] >>962 死にうせろ
964 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 11:15:39 ID:H0niA5cQ0] >>961 簡単だよ
965 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 11:42:07 ID:PyFhHQu70] >>961 できます。簡単だから頑張って
966 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 16:39:43 ID:8oL82p7A0] >>961 タブブラウザ(FireFox3とか)を使うと、たくさんタブが増えても閉じるボタン一発で閉じれるよ。 ウィンドウをいっぱい開いちゃってもタスクバーで右クリックしてまとめて終了すればいい。 Alt+F4で連続終了させるのが簡単。Alt+TABやAlt+ESCと組み合わせてもいいし。 もしそういうスクリプトを作ったとして、たとえば銀行取引のページが別窓で表示されたときに 同じタイトルだからと言って閉じてしまうと取引が不完全なまま終了しちゃっておかしくなるかも。 あと、UWSCってタイトルでアプリを終了させようとすると、 UWSCってフォルダを開いてるエクスプローラーが閉じられたりUWSC自身が終了したり変なことになる。 そういうヘンなの作ってなにか意味あるの?
967 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 21:08:56 ID:WFLH0UN70] それはお前だけじゃね?
968 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 00:04:30 ID:3MTrBR1N0] >>961 ウィンドウタイトルに「自動化ツール」が含まれない IE6 を終了 DIM i FOR i=0 TO GETALLWIN()-1 IF STATUS(ALL_WIN_ID[i], ST_CLASS) <> "IEFrame" THEN CONTINUE IFB !POS("自動化ツール", STATUS(ALL_WIN_ID[i], ST_TITLE)) THEN CTRLWIN(ALL_WIN_ID[i], CLOSE) ENDIF NEXT
969 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 00:47:30 ID:rOG7rC/gP] 私も考えてみたのですがIE7でタブを使っている場合は どうすればいいんでしょうね それさえ実現できれば>>961 さんの要求を完全に満たせると思うのですが
970 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 11:56:45 ID:1GbWnsrA0] chkimg()で透過色指定+形でチェックを同時にできるようにしてほしいのう 画像内の文字に対するgrepみたいなのを作ってるのだけどフォントカラーが変わったら使えなくなってしまう フォントスタイル自体は固定なので問題ないんだけど
971 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 15:42:30 ID:CGjnVP+X0] chkimgX() みたいな関数作って 内部で透過色&形の2重にチェックするぐらいしか思いつかないわー
972 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 17:02:53 ID:Jl8nOyx+0] いやそれ画像2枚いりますやんw
973 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 20:21:28 ID:7Fr+80aB0] 単純な input() や slctbox() ではなく、 リストボックスをいくつか置き、さらにそのリストボックスの値で ラベルが動的に変化するようなフォームを使いたいのですが、 同じようなことを試みられた方はいらっしゃいますか? やはり外部DLLを自作するしかないでしょうか。
974 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 21:47:44 ID:AV7g6HDD0] >>973 DLLで画面出す気? プロパティみたいな感じで? UWSCの有料版で画面作れるらしいけど、 無料がよければ、最近HTAていうの知ったんだけど、 DynamicHTMLで画面作って、結果をクリップボード経由で渡すようなのなら作れると思う。 リストボックスが変更されたら表示を変更。 OKボタンにOnClickイベントとしてクリップボードにセット。 というHTMLを作って拡張子をHTAに変更。 いや、別にHTMLのまんまでもいいんやけど画面まわりうざいし。 あ、いつどうやって終了を知らせるかが問題だな。 ・・・
975 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 21:51:45 ID:D2y5nC2+0] ajax使用webサイト超めんどー なんとかなんない?
976 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 22:32:36 ID:7Fr+80aB0] >>974 ありがとう、参考になりました。
977 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/25(水) 13:22:51 ID:dj7Ej2fH0] >>968 思うような動作ができました。m(_ _)m
978 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 18:52:26 ID:NcOYiIHC0] 多重起動禁止はiniファイルを弄ることで簡単にできるようになったのですが ほかのスクリプトの実行が終わった後に、後のスクリプトを実行できるようにする方法はありませんか?
979 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 19:39:33 ID:ncgoh4z50] callで呼び出せば良いんじゃない?
980 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 19:40:54 ID:NcOYiIHC0] いや 先に実行したスクリプトが終わった判定はどうすればいいのかなと思いまして
981 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 19:41:18 ID:NcOYiIHC0] ああ連続でやればいいんですね
982 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 16:52:50 ID:fl1SuMSB0] >>975 FLASH,ActiveX,,JAVAappletなんかよりはよっぽど楽
983 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 21:17:11 ID:hQtF23UU0] slctboxの戻値「slct_1」等は出力させると数字のみになるのはなぜなんでしょうか? select 〜selend文で caseのあとは"slct_"+数字でも数字のみ指定でも正しく動いているようですが
984 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 23:33:07 ID:lrDMYjZcP] >>983 一般的に定数は何かしらの数値に割り当てられるのが普通です。 数値にしておくと演算子=,<>等の処理をそのまま流用できるから設計上楽なのです。 それならば文字列として"SLCT_1"として持たせたほうが分かりやすいのでは?とも考えられますが、 小さい情報量にしたほうがexeサイズが小さくて済んだり、計算量が少なくて済むなど メリットが大きいのです。 ただしSLCT_1が1と出力されるからといってバージョンアップ等で今後変更される可能性があるので 必ず比較する場合は 「IF ret=1 THEN・・・」ではなく 「IF ret=SLCT_1 THEN・・・」とすべきでしょう。
985 名前:983 mailto:sage [2009/03/01(日) 00:17:23 ID:re5Hkvhc0] なるほどためになりました サンクス
986 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 08:13:50 ID:c3BdarSQ0] <img src="http://〜〜〜/Apos/img/web/10174/106711_1.gif"> リンクに使われている上記のような画像が複数あったとします。 ページ内にある全ての途中まで共通しているURLの画像をゲット してクリックすることはできますか? http://〜〜〜/Apos/img/web/10174ここまでが一緒で後は違うアドレスです。
987 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 12:17:03 ID:jADlBu/J0] できますよ
988 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 17:53:19 ID:b7uK3KHI0] // IEで表示中のページにリンクされているzipへのリンクを取得し、IEDownload()関数でダウンロードする。 while true data = IEGetData( IE, "TAG=A", i ) Src = IEGetSrc( IE, "A", i ) if !length(Src) then break Link = BetweenStr( Src, "href=<#DBL>", "<#DBL>" ) ifb "zip" = Copy( Link, Pos(".", Link, -1) + 1, Length(Link) - Pos(".", Link, -1) ) Then IE.navigate( Link ) IEDownload( IE ) break Endif i = i + 1 wend Function IEDownload( var IE ) Fend
989 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 19:53:07 ID:c3BdarSQ0] >>987 死にうせろ2
990 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 20:33:14 ID:q5FcoyWP0] >>989 簡単だよ 自分の頭蓋骨の中をたまには使えよ
991 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 21:14:20 ID:b7uK3KHI0] data = IEGetData( IE, "TAG=A", i ) これってAタグならラベル部分、その他ではValueを取り出せるんだけど ラベルを指定してクリックするのがIELINK() この後に IELINK(data) って入れてもいいんだけど、ダウンロード用ページだと同じラベルでいっぱいファイルがある。 だからUWSCの関数では番号指定とかでもしないとクリックできない。 まあリンクは簡単に取り出せるからIE.Navigate()で開けばいいんだけど 「ファイルのダウンロード」窓がクリックできん・・・ ボタンが反応はしてるんだけどクリックできん。 CtrlWin()でアクティブにしてもアクティブにならない。 以前作ったときはちゃんと動いていたんだけどなあ・・・ 画像の保存とかページの保存とかならIEの子ウィンドウとして拾えるけど ダウンロードは親子関係がないっぽいし。 モーダルとモードレスで親子関係が違ってくるとかなのかな。 いや、つかんでもクリックできないんだよな。 親子両方クリックしたらアクティブになった。なんか裏のやつを子として処理してたのかな。 でもフォーカスが「保存」ボタンには移ってるんだけどなあ・・・ 名前をつけて保存ならクリックできるのに。 戦車で野球のボールを投げたら時速327キロか。
992 名前:名無しさん@お腹いっぱい。 [2009/03/02(月) 00:20:27 ID:OsLHIqg20] RecIE使ってみたけど、ダイアログのクリックは拾ってくれないな。 IELink(IE,"DL002") BusyWait(IE) 本体で記録してみたけど ACW(GETID("ファイルのダウンロード","#32770"),422,375,435,243,0) ScKey()はだめだったけどMouseOrg()で窓に直接Kbd()でならもしかしていけるかも。 だめだった。 しかし、MouseOrg()してKbd()してClkItem()したらいけた。 Kbd()でアクティブ化に成功してるんだろう。
993 名前:名無しさん@お腹いっぱい。 [2009/03/02(月) 11:20:51 ID:OsLHIqg20] 「この種類のファイルであれば常に警告する」のチェックを外せばそのままダウンロードが開始されるんだな・・・ 今までやらなかったけどもうこれが一番の解決法か・・・ と思ったけど保存ダイアログが出てこないと思ったら勝手に起動されちゃうんだな。 上書きの警告もないし、キャッシュにしか落ちてないんだろう。 これじゃダウンロードにならない。 URLToFileとかいうのが使えればいいんだけど今やってるところはパスワード制限かかっててアクセスエラーになるからできないし。 >MouseOrg()してKbd()してClkItem()したらいけた。 これについては親子両方に送ればうまくいったが、子だけに送ったらだめだった。 多分他の窓をクリックすることでアクティブ状態が切り替わってうまくいってたんだな。 トップレベルなのに非アクティブなあの状態は何とかならんのか・・・ もしかしたらあの二重の窓の二つ目が開く直前に裏の窓をクリックしてしまうのが問題なのかもしれん。 親窓の方拾ったらスルーして待つかな。
994 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/02(月) 12:25:41 ID:MGuj9EpHO] 他人が役立つ日記ならここで大歓迎 環境に依存した再利用性の低い独り言はブログにでも貼ったら?
995 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/02(月) 13:02:26 ID:pSlHrzIi0] 次スレたててこい>浪費したやつ
996 名前:名無しさん@お腹いっぱい。 [2009/03/02(月) 17:11:41 ID:OsLHIqg20] 【速報】 全鯖規制ISP一覧 VIPPERのせいですね、わかります tsushima.2ch.net/test/read.cgi/news/1235980269/ qb5.2ch.net/sec2chd/ なんか祭りになってたんでスレ立てしてみたんです。 ねws qb5.2ch.net/test/read.cgi/sec2chd/1235980128/ そしたら全サーバーで規制されました。
997 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/02(月) 19:50:06 ID:rP5khwz50] 自動化ツールuwsc使いよ集まれ4 pc11.2ch.net/test/read.cgi/software/1235990960/
998 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/02(月) 21:30:58 ID:9PDTuTrY0] おつおつ。
999 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/03(火) 02:16:28 ID:0ITm2xmn0] 999
1000 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/03(火) 02:27:23 ID:6utcIoKu0] んじゃ1000
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。