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/
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作りたいときに自動登録マクロとか。