以下のサンプルコードは実行時にDLLを動的にロードし、その中のエントリポイントを取得します。
DLLがロードでき、エントリポイントが正常に見つかってその機能を使用できる場合には true を返しますが不幸にもロードできなかった場合にはfalseを返します。
GetModuleHandle、GetProcAddress WindowsAPIを使用して指定した名前のエントリポイントを探していますが、この方法はDelphiがControlユニットなどでIMMを使用するのに使っています。
function FuncAvail(Lib, Func: string; var hnd: THandle; var ptr: Pointer): boolean; begin Result := false; hnd := 0; if LoadLibrary(PChar(Lib)) = 0 then begin Exit; end; hnd := GetModuleHandle(PChar(Lib)); if (hnd <> 0) then begin ptr := GetProcAddress(hnd, PChar(Func)); if (ptr <> nil) then begin Result := true; end; end; end;
コメント (0件)