EXEからDLLを呼び出すプログラムを作っています。
EXEからロードしたDLLのハンドルをLoadLibrary関数を使用して、
モジュールハンドルを取得しようとしているのですが、戻り値が必ず[0]となってしまいます。
失敗していると言うのは分かるのですが、戻り値が[0]となってしまう要因をご存知の方、「〜のhelpを見ろ」でも結構ですので、お聞かせください。宜しくお願いします。
GetLastErrorで原因がわかります。
FormatMessageでエラーメッセージが取得できます。
こんな感じです。
var
MsgBuf: array [0..511] of Char;
hDLL: THandle;
Err: DWORD;
begin
//
hDLL := LoadLibrary('test.dll');
if hDLL = 0 then
begin
Err := GetLastError;
FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
nil,
Err,
0,
MsgBuf,
511,
nil
);
ShowMessage(String(MsgBuf));
// Free the buffer.
end;
end;
にしのさん、ありがとうございます。
ほんと、助かりました。
ツイート | ![]() |