自動化ツールUWSC使いよ集まれ9at SOFTWARE
自動化ツールUWSC使いよ集まれ9 - 暇つぶし2ch50:名無しさん@お腹いっぱい。
12/10/29 20:15:12.33 Eoa/UAOw0
FUNCTION waitWindowIsReady(lWID, lStrTitle, lStrClass="", lWaitLoopNum=60, lWaitUnitSeconds=1)
  RESULT = FALSE
  lFlgStatOk = FALSE
  lHND = IDTOHND(lWID)
  FOR lI=0 TO lWaitLoopNum
    IF !isExistProcess(lHND) THEN EXIT
    lFlgStatOk = (status(lWID, ST_TITLE) = lStrTitle) AND !status(lWID, ST_BUSY)
    IF !(lStrClass = "") THEN lFlgStatOk = lFlgStatOk AND (status(lWID, ST_CLASS) = lStrClass)
    IF lFlgStatOk THEN BREAK
    SLEEP(lWaitUnitSeconds)
  NEXT
  RESULT = lFlgStatOk
FEND

FUNCTION isExistProcess(lHND)
  RESULT = !( HNDTOID(lHND) = -1 )
FEND

すっきりw

51:名無しさん@お腹いっぱい。
12/10/29 21:39:14.40 n98F/FTUP
何がしたかったのかがわからないw
IDの戻り値が-1(存在しない)時にスルーさせたかったの?

52:名無しさん@お腹いっぱい。
12/10/29 22:45:29.64 Eoa/UAOw0
>>51
機能
・対象IDのウィンドウがREADY状態(BUSY状態ではなく、タイトルも指定のものになる)まで待つ。
・READYになって待機が終わったのか、タイムアウトで終わったのかが、戻り値で判る。
・待機はブラウザで特に必要。IEならOLEでチェックできるが、他のブラウザは出来ない。

問題
・待機中、READY判定する前にウィンドウが閉じてしまった場合、
 STATUS関数の所でUWSCが無限に止まります。(タイムアウトしてくれない)
・そのためSTATUS関数の直前にIDの有効をチェックする必要があるが、
 予期しないタイトルに変化する場合などGETIDで再取得できないケースあり。

解決
・プロセスID用の関数で解決できましたとさ。

53:名無しさん@お腹いっぱい。
12/10/29 22:51:54.27 mS4uH//S0
firefoxで待機確認はできなかったっけ?
何個か前のスレであった気がするが

54:名無しさん@お腹いっぱい。
12/10/30 04:42:22.47 t1fOU8UV0
whileやrepeatとかを使った繰り返し処理を、
一定時間だけやって抜け出すスマートな方法って無いですか?

SLEEPとカウンターを絡めたとしても、
中の処理の時間がまちまちだと、
ピッタリ10秒で終えるとか厳しいですよねぇ。
GETTIMEで実時間を測るしかないんでしょうか?

SLCTBOXのタイムアウトみたいなのがあればいいんですが・・・

55:名無しさん@お腹いっぱい。
12/10/30 05:25:21.97 y7Qyc3n90
public flag = true

thread 関数()
sleep(10)
flag = false

procedure 関数()
 while flag
 wend
fend

こんな感じでどうかな

56:名無しさん@お腹いっぱい。
12/10/30 06:40:11.73 6WPQrN5R0
中の処理でっていうのはwhile文の中でさらに条件によってsleep何個も使うとかそういう事?
普通の処理ならforでもwhileでも使ってsleep(1)でカウント分だけ回せばそうそう時間がずれるほどの処理に時間かかることないと思うけど


57:名無しさん@お腹いっぱい。
12/10/30 07:03:33.02 HLYrvy0xP
スレッドわけてexitexitしちゃえば

58:名無しさん@お腹いっぱい。
12/10/30 07:15:50.09 231igMIaP
失礼します
RecIEで記録する時に
IEのアドオンを設定した状態で起動できないでしょうか?
WindowsXPs2
よろしくお願いします

59:名無しさん@お腹いっぱい。
12/10/30 08:58:00.87 t1fOU8UV0
>>55
ありがとうございます。勉強になります。

で、↓試してみたんですけど、
このままだと上のfukidasi(flag~も表示されず、
5秒経っても10秒経っても全然抜け出せません。

whileの中の、SLEEP(0.01)を有効にすると
抜け出せるんですがmsgboxが機能せず、
SLEEP(0.001)を有効にすると、抜けだし&msgbox両方OK
と訳分からん状態です。なんでなんでしょうかね?
まぁ、動けばいいんですけど、なんか腑に落ちない感じがして・・・

public flag = true

thread 関数()
fukidasi(flag,100,0)
sleep(3)
flag = false
fukidasi(flag,100,0)

procedure 関数()
 cnt=0
 while flag
  fukidasi(cnt)
  cnt=cnt+1
// SLEEP(0.01)
// SLEEP(0.001)
 wend
 msgbox(cnt)
fend

60:名無しさん@お腹いっぱい。
12/10/30 09:29:17.72 6WPQrN5R0
CPUの負荷が高すぎて処理落ちしてるんじゃない?
sleep(0)でも入れておくことで他のスレッドにタイムスライスの残り時間渡すとかumiumiさんも言ってたしウィンドウメッセージの処理が出来なくなってるんだと思うよ

61:名無しさん@お腹いっぱい。
12/10/30 09:30:38.00 6WPQrN5R0
正確には負荷とは違うか

62:名無しさん@お腹いっぱい。
12/10/30 09:56:32.50 H5qTS3qK0
>>54
> 中の処理の時間がマチマチ
その処理を中断してでもピッタリ終えようとすると色々問題では?
中断するまでもなくすぐ終わる処理なら誤差範囲に収まるのでは?

GETTIMEで実時間を判定する関数を使って一行で抜けるように書き、
それを中断可能箇所全てに挟み込むのが結局一番スマートに思えますが…

63:名無しさん@お腹いっぱい。
12/10/30 10:04:58.21 CTPk6h/00
sleepが無いとダメなのはスレッドが処理を占有しすぎるためで
msgboxが出ないのは 関数() でwhileを抜けてmsgboxに行くまでに
スクリプト自体が終わってしまうからだろうね

thread 関数()
fukidasi(flag,100,0)
sleep(3)
flag = false
fukidasi(flag,100,0)

sleep(1) // ←追加

64:名無しさん@お腹いっぱい。
12/10/30 12:57:58.68 dU/tE5XU0
UWSC..exeの名前変えると起動しなくるんだが。
どうすれば変えても起動可能になる?
このふざけた制限を消す方法教えてくれ

65:名無しさん@お腹いっぱい。
12/10/30 13:30:30.45 XY6ca7Ua0
>>64
バイナリエディタで
55 57 53 43 → 適当な4文字
75 77 73 63 → 適当な4文字

こういう話じゃなかったらスマソ

66:名無しさん@お腹いっぱい。
12/10/30 13:55:10.95 HLYrvy0xP
>>64
目的によっては、作成済みのをexe化してそれを起動とか。

67:名無しさん@お腹いっぱい。
12/10/30 18:33:17.73 dU/tE5XU0
>>65
それだとタスクマネージャー上のプロセス名変わらないんだよ
タスクマネージャーの表示プロセスを変えたい

ぼったくりpro版買う以外の方法ねーのか

68:名無しさん@お腹いっぱい。
12/10/30 19:01:48.64 ClLLhcW80
ゲームの不正監視のすり抜けが目的なの?

69:名無しさん@お腹いっぱい。
12/10/30 19:08:38.68 dU/tE5XU0
動かなくするほうが不正だろ
本来あるべき状態に戻すだけ

70:名無しさん@お腹いっぱい。
12/10/30 19:29:23.85 ClLLhcW80
べき論きたー

71:名無しさん@お腹いっぱい。
12/10/30 20:25:59.88 6IZ9AUUp0
>>69
お前に使われるために作られたツールじゃない。
お前の理想など知ったことではない、どうでも良い。

この制限の目的はネットゲームのBOT不正利用に
UWSCが悪用されることを防ぐことだと推測される。

目的が達成されているようで何よりです。


まぁ俺はMyBOTにも使ってるけどね
厳しくないゲームに対してだけど
俺以外でBOT利用できない奴がいるというのは喜ばしいw

72:36
12/10/30 20:26:36.79 HZbQmbU/0
moji = "w12345678" //文字列例
regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Pattern = "w[0-9]{8}" //正規表現のパターン
regex.Global = True //マッチングする文字が見つかったらその時点で終了
regex.IgnoreCase = True //大文字小文字を区別しない
ans = regex.Replace(moji, "") //上記のパターンに一致する文字を消す(""に変換)
print ans //プリント表示
REplaceのせいで条件の文字が全て消えてしまいました。(当然ですが・・・)

REplaceで条件の文字以外""に変換することって出来ますか?やりたいことはマッチした文字だけを抽出することです。


73:名無しさん@お腹いっぱい。
12/10/30 20:53:26.69 6IZ9AUUp0
>>72
VBScript.RegExpの仕様を確認しましたか?
TRUE/FALSEを返すだけの役立たずじゃない気がするが俺は確認してない。

74:36
12/10/30 20:58:25.80 HZbQmbU/0
>>73
よくわかんないです。

moji = "w12345678" //文字列例
regex = CREATEOLEOBJ("VBScript.RegExp")
regex.Pattern = "w[0-9]{8}" //正規表現のパターン

regex.IgnoreCase = True //大文字小文字を区別しない
regex.Global = false //マッチングする文字が見つかったらその時点で終了
print regex //プリント表示

これだと数字は表示されるけど、"w"が表示されない
print "c" + regexだと何故かエラーになる・・・

75:名無しさん@お腹いっぱい。
12/10/30 21:00:45.26 HZbQmbU/0
よく確認したら数値の順番がバラバラです。。。
もうだめだ。。。

76:名無しさん@お腹いっぱい。
12/10/30 21:02:35.31 mdXGhH2u0
>>72
こんなのじゃ駄目なのか?

str = "ABCDEFw564986154GHIJK"
print wns(str)

FUNCTION wns(str)
dim i = 1
REPEAT
  ws = POS("w",str,i)
  if ws > 0
    ws2 = COPY(str,ws+1,8)
    ifb CHKNUM(ws2) = true
      RESULT = "w"+ws2
      EXIT
    endif
  endif
  i=i+1
UNTIL ws = 0
RESULT = 0
fend

77:名無しさん@お腹いっぱい。
12/10/30 21:05:34.00 HZbQmbU/0
>>76
ありがとうございますプログラミングの神様!!

78:名無しさん@お腹いっぱい。
12/10/30 21:09:12.22 mdXGhH2u0
>>74
str = "ABCDEFw564986154GHIJK"
re=CreateOleObj("VBScript.RegExp")
re.pattern = "w\d{8}"
re.Global = True
re.IgnoreCase = True

match = re.Execute(str)
for i = 0 To match.Count-1
print match.Item(i).Value
next

79:名無しさん@お腹いっぱい。
12/10/30 21:09:24.87 6IZ9AUUp0
>>74
本家のリファレンスを自力で何とか読解しようとしない時点で
プログラマとしての腕はそれ以上伸びませんので、
RegExpを使うのは諦めて上の方法でやるのが宜しいかと。
読めればですが。

80:名無しさん@お腹いっぱい。
12/10/30 21:46:05.89 ZjVSyhwh0
CreateOleObjしたものの使い方は、UWSCのマニュアルじゃなくて
各COMコンポーネントごとのマニュアルを見ないといけない事に気付いてないんだろうね
COMなんてプログラム言語が異なっていても使い方は同じなんだから
"VBScript.RegExp"でググればサンプルはいくらでも見つかるのに

81:名無しさん@お腹いっぱい。
12/10/30 21:49:26.83 6WPQrN5R0
UWSCはAPIとかDLLとか外部の物を持ってきて使えるのが強みなんだけど初心者にはどれが外部の機能かわからないから難しい部分はあるが
ただ正規表現とかはどの言語でも使い方はほぼ一緒なんだから適当に検索すれば見つかったはずだが

82:名無しさん@お腹いっぱい。
12/10/30 21:56:49.16 DMxDYr+20
ちっせぇ事だけど、ID:6WPQrN5R0が具体例を一切挙げずに
上から目線なのがちょっと気になる俺w

スクリプト適当に拾ってきて貼り付けるだけのミジンコじゃ無さそうなのは
文面からなんとなく分かるんだけどな

83:名無しさん@お腹いっぱい。
12/10/30 21:57:55.75 DMxDYr+20
あ、すまんID:6IZ9AUUp0だた・・・

84:名無しさん@お腹いっぱい。
12/10/30 23:39:45.64 dU/tE5XU0
>>71
低脳乙
UWSCできるのはマクロ
BOTっていうのはパケ解析して動作せるのもので質が違うんだが
UWSCでBOTとか無知は死んでいいよ

85:54
12/10/30 23:54:44.91 7vDPQomb0
いろいろアドバイス有り難うございました。
精進します。

86:名無しさん@お腹いっぱい。
12/10/31 00:11:45.18 lxygHfiD0
>84
6IZ9AUUp0を擁護するつもりも、貴方の揚げ足取るつもりも無いんだが、
>71のBOTは↓の3つ目の意味だと思う。 (勿論貴方の言うBOTも実在する)
URLリンク(ja.wikipedia.org)

まぁオンゲとかやらん人間だったら、知らなくても恥じる必要は無い。
むしろ>71みたいな事を嬉々として語っちゃう6IZ9AUUp0のが痛い。

87:名無しさん@お腹いっぱい。
12/10/31 00:16:05.92 lxygHfiD0
ちなみにUWSCがリネーム制限してるのは、自身を呼び出す為であってBOT云々は関係無いと思われる。
そもそもexeの名前を変えても、他の情報(バージョン情報とか)でバレる。

88:名無しさん@お腹いっぱい。
12/10/31 00:25:48.52 RpqlL13I0
他の情報はバイナリで書き換えて、あとファイル名だけだだから言ってんだろうが。
専スレのくせに使えねえんだなこの糞スレ
低レベルなところで聞いたのが間違いだったわ
相手してやるのも疲れたからじゃあなくず

89:名無しさん@お腹いっぱい。
12/10/31 00:59:08.04 lxygHfiD0
貴方が逝くべき先はEmbarcadero(もしくはBorland)製品のバイナリの弄るようなネタを扱ってるスレだ。
あと確実に答えをくれそうな相手を見定める能力が無いのを、他人のせいにすうのはみっともない。

90:名無しさん@お腹いっぱい。
12/10/31 02:51:37.88 9m2hGbR30
URLリンク(i.imgur.com)
頼み方ってものを心得てる奴にならこれ位教えたんだがな。

91:名無しさん@お腹いっぱい。
12/10/31 03:24:18.76 9m2hGbR30
あぁ、exeの名前変えたかったんだったな
タスク上と勘違いしてたわURLリンク(i.imgur.com)

92:名無しさん@お腹いっぱい。
12/10/31 08:51:05.02 XBs0O2oO0
人に聞く態度を知らない無知で可哀そうな ID:dU/tE5XU0 (4回) ざまぁww

93:名無しさん@お腹いっぱい。
12/10/31 11:25:09.60 kruzi6SM0
>>86
ネトゲのBOTはパケット解析して作られたものを指すもので、UWSCで出来るようなしょぼ動作は全てマクロなんだよ
まぁオンゲとかやらん人間だったら、知らなくても恥じる必要は無い
6IZ9AUUp0自演してんじゃねえよカス

94:名無しさん@お腹いっぱい。
12/10/31 13:32:07.13 9m2hGbR30
最後の3行が無ければID:6IZ9AUUp0もここまで叩かれなかったろうにw

95:名無しさん@お腹いっぱい。
12/10/31 17:40:46.31 yEL/X+E40
まさに薮蛇

96:名無しさん@お腹いっぱい。
12/10/31 22:37:18.45 4Dpj8rIo0
>93

URLリンク(ja.wikipedia.org)
>画像やパケットなどによる判定を行わずに、単純にマウス操作やキーボード操作を繰り返すだけのマクロは、ボットではなく寝マクロと呼ばれることが多い。
 ↑ここに注目。

UWSCは一応画像判定できるわけだが。
無論マクロ的に使う事のが多いけど。

97:名無しさん@お腹いっぱい。
12/10/31 22:39:45.59 4Dpj8rIo0
6IZ9AUUp0に突っ込まれないようフォローしたつもりだったが、逆効果だったようだな。すんまそん。

98:名無しさん@お腹いっぱい。
12/10/31 23:23:13.42 CjlVM13F0
BOTかマクロかなんてどうでもよくね?
名前も変えられない程度の奴が騒いでたそれだけのことだ

99:名無しさん@お腹いっぱい。
12/10/31 23:39:35.13 yEL/X+E40
頭のハッキングツールが必要だったってオチ

100:名無しさん@お腹いっぱい。
12/11/01 00:46:52.17 GDLd7dzX0
>>96
6IZ9AUUp0自演しつこすぎ
お前、AIの意味分かってねーだろ
画像認識なんて状況判断できないしパケありきのもの
UWSCはただのマクロ
パケット判定できないから繰り返してるだけだろうが
ネトゲにおいては厳密に区別されてんだよ
素人自演野郎は引っ込んでろ
>>98
変えられない程度?
調子乗った口きくならやりかた書いてから言えや
出来もしねーくせに偉そうな態度取ってんじゃねえよ
俺はROのkoreいじって作ってたこともあるんでね
自演と低脳しかいねーのなマジで
やり方も書かずに、自演とか煽りとか使えなすぎ
黙って聞かれたこと答えてりゃいいのに、まあ出来る奴自体いないんだろうね

101:6IZ9AUUp0
12/11/01 00:52:13.17 1NqoF7dS0
いや~香ばしいなw
しょせんネトゲ廃人はネトゲ廃人か…

102:名無しさん@お腹いっぱい。
12/11/01 01:11:37.27 qbFiDt/T0
>100
UWSC単品ではパケ判定はできなろうけど、パケ解析アプリ起動しといてそっち監視すればやれん事もない。

103:名無しさん@お腹いっぱい。
12/11/01 03:16:44.11 ynaU+2MIP
厳密な意味はともかくネットゲーマーの間で一般的には、
マクロ=マクロそのもの
bot=自動戦闘してるプレーヤー
って使われ方だけどね。

104:名無しさん@お腹いっぱい。
12/11/01 07:11:08.19 w4h2kJAW0
不正ツーラーの話なんざどうでもいいので巣に帰って好きなだけやれ

105:名無しさん@お腹いっぱい。
12/11/01 08:10:57.15 pJMyzqDC0
>>90-91で名前変えてるじゃんw
煽って答えが出てくるのはチートスレとかvip
一般的なスレで他人を煽ってもメリットなんて一つもないのにw

106:名無しさん@お腹いっぱい。
12/11/01 20:11:07.34 CvC8JJda0
UWSC実行中他のwindowがアクティブにならない方法ってないですか?メッセンジャーとか来ると困るんですが

107:名無しさん@お腹いっぱい。
12/11/01 20:17:43.29 GL3Sn6V7P
ACWかCTRLWINじゃ駄目なの?

108:名無しさん@お腹いっぱい。
12/11/01 20:23:52.82 A9U599jQ0
別スレッドでアクティブウィンドウの変化を監視させるとか

109:名無しさん@お腹いっぱい。
12/11/01 20:28:23.46 yuGS3fAI0
メッセンジャーの方でアクティブにしないようにしろよ

110:名無しさん@お腹いっぱい。
12/11/02 04:00:06.74 YyvMFziPP
もしあれなら直接送れば

111:名無しさん@お腹いっぱい。
12/11/02 21:15:28.74 RTBFr6hI0
アクティブウインドウのID取得→ハンドルに変換→DOSCMD("taskkill /f /im <#DBL>" + HND + "<#DBL>")

112:名無しさん@お腹いっぱい。
12/11/02 21:16:34.00 RTBFr6hI0
まちがえた /im じゃなくて /pid だな

113:名無しさん@お腹いっぱい。
12/11/02 22:30:56.70 rIog9SuL0
ハンドルではなくプロセスIDにすべきでしょ

114:名無しさん@お腹いっぱい。
12/11/03 07:10:17.23 wRFDZ7/80
URLリンク(uproda.2ch-library.com)
PW1
上記の様なマップの宝箱や階段をクリックするブラウザゲーをIEでやっています
MAP巡回をするプログラムは出来たのですが,宝箱の画像認証に課題があります

上記ゲームで宝箱の画像認証はできたのですが,画像にしてしている様に
・宝箱は光ったり暗くなったりして色が変わります

ですので認証する際の画像は
・宝箱の色の光った時と暗くなった時の色彩の変化の少ない所
・宝箱の色が一様な所
を認証できる範囲で一番大きな6×3位の画像
CHKIMG("A.BMP",0,60,160,729,480,-1,IMG_MSK_BGR5からIMG_MSK_BGR6)
で認証しています

しかしながら色の誤差を大きくしてしまっているため,他のMAPの別の所に反応してしまいます
そこで画像の
・宝箱の色彩の変化の大きい所
を選択して宝箱のみ認識する画像にしようとしましたが今度は画像認証を行ってくれませんでした

115:名無しさん@お腹いっぱい。
12/11/03 07:15:03.00 wRFDZ7/80
皆様にお聞きしたいことは
・この様な場合皆様は画像の認証をする際に気を付ける事はしていますか?
・また画像認識できないときの対処のためのプログラムの改善
・綺麗なプログラムについてもアドバイス頂けたら嬉しいです

ちなみにプログラムを下の様にMAPばかり認証してしまった場合に次の処理へ行く様には書き換えていますが進むのには時間がかかってしまってプログラムと共に画像認識を改善したいと考えています

WHILE TRUE
通った道の記録
if 箱が見つかった and boxcount<10
箱をクリック
boxcount++
elseif 階段が見つかった and kaidancount<10
kaidancount++
elseif 青い人の検索 and bluemancount<10
bluemancount++
else
道の検索とクリック
endif
WEND

プログラム詳細も載せておきます(PW1)
URLリンク(uproda.2ch-library.com)


116:名無しさん@お腹いっぱい。
12/11/03 07:54:12.91 H5OBjkDf0
画面外にあるウィンドウに対して画像認識する方法はあるでしょうか
例としては1920,1080のモニタであるウィンドウを2000,1に移動
そのウィンドウに対して画像認識

mouseorg(GETID(GET_ACTIVE_WIN),2)
ACW(GETID(GET_ACTIVE_WIN),2000,1)
if chkimg("a.bmp",0,0,0,800,600)then fukidasi("成功",0,0)

117:名無しさん@お腹いっぱい。
12/11/03 08:22:19.01 cuEEEzHC0
透過色の設定を-1にして形のチェックじゃいけないの?

118:名無しさん@お腹いっぱい。
12/11/03 09:09:25.64 kjGT+Mpz0
3Dポリゴンの色認識が反応しないんだけどなんで?

119:名無しさん@お腹いっぱい。
12/11/03 10:23:56.41 awp5Bdyd0
>>115
光るアニメーションのうちの任意の1枚で、他と混同がなく、
アニメーションの最も遅い瞬間で、
コントラストのなるべくはっきりしたユニークな一枚、
そのコントラストの部分が左上に来るように切り取った8x8ぐらいのを使う。

そいつをSLEEP(0.1)挟んで数回連続CHKIMGし一度でもヒットしたらループ打ち切り。

120:名無しさん@お腹いっぱい。
12/11/03 10:25:42.23 awp5Bdyd0
>>116
XPだとダメ。他のウィンドウの下もダメ。
一時的に画面内に持ってきて判定してすぐ元の位置に戻すとか、
GETITEMで取れるやつで何とかするとか

121:名無しさん@お腹いっぱい。
12/11/03 10:30:15.19 H5OBjkDf0
>>120
スペックかいてなかったです申し訳ない windows7pro64bitです
XPではだめということは7では方法があるんでしょうか


一時的に画面内・・・その発想はなかったです 画面内には開ききれない量のウィンドウを
同時処理したいので、できる限りこの方法以外があればいいのですが・・・

122:名無しさん@お腹いっぱい。
12/11/03 10:39:07.21 awp5Bdyd0
>>115
対象URLとか隠せよ十中八九規約違反だろw
これ運営が見て対策されたらスクリプト作り直しになるぞw
広めるんじゃない、おまえには後ろめたさが足りないw

・IFBがIFになってるぞ
・所々インデントがいい加減
・大文字か小文字か統一しろよ
・THENつけるかつけないかも統一しろよ
・演算子の前後の空白、代入時は詰めるとかのルールならFORのときも詰めたら
・関数名CLICKは俺ならclickForCheckAvoidanceにするな。
 後々関数が増えてきた時に用途がブレないようにするため。
・今のうちに機能ブロックごとに別ファイルに分割したほうがいいかもね

123:名無しさん@お腹いっぱい。
12/11/03 10:40:43.82 awp5Bdyd0
>>121
XP以降は、実際に表示されない部分の画像はOSが描画処理しないことで
パフォーマンスを上げているしくみ
画像が存在しない

124:名無しさん@お腹いっぱい。
12/11/03 11:22:10.74 cuEEEzHC0
>>122 IFBはVer 4.7からIFでもIFBでもどちらでも使えるようになってるよ

>>115 進むのに時間がかかるの意味がちょっとわからないが短絡評価(複数条件がある場合初めの条件が一致したら後の条件は無視)ならできるよ
スクリプトの初めの方にでも option SHORTCIRCUIT を付け加えておく

125:名無しさん@お腹いっぱい。
12/11/03 11:38:50.36 CGupTffW0
ブラゲー面白そうだったらやってみようと思ったがハンゲかよw

それはさて置き、CheckColorでRGB値サーチって手法もあるっちゃある
有効値を+-20とかにして「○○っぽい色」があれば周辺のXY座標を再サーチして
更に「○○っぽい色」があればクリックとか

126:名無しさん@お腹いっぱい。
12/11/03 11:46:03.74 CGupTffW0
ざっくり
URLリンク(uproda.2ch-library.com)

127:名無しさん@お腹いっぱい。
12/11/03 12:22:40.75 kjGT+Mpz0
UWSCって7の64bitだとまともに動かないのかよ、今知ったわ。
ペイントで赤色適当にぬって、$0000FF指定してカーソル移動させようとしたのに無反応とか
何だこの欠陥ソフト

128:名無しさん@お腹いっぱい。
12/11/03 12:27:37.46 awp5Bdyd0
>>127
欠陥ソフトなのでもう使うのは辞めてこのスレにも来ないでね。
このソフトのことはもう忘れてくれ。

129:名無しさん@お腹いっぱい。
12/11/03 12:51:38.02 kjGT+Mpz0
分かったわ。ソフトが糞なら利用者も糞だな
7対応したら起こしてくれ

130:名無しさん@お腹いっぱい。
12/11/03 14:34:20.56 kbMDhJKeP
>>129
文句あるならお前がUWSCより優秀なソフトを自作して使えばいいだけ
キチガイ死ねカス

131:115-116
12/11/04 18:22:16.63 pAPM1NcD0
皆様ありがとうございます!

>>117さん
透過色-1はわかるのですが、形のチェックについて以前ググったときは赤のドラえもんと青のドラえもんが同じ判定をされて、
輪郭とまわりの淵?がはっきりしていなければならないといった認識で,今回の宝箱の周囲の赤色は少し変わるので上手くいかない
のかなといった事を考えていました(私が間違った事を言ってる可能性あります)
詳細な使い方については調べきれずとりあえず使ってみて上手くいかなかったのでほったらかしにしている状況です・・
形のチェックと、透過色との組み合わせについて参考となりそうな検索手段を教えて頂けると幸いです・・・

>>119さん
画像認識のノウハウとても参考になります^^
8*8のユニークな部分を左上に持ってくるとは最初の一点で違うと判断されたら次へ移るということで高速に判定できるのを
狙われているのでしょうか?

132:115-116
12/11/04 18:31:59.22 pAPM1NcD0
皆様ありがとうございます!

>>117さん
透過色-1はわかるのですが、形のチェックについて以前ググったときは赤のドラえもんと青のドラえもんが同じ判定をされて、
輪郭とまわりの淵?がはっきりしていなければならないといった認識で,今回の宝箱の周囲の赤色は少し変わるので上手くいかない
のかなといった事を考えていました(私が間違った事を言ってる可能性あります)
詳細な使い方については調べきれずとりあえず使ってみて上手くいかなかったのでほったらかしにしている状況です・・
形のチェックと、透過色との組み合わせについて参考となりそうな検索手段を教えて頂けると幸いです・・・

>>119さん
画像認識のノウハウとても参考になります^^
8*8のユニークな部分を左上に持ってくるとは最初の一点で違うと判断されたら次へ移るということで高速に判定できるのを
狙われているのでしょうか?

133:115-116
12/11/04 18:56:55.13 pAPM1NcD0


>>122さん
プログラムあまり上手ではないので参考になります!
プログラム検索しているとみなさん見やすくてとても参考になる・・

>>124さん
ありがとうございます!
そんなオプションがあったんですね
画像判定処理に時間がかかるわけではなく、アルゴリズムに問題があるという意味で遅い
のですが仮想化してて重い故今後役に立つ可能性大です!
ご意見から察するに分岐で複数の判定を要する際はは不要な判定も済ませて実行しているのですか

>>125,126さん
プログラム拝見させて頂き思い浮かびました
CHKIMGでは既存の画像を使い、誤認識を防ぐためにpeekcolorを使って周辺のユニークな色1点を検索する事で安定するのではないかと!
最初Peekcolor一点の検索だとMAPの色によっては沢山検索しないといけない気がしましたのでこの方法で試してみたいと思います

134:名無しさん@お腹いっぱい。
12/11/04 23:58:49.47 KbkfVQ2v0
2012/11/5 19:00
↑ここの5の前に0を追加することってできますか?

135:名無しさん@お腹いっぱい。
12/11/05 00:02:05.62 yKEzagQ50
はい

136:名無しさん@お腹いっぱい。
12/11/05 00:45:04.40 ejWB53aA0
>>134
s1 = "2012/11/5 19:00"
tmp = s1
y = Token("/", tmp)
m = Token("/", tmp)
d = Token(" ", tmp)
t = tmp
if Length(m) < 2 then m = "0" + m
if Length(d) < 2 then d = "0" + d
s2 = y + "/" + m + "/" + d + " " + t
MsgBox(s2)

137:名無しさん@お腹いっぱい。
12/11/05 19:24:41.04 akiMXvhL0
strTest = "2012/11/5 19:00"; strSep = "/ :"; DIM strDt[6]
FOR lI=0 TO RESIZE(strDt)
  strDt[lI] = VAL(TOKEN(strSep, strTest))
  IF strDt[lI] = ERR_VALUE THEN strDt[lI] = 0
NEXT
PRINT strDt[0] + "/" + strDt[1] + "/" + strDt[2] + " " + strDt[3] + ":" + strDt[4] + ":" + strDt[5]
PRINT getDateTimeStrByGettimeSeconds(transGettimeSeconds(strDt[0], strDt[1], strDt[2], strDt[3], strDt[4], strDt[5]))


FUNCTION getDateTimeStrByGettimeSeconds(lGettimeSeconds)
  GETTIME(lGettimeSeconds/60/60/24, "2000/01/01 00:00:00")
  RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2
FEND

FUNCTION transGettimeSeconds(lOffsetYears=2000, lOffsetMonths=1, lOffsetDays=1, lOffsetHours=0, lOffsetMinutes=0, lOffsetSeconds=0)
  RESULT = offsetGettimeSeconds(lOffsetYears-2000, lOffsetMonths-1, lOffsetDays-1, lOffsetHours, lOffsetMinutes, lOffsetSeconds)
FEND

FUNCTION offsetGettimeSeconds(lOffsetYears=0, lOffsetMonths=0, lOffsetDays=0, lOffsetHours=0, lOffsetMinutes=0, lOffsetSeconds=0)
  lStrYear = "" + (2000 + lOffsetYears + INT(lOffsetMonths/12))
  lOffsetMonths = lOffsetMonths MOD 12
  IFB lOffsetMonths < 0 THEN
    lStrYear = lStrYear - 1
    lOffsetMonths = lOffsetMonths + 12
  ENDIF
  lStrMonth = "" + (1 + lOffsetMonths)
  IF LENGTH(lStrMonth)<2 THEN lStrMonth = "0" + lStrMonth
  RESULT = _
    GETTIME(0, lStrYear + "/01/01 00:00:00") + GETTIME(0, "2000/" + lStrMonth + "/01 00:00:00") + ((( (( (lOffsetDays * 24 + lOffsetHours) * 60 + lOffsetMinutes )) * 60 + lOffsetSeconds )))
FEND

138:名無しさん@お腹いっぱい。
12/11/05 21:04:31.17 ejWB53aA0
s1 = "2012/11/5 19:00"
t = s1
s2 = Token("/",t) + "/" + Copy(100+Val(Token("/",t)),2) + "/" + Copy(100+Val(Token(" ",t)),2) + " " + Copy(100+Val(Token(":",t)),2) + ":" + t
MsgBox(s2)

139:名無しさん@お腹いっぱい。
12/11/05 23:53:50.95 EWeqSgMeP
S1 = "2012/11/"+"0"+"5 19:00"
MSGBOX(s1)

140:名無しさん@お腹いっぱい。
12/11/06 05:47:28.18 tq2mwrl50
i = "2012/11/05 19:00"
msgbox(i)

141:名無しさん@お腹いっぱい。
12/11/06 09:59:49.60 ncREa9xG0
msgbox("2012/11/05 19:00")

142:名無しさん@お腹いっぱい。
12/11/06 10:10:25.12 JZkjp+op0
k1 = "2012/11/06"
k2 = replace(trim(k1),trim(k1),"2"+"0"+1"+2"+/"+"/"+"1"+"1"+"/"+"0"+"5"+" "+"1"+"9"+":"+"0"+"0")
if pos(trim(k2),"2012/11/05 19:00") > 0 then msgbox(trim(k2))

143:名無しさん@お腹いっぱい。
12/11/06 21:57:36.11 qBMVUonl0
CHKIMGを使った際に返される座標値が-999999,-999999ってかえってくるのですが
この原因が分かる方いませんか?

144:名無しさん@お腹いっぱい。
12/11/06 22:02:17.59 bsmq6tG/0
>>143
chkimg()の返値がFalseなんじゃないの?

145:名無しさん@お腹いっぱい。
12/11/06 23:17:46.43 ncREa9xG0
>>143
ERR_VALUE = -999999

146:名無しさん@お腹いっぱい。
12/11/06 23:23:16.06 qBMVUonl0
ERRなのですか・・・
プログラム中でその様な値となるので、画像の検索用のプログラムで複数回調べるときちんと値は入っていました
ERR_VALUEとFALSEは一緒の事ですよね?

147:名無しさん@お腹いっぱい。
12/11/07 01:14:16.44 LH3dgIzB0
chkimg()の返値がFalse
だから、座標に-99999が格納される仕様なんじゃないの?

148:名無しさん@お腹いっぱい。
12/11/07 01:22:00.92 yDDBvlpr0
>>146
検索用とやらで座標取得できてるなら本スクリプトに何か問題があるんでしょ
情報が少なすぎるし晒してみなよ

149:名無しさん@お腹いっぱい。
12/11/07 11:24:00.24 geuBrNDN0
関数内でchkimgして呼び出し元でG_IMG_X/Y使おうとしてるとか

150:名無しさん@お腹いっぱい。
12/11/07 12:32:38.75 HPKwSu8nP
原始的だけど、カーソル移動やクリックの動作の直前に
fukidasiやprintで座標出してみるといいかも。
どこで躓いてるかすぐわかる。

151:名無しさん@お腹いっぱい。
12/11/10 13:38:19.95 yR0gLTmO0
マウスのカーソル位置を監視し、タスクトレイのメーラーアイコンの見た目の変化を検出するとクリックしてメーラー画面を開くスクリプトを組んだのですが
思い通り動作しないです・・・・ おかしいところがないか見てください。初UWSCです。鶴亀というのはメーラーのソフト名です

While True
WHILE TRUE
ifb GETID(GET_ACTIVE_WIN) = GETID("turukame.exe") then
IFB CHKIMG("a/turukame") = G_MOUSE_X y1 = G_MOUSE_Y
BTN(LEFT,CLICK)
Open(FileName :="C:\turukame\turukame.exe")
Endif
Endif

152:名無しさん@お腹いっぱい。
12/11/10 14:14:57.93 U37qm/mfP
どこから突っ込んでいいのかわからない・・・

とりあえずIFB ○○ = ○ = ○なんて判定の仕方はない
IFB ○○ = ○ and ○○ = ○ なら使える

判定が鶴亀とかいうツールがアクティブの時のみだけどそれ以外の時に変化があるのでは?

WHILE TRUEに対してのWENDがないけどスクリプトの一部?というか無限ループの中に無限ループ?

BTN(LEFT,CLICK) ってどこクリックさせてるの?

G_MOUSE_X y1 いきなり知らない変数出てきてるけどこれ何w

Open(FileName :="C:\turukame\turukame.exe")ってすでにアクティブウィンドウの時の判定なんだから開いてるんじゃないの?

153:名無しさん@お腹いっぱい。
12/11/10 15:18:06.98 sJ45IC2r0
>>151
・CHKIMGの戻り値は true または false なので、マウスカーソルの座標と比較しても無意味。
  画像に一致した座標は G_IMG_X と G_IMG_Y に返る。比較するならこっちと。

・Openは標準関数にはないし、:=使ってるってことは、COMのメソッド呼び出しなんだろうけども
  hoge.Open(FileName :="C:\turukame\turukame.exe") の様にCOMオブジェクト変数が必要
  turukame.exeを実行したいだけならexec関数でいいのでは?

・タイトルに turukame.exe が含まれたウィンドウがアクティブになるのかが、そもそも怪しい。
 常識的に考えて .exe まで入れるものかな?
 ウインドウIDからEXEのフルパスを得て、turukame.exe なのかを判断すべきなんじゃ・・・

154:名無しさん@お腹いっぱい。
12/11/10 15:29:11.11 U37qm/mfP
そもそもマウスカーソルの位置を監視する意味っていうのがわからないなぁ
画像のチェックで変化を監視するなら画像のチェック>変化があったらその場所をクリック(ツールを開く?)だけでいいと思うし

155:名無しさん@お腹いっぱい。
12/11/10 15:37:26.78 3rzXavYu0
while true
 IFb CHKIMG("turukame_icon.bmp",,0,0,1920,1080) then 
   BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,10)
  //BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y,10)
  //msgbox("メールを読み終えたらOKを押してね")
 endif
 SLEEP(0.1)
wend

・CHKIMGの画像検索範囲を狭めれば高速化
・メーラーアクティブにダブルクリックが必要なら2つめのBTNも有効に
・メール未読状態継続でiconに変化がない場合はmsgboxを有効に
・お好みに合わせてSLEEP()で調整

反応させたいときのアイコンをPrintScreenボタンでキャプチャし、
画像ソフトに貼り付け、切り出してスクリプトと同じ場所にbmpで保存

156:名無しさん@お腹いっぱい。
12/11/10 17:00:59.72 4gaPkaDwP
>>151
試しに同じ動作のものを書いてみようとしたが、意外にいい線いってるかもしれん。
常駐時の通常アイコンが画面内になく、なおかつアクティブウインドウが秀丸でなければ
秀丸メールを実行したいんだよね?

その考え方を生かすなら、ヒントとしては
>GETID("turukame.exe")

そこはプログラムの実行ファイル名じゃなくて、ウインドウのタイトル(一部でもOK)。
ちゃんとバージョンアップしてるなら GETID("秀丸メール")

あと、秀丸は確かに、既に起動していて常駐の状態でも実行ファイルを再度実行することアクティブになる。
exeファイルの実行はこちらの関数。
EXEC("C:\turukame\turukame.exe")

あと、ifbじゃなくてIF

while trueじゃなくて、while chkimg~ですっきりするかも

whileの中にIFを使って、IFの条件に合う場合はまたwhileのループに戻る方法はこちら
URLリンク(canal22.org)

IFの処理内容にCONTINUE。

157:名無しさん@お腹いっぱい。
12/11/10 19:48:54.06 sJ45IC2r0
>>156
while chkimg~ だとsleep入らないからマズイよ
それと、ifbは旧バージョンからのなごり。(ブロック形式のIF文) 現在ではifでもよい

158:名無しさん@お腹いっぱい。
12/11/10 21:02:21.69 U37qm/mfP
ブロックIF文の時のENDIF忘れの防止にもなるからいまだにIFB使ってるわ

159:名無しさん@お腹いっぱい。
12/11/10 23:12:16.03 e71uMGpA0
ifb=ifになったんだっけ
既存のものの書き換えで済むものしかいじってないから未だにifb使ってるけど

160:名無しさん@お腹いっぱい。
12/11/11 00:16:42.86 cbDQkjay0
>>157
一行じゃなくブロックの場合はIFBって認識だったけど
いつの間にか変わったんだねw

質問主がやろうとしたのは恐らく
while chkimg~
sleep(1)
IF アクティブういんどーID = 秀丸エディタID こんてぃにゅー
wend
EXEC 秀丸メール

的な。
このままじゃ一度新着メールが来てループを抜けると終わってしまうから
さらにこれを囲って、何らかの条件でループさせる必要があるけど。

161:名無しさん@お腹いっぱい。
12/11/11 01:13:09.68 PeXm1Xpu0
一行の時はif、複数行の時はifbって使い分けてる

162:名無しさん@お腹いっぱい。
12/11/11 12:27:22.49 EIVMwjIa0
call文で戻り値を取得したり、引数を参照渡しにしたりすることはできますかね
関数に収めるにはずいぶんと長くなってきたのでcallで呼び出そうと思ったら関数と同じようにはいかなかったよ・・・orz
値をいったんcsvとかに保存する案を思いついたんですが、もっとスマートにいかないでしょうか

あと上記について調べていると、
「関数はFUNCTIONS.UWSにまとめ、Call関数で呼び出すとスッキリ」
というのを某サイトで見たんですが、どういう使い方をすれば関数をまとめれるんでしょうか
PARAM_STRに数字を入れて、select文ぐらいしか思いつかなかった・・・

163:名無しさん@お腹いっぱい。
12/11/11 12:39:21.73 W2O3Etlh0
functions.uwsに関数定義しておいて
callしたあとに呼び出すだけでおk

164:名無しさん@お腹いっぱい。
12/11/11 12:47:21.71 EIVMwjIa0
こ、こいつはすげえ
スマートでスッキリしました 早い返答ありがとうございました

165:名無しさん@お腹いっぱい。
12/11/11 12:49:23.73 W2O3Etlh0
言葉が不足
callしたあとに通常の関数と同じように呼び出せばいい

で、今試したら関数呼び出すところより後ろでcallしても問題なかった
個人的には気分的に関数集は頭で呼び出すけど

166:名無しさん@お腹いっぱい。
12/11/11 14:49:39.77 yiBbj4pQ0
俺の場合、関数も多くなりすぎたので、
C言語に倣って、ヘッダファイル的なものを導入した。
・メイン.uwsがヘッダ.uwsをcall
・ヘッダ.wsが複数のライブラリ.uwsをcall
これで、メインからライブラリの関数を使用出来る。

167:名無しさん@お腹いっぱい。
12/11/11 21:15:28.00 EIVMwjIa0
またまた質問ですorz とあるファイルを初期化する処理を、
ID=FOPEN("a.csv",F_WRITE)
FCLOSE(ID)
ID=FOPEN("a.csv",F_READ or F_WRITE)
と行っていたんですが、何度も行うと開けるファイルの最大数エラーで落ちてしまいます

代替策としてFPUT(ID,"")を考えたのですが、処理が違うのか、同じように動いてくれません
別の方法や上記二つの違いなどがわかる方がいればお願いします

168:名無しさん@お腹いっぱい。
12/11/11 21:47:09.88 pqupsn940
>>167
>ID=FOPEN("a.csv",F_READ or F_WRITE)
に対する fclose() が無いだけとか?

169:名無しさん@お腹いっぱい。
12/11/11 21:47:25.87 nEYrXvAJ0
FPUT(ID,"",F_ALLTEXT)

170:名無しさん@お腹いっぱい。
12/11/11 22:23:30.37 EIVMwjIa0
>>168
そういえばそうだ・・・ 最初の2行で閉じる処理含めてると思ってた
が、全然そんなことはなかった よくよく考えるとただの凡ミスでしたorz
>>169
こんな便利なものもあるんですね お手軽そうなのでこちらと入れ替えてみます

お二人とも助言ありがとうございました

171:名無しさん@お腹いっぱい。
12/11/11 22:31:23.36 ZZM82fps0
FPUT(ID,"")だと、文字列""をファイルの最後に追記
FPUT(ID,"",F_ALLTEXT)だと、ファイル内容全体を文字列""に置き換え

172:名無しさん@お腹いっぱい。
12/11/12 02:54:41.06 OlDOm8Fh0
2012/11/12 UWSC Ver4.8c、 Pro版と Free版をリリースしました。

173:名無しさん@お腹いっぱい。
12/11/12 06:39:25.63 wpgyrI0S0
DOSCMD関数にてマルチ行の実行を出来るようにした
他はバグの修正っぽい感じだがこれかなり使いやすくなるな

174:名無しさん@お腹いっぱい。
12/11/13 09:14:04.79 /2/KNnBu0
新バージョン出たようだな
URLリンク(www.uwsc.info)


[Ver4.8c]
  uwsc.exeに引数で UNICODE文字を渡せなかったのを修正
  ループの中で DIM宣言の配列サイズを増やした時にエラーになるのを修正
  SENDSTR関数の追加モードにてサイズが大きいと遅いのを修正
  FUKIDASI関数にて ちらつくパターンがあるのを修正
  LockHard(True)実行中にコンテキストメニュのクリックが出来なかったのを修正
  IESETDATA関数にてSELECTの変更でダイアログが出た時にスレッドでの処理が出来なかったのを修正
  CLKITEM関数にて種別を省略したデフォルト処理で ClK_ACCも処理するようにした
  DOSCMD関数にて出力が ANSIだったのを UNICODEでの出力も出来るようにした
  DOSCMD関数にてマルチ行の実行を出来るようにした
  Pro版:
  CREATEFORM関数を使用すると桁数の大きい小数点演算で値が変になるパターンがあるのを修正
  Debugger: フォントのサイズ変更後にペースト処理にて表示が崩れる事があるのを修正
  Uws2Exe: バージョン情報の書き込みを出来るようにした

175:名無しさん@お腹いっぱい。
12/11/17 09:31:48.50 02OswU310
すいません
gettimeで出力する時間を
35分とか40分みたいに現在から一番近い時間に設定することは可能ですか?
今から31分だから35分 みたいな感じで出来ると便利ですが

176:名無しさん@お腹いっぱい。
12/11/17 09:57:30.32 02OswU310
5分毎の時間って意味です 

177:名無しさん@お腹いっぱい。
12/11/17 10:08:33.80 DD725hiA0
算数の知識を試してるのか

178:名無しさん@お腹いっぱい。
12/11/17 10:18:44.44 yBBowb8E0
取得した分を5で割って余りが0以外ならその値に1プラスして5をかける

179:名無しさん@お腹いっぱい。
12/11/17 10:21:48.88 yBBowb8E0
なんか分かりにくい日本語になってしまった気がしないでもないけど気にしない

180:名無しさん@お腹いっぱい。
12/11/17 10:37:18.66 fccdun/F0
>>175-176
何がやりたいのか自分でもわかってない
やりたいことをきちんとした文章で表現できてない。
要求仕様を日本語で正しく表現できれば、
後はそれをプログラミングするだけの簡単な内容だよ。
算数も小学校レベルでOK

181:名無しさん@お腹いっぱい。
12/11/17 10:46:01.36 03ErtcdC0
要するに、5分刻みで切り上げたいだけ?

182:名無しさん@お腹いっぱい。
12/11/17 10:58:41.85 os6AsipL0
>>176
GetTime(5 / (60 * 24)) //5分後の時刻を得る
nn = Int(G_TIME_NN / 5) * 5 //分を5の倍数にする
if nn < 10 then nn = "0" + nn //分を2桁にする
GetTime(0, G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + G_TIME_HH2 + nn + "00") //時刻変数に時間を設定する
MsgBox(G_TIME_YY4 + "年" + G_TIME_MM2 + "月" + G_TIME_DD2 + "日 " + G_TIME_HH2 + "時" + G_TIME_NN2 + "分" + G_TIME_SS2 + "秒")

>>178
その方法だと、年・月・日・時も補正する必要あるから面倒だよ。閏年とかも

183:名無しさん@お腹いっぱい。
12/11/17 11:03:48.95 02OswU310
>>182
ありがとう

184:名無しさん@お腹いっぱい。
12/11/17 11:30:27.01 os6AsipL0
>>183
ごめん凡ミス。きっちり5分後だとまずいんだった。最初の行は…
GetTime((60 * 5 - 0.01) / (60 * 60 * 24)) //約5分後の時刻を得る

185:名無しさん@お腹いっぱい。
12/11/17 11:58:49.54 4ErzmqGgP
一番近い時間とか計算で出すよりも実行フラグ作ってフラグが立ってる時のみG_TIME_NN MOD 5 なら実行とかした方が楽じゃね?

186:名無しさん@お腹いっぱい。
12/11/18 18:43:07.61 Va2B+ONc0
画像を開くにはどうすればいいですか?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch