トップページ⇒tech
1001コメント290KB

Win32API質問箱 Build47

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/13(月) 08:56:12
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0281デフォルトの名無しさん2006/11/22(水) 16:59:55
つか、MSDNの警告に従えば、GetMessageはwhileの条件式に書かないほうがいいってことだから
while(true)とかで回すことになって、益々ヤバイことにならんか
02822712006/11/22(水) 18:30:03
>>279
なるほど。
こわいですが、わざと変な値を使ってエラーさせて実験してみます。
0283デフォルトの名無しさん2006/11/22(水) 18:48:41
他のプログラムの出しているウィンドウへのキー入力もフックに引っかけたくて、
DLLを記述して、

hhk = SetWindowsHookEx(WH_KEYBOARD,// フックタイプはキーストローク
hHOOKKEY, // フック処理プロシジャへ
hInstDLL, //フックプロシジャは同一ファイルで記述
NULL); // 対象スレッドはすべて
if (hhk == NULL)
  MessageBox( NULL,TEXT("フックかけられない"),TEXT("Error"),MB_OK)

と記述したところ、フック設定は毎回うまく行っているように見えるのですが、

自分で作成しウインドウへの入力は拾えても、他のプログラムの出した窓への入力
は拾えません。「グローバルフック」はキーロガーのように全部拾ってくれる
と思っていたのですが、こんなもんなんでしょうか。

WinXP,VisualC++2005 です。
0284デフォルトの名無しさん2006/11/22(水) 19:35:05
>>283
拾えるのはDLLの注入されたプロセス自身だけ
他のプロセスのメッセージを拾いたいなら、
何らかのプロセス間通信を使って自分のプロセスに送らないと駄目
0285デフォルトの名無しさんNGNG?2BP(200)
>>283
グローバルフックを仕込んだdllをパスの通ったディレクトリに置く。
0286デフォルトの名無しさん2006/11/22(水) 19:53:25
>>285
パスが通ってる必要はない
0287デフォルトの名無しさん2006/11/22(水) 22:04:48
フックプロシージャでメッセージを受け取るウィンドウのハンドルを取得することはできないのでしょうか?
フックの種類はWH_CBTです
0288デフォルトの名無しさん2006/11/22(水) 22:16:12
>>287
>>272
02892872006/11/22(水) 22:21:17
>>288
MSDN見たら書いてありましたorz
nCodeによってはwParamとかに入ってるんですね
スレ汚ししてしまってすみませんでした
0290デフォルトの名無しさん2006/11/23(木) 00:02:42
SetStdHandleでググって見つかるサンプルって子プロセスの標準出力等を親からReadFileで読み出す感じなのが大半だと思うのですが
自プロセスでputsとかで出力したものをコンソールに出力せずあとでReadFileでまとめて取得したくて下記のようなコードを書いたのですがうまくいきません
int main() {
  SECURITY_ATTRIBUTES sa;
  HANDLE hRead, hWrite;
  sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  sa.lpSecurityDescriptor = NULL;
  sa.bInheritHandle = TRUE;
  if(!CreatePipe(&hRead, &hWrite, &sa, 0)) {
    puts("error CreatePipe");
    return 1;
  }
  if(!SetStdHandle(STD_OUTPUT_HANDLE, hWrite)) {
    puts("error SetStdHandle");
    return 1;
  }
  const char msg[] = "Hello from new stdout";
  puts(msg); // 新しく設定されたstdoutに出力
  fflush(stdout);
  FlushFileBuffers(hRead);
  FlushFileBuffers(hWrite);

  char buf[1024] = {0}; DWORD read = 0;
  ReadFile(hRead, buf, sizeof(buf)-1, &read, NULL);

  if(strcmp(buf, msg) != 0) {
    puts("failed");
    return 1;
  }
  return 0;
}
0291デフォルトの名無しさん2006/11/23(木) 01:50:30
>>290
的外れだったらすまんが
CreateConsoleScreenBuffer
関連を使えばバックバッファを作成できるけど
02922902006/11/23(木) 03:18:04
>>291 レスありがとうございます
CreatePipeのくだりを消して
HANDLE hWrite = CreateConsoleScreenBuffer(
  GENERIC_WRITE | GENERIC_READ,
  FILE_SHARE_READ | FILE_SHARE_WRITE,
  NULL,
  CONSOLE_TEXTMODE_BUFFER,
  NULL);
SetConsoleActiveScreenBuffer(hWrite);
を追加したのですがReadFileではなにも読めませんでした

rubyで実現できたのですがこれをWin32APIでもやりたいです
下記は標準出力を横取りしてフィルタリングや整形などを行えます

$stdout_sv = STDOUT.dup          # STDOUT を保存
class MyOut < IO
  def write(str)
    return $stdout_sv.write("-->" + str) #デコレーションして本物の標準出力に
  end
end
STDOUT.reopen(MyOut.new(0)) #フィルタ設置 (ファイルディスクリプタ適当
puts "Hello from new stdout\n"
STDOUT.flush
STDOUT.reopen($stdout_sv)
0293デフォルトの名無しさん2006/11/23(木) 07:37:04
rubyのソースを読めば方法がわかる予感。
0294デフォルトの名無しさん2006/11/23(木) 08:58:52
ていうか標準関数を使うべきかと

以前、win32アプリでAllocConsoleを使ってコンソールを作成した後標準出力をコンソールスクリーンに割り当てる
って事をやったんだけどAPIでやるとcoutやprintfは機能しなかった。
だけど標準関数(たしかfreopen)を使うとちゃんと出力されたし、
GetStdHandleを使って調べてもちゃんとスクリーンのハンドルが返ってきた

ちなみにcoutを開き直すのは駄目でした(coutはちゃんと出力できたけどprintfとかが駄目)
0295デフォルトの名無しさん2006/11/23(木) 09:02:34
あと入出力の関数は標準関数かAPIかで統一した方がいいと思う
0296デフォルトの名無しさん2006/11/23(木) 10:25:35
そもそもAPIで標準出力の出力先を変更しようというのではなく、
プログラム内で出力先を選べるようにしたほうが楽だと思う。

C++ならstd::ostreamを引数にとって、呼ぶ側が必要に応じて
std::ostringstreamのオブジェクトを渡すようにするとかさ。
0297デフォルトの名無しさん2006/11/23(木) 19:37:22
質問があります。
拡張子がrtfのファイルに関連するアイコンデータがプログラムから
ひつようなのですが、レジストリエディタで確認すると
"%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE",1
になっていました。
このリソースIDは何番にしたらいいですか?ワードパッドみても
リソースIDが一番のアイコンはありませんでした。

よろしくお願いします
0298デフォルトの名無しさん2006/11/23(木) 19:51:50
標準のスタティックコントロールが自動折り返しの設定になっているときに、
複数行の文字列が表示される領域を正確に知りたいのですがどうすればいいでしょうか?
GetTextExtentPoint32だと折り返しがある場合に位置がずれてしまうのです。
0299デフォルトの名無しさん2006/11/23(木) 20:01:14
>>297
正の値 : 0から始まるアイコンのインデックス
負の値 : リソースID(ex. -3 -> リソースID 3)
03002972006/11/23(木) 20:14:53
>>299
理解できました。
ありがとうございました。
0301デフォルトの名無しさん2006/11/23(木) 20:24:37
fopen fout
と
CreateFile
WriteFile
は
どっちが速い?
0302デフォルトの名無しさん2006/11/23(木) 20:29:01
>>301
実装と用途による。
0303デフォルトの名無しさん2006/11/23(木) 20:30:54
>>301
foutが何かは知りませんが、大き目のファイルを一気に書くような用途では
ストリームを使ってもAPIを直接使っても大して速度は変わらないと思います。
∵一般的にI/Oに時間が掛かりますから。
0304デフォルトの名無しさん2006/11/23(木) 20:34:39
根拠なしに適当いうと
たぶんfopen()とかはCreateFileで実装されてる
0305デフォルトの名無しさん2006/11/23(木) 20:41:39
それ以外でどう実装しろと
0306デフォルトの名無しさん2006/11/23(木) 20:58:57
直にディスクアクセスする方法がある。
って結局ドライブ自体かvwin32をCreateFileで開かないといけないわけか。
0307デフォルトの名無しさん2006/11/23(木) 21:00:06
隠しAPIがあるとか
0308デフォルトの名無しさん2006/11/23(木) 21:19:00
NtCreateFileとかZwCreateFileとか
0309デフォルトの名無しさん2006/11/23(木) 21:53:00
Cランタイムのソースコードは誰でも見れるだろ。
正解は304
0310デフォルトの名無しさん2006/11/23(木) 22:08:18
解放し忘れたメモリもプロセスが終了するときに解放されると聞いたことがあるのですが、
同様にLoadLibraryで読み込まれたDLL内で確保したメモリがFreeLibraryで解放されるのでしょうか?
0311デフォルトの名無しさん2006/11/23(木) 22:18:51
>>310
されない
DLL作る人は気をつけよう
0312デフォルトの名無しさん2006/11/23(木) 22:32:56
>>311
レスありがとうございます
解放されないんですね、気をつけます
0313デフォルトの名無しさん2006/11/23(木) 22:35:23
されないのか、知らんかった
・・・考えたら、されたら困るよな・・・
0314デフォルトの名無しさん2006/11/23(木) 22:58:05
COM最強杉とだけ言っておこう
0315デフォルトの名無しさん2006/11/23(木) 23:00:09
>>314
違う最強なのは僕
0316デフォルトの名無しさん2006/11/23(木) 23:01:35
なのは最強
0317デフォルトの名無しさん2006/11/24(金) 00:14:51
最強はケンイチ
0318デフォルトの名無しさん2006/11/24(金) 01:55:46
アニメーションを行うためにタイマーイベントでWM_PAINTを発行して、
WM_PAINT内に以下の記述をしています。

 draw() // OpenGLの描画関数
 SwapBuffers(wglGetCurrentDC());
 HDC hdc = BeginPaint(hwnd, &ps);
 〜マウスドラッグによる四角の描画〜
 EndPaint(hwnd, &ps);

すると、マウスドラッグで描かれた四角の部分がチラついてしまいます。
このチラツキを防止するにはどうすればよろしいでしょうか。
0319デフォルトの名無しさん2006/11/24(金) 01:57:53
画面に直接書かずバックバッファのほうに書け
03203182006/11/24(金) 02:25:33
>>319
どうも。以下にようにしてもチラつきました。
何か間違ってるでしょうか?

HDC hdc_bkbuf = CreateCompatibleDC(hdc);
HBITMAP hbmp = CreateCompatibleBitmap(hdc, width, height);
HBITMAP hbmp_old = (HBITMAP)SelectObject(hdc_bkbuf, hbmp);
〜hdc_bkbufに四角を描画〜
BitBlt(hdc, posx, posy, width, height, hdc_bkbuf, 0, 0, SRCCOPY);
SelectObject(hdc_bkbuf, hbmp_old);
DeleteObject(hbmp);
DeleteDC(hdc_bkbuf);
0321デフォルトの名無しさん2006/11/24(金) 02:33:51
WM_TIMERの代わりにWM_MOUSEMOVEで更新するとか
SendMessageじゃなくPostするとか
0322デフォルトの名無しさん2006/11/24(金) 02:35:20
>>320
SwapBuffersはどこ行った?
03233182006/11/24(金) 02:44:33
>>322
 draw(); // OpenGLの描画関数
 SwapBuffers(wglGetCurrentDC());
 HDC hdc = BeginPaint(hwnd, &ps);
 〜320のコード〜
 EndPaint(hwnd, &ps);
 SwapBuffers(hdc);
てな具合です。

>>321
すみません。いまいちよく分かりませんでした。
0324デフォルトの名無しさん2006/11/24(金) 02:53:47
それじゃまったく意味ないだろ。
OpenGLの裏画面ってGDIじゃ描画できないんだっけ?
03253182006/11/24(金) 03:00:17
そうですね。意味ないですね…。

> OpenGLの裏画面ってGDIじゃ描画できないんだっけ?
GLとGDIでコンテキストを分けてそれぞれ独立に描画できれば
自由度があって便利なんですが、やり方がよくわからず。
03263212006/11/24(金) 03:00:32
case WM_TIMER
・・・
WM_PAINを発行
を
case WM_MOUSEMOVE
if(ドラッグの最中){
PostMessage(自分,WM_PAINT・・・)
}
な具合。
0327デフォルトの名無しさん2006/11/24(金) 03:06:06
WM_PAINTって自分で送るものじゃないんじゃないの?
03283182006/11/24(金) 03:11:08
>>327
InvalidateRectでいいですよね。

>>326
それだとドラッグの最中に四角が描画されて、
同時にタイマーでアニメーションが描画されて、結局チラついちゃう気が…。

GL側で全部描こうかなぁ。
半透明とか楽だし…。
0329デフォルトの名無しさん2006/11/24(金) 04:24:41
> GL側で全部描こうかなぁ。
GDIで書く方法が不明ならそれが一番いいかと。
0330デフォルトの名無しさん2006/11/24(金) 06:39:42
そもそもWM_PAINTで描くからチラつくんだが
WM_PAINTはあくまで再描画するためのイベントだ
それ以外の描画は他タイミングで描け
つか、タイマー使ってんならWM_TIMERで描きゃいいじゃないかよ
0331デフォルトの名無しさん2006/11/24(金) 09:25:43
WM_ERASEBKGNDで描けばいいんじゃね
03322982006/11/24(金) 15:23:54
API組み合わせたら、たぶん自己解決しました
0333デフォルトの名無しさん2006/11/24(金) 15:40:37
腰痛い
0334デフォルトの名無しさん2006/11/24(金) 16:56:55
ダブルバッファリングでちらつくのは
InvalidateRect(hWnd, NULL, TRUE);ってやってるからじゃないかな
最後FALSEでやっていろいろ調整するといいかも

その前にマウスドラッグで四角書くのにタイマー使う必要があるのかが謎だけど
0335デフォルトの名無しさん2006/11/24(金) 17:59:40

LoadLibraryEx()でDLLのインスタンスハンドル入手した後
どうやって解放すればいいですか?
どなたかお願いします。
0336デフォルトの名無しさん2006/11/24(金) 18:04:39
>>335
ハンドルというかただのアドレスだ。開放する必要はない。
DLLの開放という意味ならMSDNを見れ
0337デフォルトの名無しさん2006/11/24(金) 18:39:04
>>324-325
OpenGL のレンダーターゲットを BMPイメージonメモリDC にして そっちを GDI 描画
WM_PAINT はBMPを(BitBlt で)可視化 で多少融通が利くよ
0338デフォルトの名無しさん2006/11/24(金) 18:48:46
ハードウェアアクセラレーション利く環境少ないけどな。
0339デフォルトの名無しさん2006/11/24(金) 19:21:01
ウィンドウプロシージャをC++のクラスでうまくラッピングしてるライブラリってない?
JavaのWindowListenerみたいな感じのが欲しいんだけど・・
0340デフォルトの名無しさん2006/11/24(金) 19:25:17
ライブラリを求めるんならMFCでも使っとけば?
他人が作ったライブラリを中途半端に使うより、自分で必要な機能を盛り込んで作った方がいいけどな
0341デフォルトの名無しさん2006/11/24(金) 19:26:51
windowsx.h
0342デフォルトの名無しさん2006/11/24(金) 19:28:36
MFC・windowsx.hはイベントハンドラ定義するのにマクロ使うんで
個人的に好みじゃないんだよな・・
適当に作ってみるか。レスありがとう。
0343デフォルトの名無しさん2006/11/24(金) 19:36:55
バッチファイルをアプリを起動することなく、
(すなわち自分のプロセス内で)実行する方法って
ありますでしょうか?
0344デフォルトの名無しさん2006/11/24(金) 19:40:36
>>343
バッチファイルを実行するコードを全部自分で書く。
0345デフォルトの名無しさん2006/11/24(金) 20:07:33
cmd.exe/command.comを介入させたくないのか、
バッチの中に書いてあるコマンドも内蔵させる必要があるのかだな。

あるいは単にコンソールウインドウを不可視にしたいだけのかな?
0346デフォルトの名無しさん2006/11/24(金) 21:42:42
>>342
.NET FrameworkのWindows Forms。
あとMS発祥といえばATL/WTL。こっちはマクロ使うけど。
0347デフォルトの名無しさん2006/11/24(金) 22:25:52
Qt4はどうよ
03483432006/11/24(金) 22:53:39
シャットダウン中にバッチファイルを実行したいんです。
WM_QUERYENDSESSION?かなにかが飛んできたときはもう
新規実行はできないと思うので、自分でやりたいのです。
0349デフォルトの名無しさん2006/11/24(金) 23:20:05
>>348
>>344
新プロセス起動できないんなら、外部コマンドも取り込まないとな。
0350tsurarete yarou.2006/11/24(金) 23:42:25
>>348
OS は何?

すれ違いだけど、Windows 2000/XP/Server 2003 なら

http://q.hatena.ne.jp/1140862112

が参考になるかも。
0351デフォルトの名無しさん2006/11/24(金) 23:42:44
>>348
直接の答えではないけれど、ログオフスクリプトではだめか?
0352デフォルトの名無しさん2006/11/24(金) 23:57:23
mem_bmp = CreateCompatibleBitmap(hdc, 800, 800);
mem_hdc = CreateCompatibleDC(hdc);
SelectObject(mem_hdc, mem_bmp);
int a = GetDeviceCaps(mem_hdc, HORZRES);
int b = GetDeviceCaps(mem_hdc, VERTRES);

aとbの値が800にならないんだけどなんでだろう
0353デフォルトの名無しさん2006/11/25(土) 00:07:56
実際にはどうなるんだよ
0354デフォルトの名無しさん2006/11/25(土) 00:08:29
言語スレ行って質問したらWin32APIのほうが質問場所は良いって
言われたので来ました。

ttp://support.microsoft.com/kb/403844/ja
PGが起動してるときだけスクリーンセーバが動かないPGを作ってるんだけど
リンク先のやり方だとパスワード保護されてるとうまく動かないんです
パスワード保護の時って発行されてるメッセージって違うみたいですが
どうすればフック出来るか知りたいんですが
03553522006/11/25(土) 00:09:53
>>353
実際にはデスクトップ領域の解像度が入った
1600と1200みたいな
0356デフォルトの名無しさん2006/11/25(土) 00:10:16
>>352
解像度が800x800のディスプレイを接続すればいいと思うよ。
0357デフォルトの名無しさん2006/11/25(土) 00:24:15
>>352
対象がビットマップじゃなくてデバイス(スクリーン)だから
03583522006/11/25(土) 00:37:44
>>357
スクリーンと互換のデバイスってことでスクリーンの値を取得してるのか・・・
ビットマップの値を取得する方法はないですか?
0359デフォルトの名無しさん2006/11/25(土) 00:42:04
>>358
GetObject
0360デフォルトの名無しさん2006/11/25(土) 00:47:37
>>354
WlxIsLockOk
03613522006/11/25(土) 00:47:37
ありがとう
GetBitmapDimensionEx(mem_bmp, &sz);
でいけた
0362デフォルトの名無しさん2006/11/25(土) 01:01:11
初めて知った<GetBitmapDimensionEx。
03633522006/11/25(土) 01:18:04
と思ったら2回目以降使えなくなった
あらかじめSetBitmapDimensionExでサイズを設定しておかなきゃいけないらしい
なんで初めだけ取得できたんだろ・・・?
0364デフォルトの名無しさん2006/11/25(土) 05:00:54
セイント聖矢のジェミニを思い出したのは俺だけで良いはずだ
0365デフォルトの名無しさん2006/11/25(土) 09:27:29
>>361
それで得られるサイズの単位はピクセルじゃないぞ
0366デフォルトの名無しさん2006/11/25(土) 09:31:38
どうせユーザ定義なんだから何でも良いんじゃね?
0367デフォルトの名無しさん2006/11/25(土) 09:59:12
>>359で答えが出てるのに、何悩んでるんだろう?
0368デフォルトの名無しさん2006/11/25(土) 10:02:37
ここで聞くべきかDirectXスレで聞くべきか
COMスレで聞くべきか迷ったのですが…

FrapsやGameCamなどのDirectX乗っ取り型のキャプチャソフトなんですが
どうもキャプチャ動画を見たところDirect3Dのフロントバッファ(かバックバッファ)を
直接取得して録画してるみたいなんですが、どうやって取得しているのかその挙動が良く分かりません。
最初はSetWindowsHookEx()で全プロセスにdllをマッピングして、PEヘッダを見て
Direct3Dの初期化関数(Direct3DCreate8()等)を見つけたらフックして、
出てきたインターフェース(IDirect3DDevice8等)のGetFrontBufferData()を呼び出して
フロントバッファをコピーしているのかと思ったのですが、PEヘッダが暗号化されて
INTにDirect3DCreate8等が存在しないゲーム(具体的にはMaster of Epicというゲームです)でも
ちゃんと録画が可能な上に、この方法だとゲーム起動前にキャプチャプログラムを
起動しないといけない(Direct3DCreateをゲームが呼び出す前にフックしないといけない)ので
ゲーム起動後に起動してもちゃんと動作するFraps等では違った技法を使ってると思うのですが、
その方法がどうしても思い浮かびません。漠然とですがもしかしてIDirect3DDeviceには
メモリ検索で探せるような特定のメモリパターンがあるのかな?と思ったりするのですが…
ご存知の方いらっしゃいましたら是非ご教授お願いしたいです。

しかし…見返してみると…長文杉でホント申し訳ないorz
0369デフォルトの名無しさん2006/11/25(土) 10:15:20
>>368
CLSID乗っ取って、アプリとDirectXの間に一枚噛ませてるんじゃね?
0370デフォルトの名無しさん2006/11/25(土) 11:10:56
>>360
�dクス
0371デフォルトの名無しさん2006/11/25(土) 11:13:18
エクスプローラでファイルを自ウィンドウにD&Dして、フォルダパスを取得することはできるのですが、
逆に自ウィンドウからD&Dして(Spy++のファインダツールのように)エクスプローラを指定→
フォルダパスを取得する方法はどのようにすればいいですか?

アドレスバーから取得する方法を試してみたのですが、
非表示の環境の場合に取得できないのでうまくいきませんでした。
CabinetWClass
-WorkerW
-RrBarWindow32
-ComboBoxEx32
-ComboBox
-Edit ←ここにWM_GETTEXTを投げてみました
0372デフォルトの名無しさん2006/11/25(土) 12:12:13
>>371
無理じゃね?
DnDのファイルコピーとかのオペレーションは受けとり側が操作するから。
ターゲットソースは受け取り側にファイル名渡すだけ。
0373デフォルトの名無しさん2006/11/25(土) 13:00:10
イベントの飛ぶ順序ってどの本に載ってるの?

例えばダイアログをリサイズしたときに、
どういうイベントがどういう順番で飛ばされるのか、などを知りたいのだけど
03743712006/11/25(土) 13:02:15
>>372
そうですか(´・ω・`)
残念。。
0375デフォルトの名無しさん2006/11/25(土) 13:07:11
>>373
つ[Spy++]
0376デフォルトの名無しさん2006/11/25(土) 13:08:45
>>373
MSDN
>Size and Position Messages
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp
0377デフォルトの名無しさん2006/11/25(土) 14:27:21
>>368
全く同じことしようとしている人がいて驚愕>MoE
0378デフォルトの名無しさん2006/11/25(土) 16:02:34
簡単なサンプルプログラムをコンパイルするのに、
>cl test.c user32.lib gdi32.lib

みたいに*.libっていうファイルをリンクしないとエラーが出るんですが、
これって静的リンクになっちゃってるってことですか?
0379デフォルトの名無しさん2006/11/25(土) 16:48:20
そのLIBはDLLへの参照を含んでいるインポートライブラリ。
静的ライブラリがリンクされているわけではない。
0380デフォルトの名無しさん2006/11/25(土) 17:17:15
>>379
なるほどそうなんですか。
.libファイルをインポートライブラリ・スタティックリンクライブラリと
見分ける方法でもあるのかな??
0381デフォルトの名無しさん2006/11/25(土) 17:43:15
>>380
dumpbinでどうよ?詳しく使った事無いけど。
■ このスレッドは過去ログ倉庫に格納されています