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


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

Win32API質問箱 Build66



1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build65
pc11.2ch.net/test/read.cgi/tech/1208847084/

193 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:48:53 ]
>>192
Declared in Commdlg.h, include Windows.h

てっか、WindowsSDK入れてる?

194 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:00:45 ]
>>192
WIN32_LEAN_AND_MEAN

195 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:02:04 ]
>>191
WM_CREATE等最初に合成したものを
WM_PAINT時に使うということですか?

196 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:14:25 ]
>>182
ソースが突込み所満載なんだがまさか釣りじゃないよな?
本気で書いたソースならC言語についてもやばいぞ

197 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:20:08 ]
>>196
早く突っ込んでくれ

198 名前:192 mailto:sage [2008/05/21(水) 22:22:28 ]
>>194
自動で定義されていたそれをコメントアウトしたら解決しました。
ありがとうございます。
>>193さんもありがとうございました。

199 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:27:37 ]
>>197
なんでやねん

200 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:39:34 ]
>>197
じゃあケツ出せよ

201 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:41:15 ]
>>156
WM_ACTIVATEでフォーカスを失った時にブレークにはかかったのですが、
カスタムドローするのに必要なパラメータがなかったのでできませんでした。
オーナードローで頑張ればできるのでしょうか?



202 名前:デフォルトの名無しさん [2008/05/21(水) 22:52:33 ]
聞きたいのですが、
BITMAPの合成はどうやればよいのですか?

203 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:33:54 ]
>>195
別にWM_CREATE時じゃなくていいよ。
ちらつきを抑えたいからダブルバッファしたいんだろうからBMPは常にメモリ上にあるという仮定で、
WM_CREATEがきたときに別途mallocでもnewでもいいからバッファを確保して
そのバッファに背景BMPと表示したいBMPを合成したものを作成。
それをBitBltやStretchDIBitsのような描画関数で表示。

204 名前:デフォルトの名無しさん [2008/05/22(木) 00:00:22 ]
WindowsX.h にある
HANDLE_MSG() マクロを WM_COMMAND に対して使うとき、なんで return 0; になるんだ?

HANDLE_MSG() に渡すfn は void func(HWND...) でvoid型だし、HANDLE_MSG() 自体も

#define HANDLE_MSG(hwnd, message, fn) ¥
case message):return ((fn)(hwnd,...),0L)

でマクロ展開で「return 0;」が出てくる理由がよく解らん。

case message: return func(hwnd,...); //func() はvoid型

になるんじゃないの?

205 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:10:42 ]
カンマ演算子
return a, b;
returnされるのはbの値。

206 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 06:15:18 ]
メッセージクラッカって定義おかしくね?

WM_DRAWITEMとか、
> If an application processes this message, it should return TRUE.
って書かれてるのにvoidでreturn 0;されてるし

207 名前:デフォルトの名無しさん [2008/05/22(木) 06:17:56 ]
さんくす>>205
カンマ演算子、か。K&Rの演算子の表の一番下に確かにそんなのあるな。いままで意識した事無かった

ありがと

208 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:01:40 ]
>>205
間違っています。
以上。
↓次の方どうぞ

209 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:58:29 ]
キモ

210 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:05:15 ]
キモ

211 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:19:57 ]
ゲーム作ってるんだけど、メモリ内のデータ書き換え防止する方法とかある?
外部アプリからメモリ内サーチして書き換えるやつ防止したい。助言よろ。



212 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:34:36 ]
PCの電源切れ

213 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:03:18 ]
>>211
オンラインゲームじゃないなら、改造対策は不要では?

俺もゲーム作ってるんだが、ブログで改造対策のこと書いたら、
「改造対策する時間があるなら、ゲームのボリュームを増やすこととか、
もっとまともなことに使って欲しい」ってコメントが多かったよ。
改造するかはユーザーの自由なんだし、ユーザーとしては当然のコメントだが。

あと、いまどきの改造は、プロセスメモリエディタ+ルートキットで
やるから、改造を防止するなら、ユーザーから非難されることを覚悟のうえで
ルートキットじみたことをするしかないでしょうね。

214 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:37:49 ]
VC++のリソースエディタでダイアログボックスが作れますが、
そのような外観の(ダイアログでない)ウィンドウを、
ウィンドウクラスで作ったウィンドウに、コントロールぺたぺた貼って作ろうと思ったら、
(CWndではなく、RegisterClassEx、CreateWindow使って)

・ウィンドウの背景色は何故かCOLOR_BTNSHADOWが(ダイアログと)等しい
・エディットボックスはCreateWindowExの第1引数にWS_EX_CLIENTEDGEにしないと立体の縁にならない
・フォントはWM_SETFONT使ってサイズを変更しないと文字がでかい
・そもそもデフォルトのフォントが当然MS shell dlgではないようで、よくわからない
 (ただ、画面のプロパティから、故意にダイアログとウィンドウのフォントを違うものにした覚えはない…)

実際CreateDialogマクロでダイアログが作られるとき、ここら辺の設定ってどうなっているのですか?
このマクロもCreateWindowExを使ってウィンドウを作ると書いてあるので、
同じようなことが再現できるのではと思ったのですが…

(CreateDialogがウィンドウの大きさを決めるとき、フォントを元に作ってあるのはわかったのですが…)

215 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:05:33 ]
Process Explorerで表示できるWindow Titleと同じものを取得したいと思っています。
どうもGetWindowTextで取得できるものとは別物らしく、
Process ExplorerでJuneブラウザのWindow Titleを見ると、
GetWindow〜で取得した名前とは違うものを表示しているのがわかります。

一体Process Explorerで表示できるWindow Titleとは何者か、
どうすれば取得できるのでしょうか?


216 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:19:39 ]
>>215
ttp://msdn.microsoft.com/en-us/library/ms633520.aspx
> GetWindowText cannot retrieve the text of a control in another application.

217 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:34:18 ]
使えないAPIなんですか。エディットコントロールじゃなければいいはず…ですよね。
そうするとWindow Titleってなんだろうという話になりまして、

たとえばJaneブラウザを表示したとき、以下のようになります。

・キャプションバー、およびProcessExplorer上WindowTile列の表示
 →”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”

・GetWindowText、およびタスクマネージャ上の表示
 →”Jane”

”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”の文字列を取得したいわけですが、
その方法はご存知でしょうか?

218 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:44:31 ]
Delphiアプリケーションには実は見えないアプリケーションウィンドウがあって・・・

219 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:00:33 ]
>>218
VBアプリもそんな感じだったな
だからタスクバーに表示しないプロパティなんてのがあるんだけど

220 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:07:52 ]
spy++ とか眺めてみるといいと思う

221 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:14:12 ]
あー…なんとなくイメージ掴めてきました
メインウィンドウに見えたのは子ウィンドウで、だから取得できなかったと。

子ウィンドウのウィンドウタイトルの取得とか、そのあたりを調べてみます。

ありがとうございます



222 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:14:17 ]
>>217
こんなんでいいのかな?
#include<windows.h>
#include<stdio.h>

int main(void){
char title_buf[256], *class_name="TMainWnd";
int title_len;
HWND hwnd;

hwnd=FindWindow(class_name, NULL);
if(hwnd==NULL){
printf("Window not found. class name [%s]\n", class_name);
return 1;
}

title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
if(title_len>=0) printf("%s\n", title_buf);

return 0;
}

223 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:59:33 ]
>>222
どうもです
実行結果とSpy++を併せて見て、おおよそ理解できました。

デルファイでもVBでもデフォルトのクラス名でウィンドウを検索したのち、
目的の名前を取得する事ができました

ありがとうございます

224 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:05:00 ]
WM_GETTEXTでいいのでは

225 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:22:09 ]
> title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
今時こんなソース書く奴はJavaか.NETで開発してろよと思う

226 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:25:53 ]
>>225
この場合同書くのがいいのかも示して欲しいです

227 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:28:58 ]
>>225
>>226に同意
どう書けばよいのでしょう?
TCHARの話でしょうか?

228 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:29:51 ]
TCHARじゃないとかARRAYSIZE, _countofを使えとかnullは考慮されてるから-1はいらないとか
あたりじゃない?

229 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:54:54 ]
grep で include 内を探したけど ARRAYSIZE と _countof とは無かった
(使用しているのは MinGW)

230 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:59:28 ]
>>229
ARRAY_SIZE と countof はあったの?

231 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:01:22 ]
>>230
無いです



232 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:12:16 ]
_countofはMFCで定義されていてVC2005ぐらいからCRTでも定義されてた気がする
SDKにはwinnt.hにRTL_NUMBER_OFがある

いずれにしろ>>222は人に教えられる立場で無いのは確か

233 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:20:27 ]
結局は、どう書くのが模範解答になるんでしょう?

234 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:24:19 ]
WinAPIはよく知らんのだが、GetWindowText()の戻り値ってエラーチェックくらいしか使い途ないのかな。
>222もエラーチェックにしか使ってないようだし、>228によればナルターミネートはしてくれているようだし。
つーか、溢れたかどうかは単純には判らないのね。


235 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:27:19 ]
>>222
if(title_len>=0) printf("%s\n", title_buf);

if(title_len>0) printf("%s\n", title_buf);
にしないとエラーチェックになってない


236 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:18:19 ]
>>234
GetWindowTextLengthで事前にバッファ長を調べておけば済むだろ

237 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:27:58 ]
GetGlyphIndices()という、文字列からグリフインデックスに変換するAPIがありますが、
この逆のことをするAPI、つまりグリフインデックスから文字列に変換する方法って解りますか?

238 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:28:29 ]
バッファ足りなくてもバッファサイズまでコピーする仕様なの?
そうだとしても戻り値にNULL文字は数えないって書いてあるから
指定サイズ==戻り値ならあふれてるのでは。

239 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:31:24 ]
>>238
馬鹿丸出し

240 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:37:47 ]
>>236
しかし長さを調べた直後には別のウィンドウタイトルに変わっているかもしれない
そのアプリケーションがどう振舞うか想定できない

241 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:50:52 ]
そんな事を気にするなら他プロセスのテキスト取得なんて考えないことだ

(そろそろフックネタ出す奴が現れる頃か)



242 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:50:58 ]
仮にバッファ長が100だったとして、GetWindowTextLength()が99を返した後GetWindowText()が99を返しても、
その間にタイトルが書き換わっていたら溢れたかどうかは判らないのね。

243 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:10:58 ]
>>240>>242
必要十分なサイズのバッファを渡せば溢れる可能性は無くなる。

LPTSTR buffer = (LPTSTR)malloc(sizeof(TCHAR) * 0x7fffffff);
if (buffer == NULL) {
  MessageBox(NULL, _T("この環境では使用できません"), _T("メモリ買いましょう"), 0);
  exit(-1);
}
GetWindowText(hwnd, buffer, 0x7fffffff);

244 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:36:32 ]
32bit環境だと/3GBスイッチ使っても厳しそうだ。
VirtualAllocのMEM_RESERVEでアドレスだけ確保して、
SEHで動的にメモリを割り当てるのが現実解だな。

245 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:59:09 ]
ヒント:APIフック

246 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:19:35 ]
>>245
ヒント:お前は馬鹿

247 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:23:10 ]
たまにはブローとかアッパーとかさぁ

248 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:34:08 ]
まずはジャブから

249 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:51:37 ]
このスレの質が低下したのは、優秀な人は.NETに移ったからかもな。

250 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:58:09 ]
正解

251 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:06:48 ]
今頃気付いたのか



252 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:25:19 ]
Advanced Windowsの著者だって.NETの本を書くこんな世の中じゃ

253 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:38:50 ]
poizun

254 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:47:16 ]
poison

255 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:49:58 ]
prison

256 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:57:59 ]
ぬるぽ

257 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:07:37 ]
ga

258 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:35:25 ]
てか、sizeof(title_buf)-1を最後の引数に指定してるから、
溢れる可能性など皆無だが?
溢れるとかなに言ってるんだ?

259 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:47:09 ]
↑理解していない何か

260 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 06:45:56 ]
↑話を理解している天才

261 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:20:45 ]
↑流れを読む天才



262 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:22:11 ]
↓通常の流れに戻すという偉業を成し遂げた天才

263 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 10:30:46 ]
#include<stdio.h>
#include<windows.h>

int main(void)
{
/**/MSG msg;

/**/while(0 < GetMessage(&msg,NULL,0,0)){
/******/switch(msg.message){
/**********/case WM_KEYDOWN:
/**************/puts("keydown");
/**************/break;
/******/}
/**/}
/**/return 0;
}

これで何かkey押してもダメなんだけどどうすればいい?

264 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:01:41 ]
ウィンドウが無いじゃんか

265 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:06:59 ]
コンソールに表示させたいん

266 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:52:02 ]
な ん で ( ´∀` ) や ね ん !

267 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:31:48 ]
プロシージャならメッセきたら処理するけど
コンソールの場合はどうやるのか気になって

268 名前:デフォルトの名無しさん [2008/05/23(金) 13:12:02 ]
CreateWindowでスタティックテキストを作りました。
テキストの背景色を透過したいんだけど、いい方法ありませんか?

hStatic = CreateWindowEx(0, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);

269 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:20:55 ]
WS_EX_TRANSPARENTじゃダメ?

270 名前:268 mailto:sage [2008/05/23(金) 13:31:00 ]
>>269
ダメでした。。
レバーコントロールに入れたツールバーにスタティックテキスト置いてます。

hStatic = CreateWindowEx(WS_EX_TRANSPARENT, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);

271 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:39:40 ]
ツールバー、もしくはメニューの背景にブラシを使う事は出来ますか?



272 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:40:07 ]
WM_CTLCOLORSTATICでNULL_BRUSHを返す

273 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:12:15 ]
あるプロセスが、自分を起動したプロセス(親プロセス)を知る方法はありますか。

274 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:20:00 ]
ある

275 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:21:19 ]
レバーじゃなくてリバーだと思う

276 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:23:18 ]
"レバーコントロール" の検索結果 約 1,270 件中 1 - 10 件目 (0.13 秒)
"リバーコントロール" の検索結果 約 185 件中 1 - 10 件目 (0.13 秒)


277 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:27:41 ]
>>276
それ「レバー」「コントロール」別単語として検索した結果だから

278 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:27:45 ]
どっちもすくな!

279 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:28:42 ]
リバーコントロールでググると

もしかして: レバーコントロール
と出るなw

280 名前:268 mailto:sage [2008/05/23(金) 14:28:43 ]
>>272
どうも。WM_CTLCOLORSTATICメッセージ勉強してみます。

281 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:41:49 ]
>>277
馬鹿



282 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:02:53 ]
レバー ReBar に一致する日本語のページ 約 268 件中 1 - 30 件目 (0.03 秒)
リバー ReBar に一致する日本語のページ 約 277 件中 1 - 30 件目 (0.24 秒)

283 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:28:05 ]
rebarの発音はrí:bà:rだからリバーと読む方が実際の発音に近い
つまりレバーと読みたいならパーチーとかボデーとか言ってろってこった

284 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:33:15 ]
↑アホ

285 名前:デフォルトの名無しさん [2008/05/23(金) 15:35:16 ]
↑話を理解してない馬鹿

286 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:36:33 ]
ReBarをレバーっていうのは斬新だなw

287 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:39:09 ]
↑馬鹿

288 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:40:32 ]
>>281=>>284=>>287=大馬鹿

289 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:41:46 ]
↑はずれ

290 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:43:10 ]
>>281,>>284,>>287∈大馬鹿
という意味だろ

さすが大馬鹿

291 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:45:37 ]
レバーという表現は日本語としても定着してるんだからいんじゃね?



292 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:49:00 ]
>>290
はずれ

293 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:51:19 ]
意味が通じるなら、それでおk。






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

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

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