記事カテゴリ

ユーザー機能


 2024年4月20日(土) 07:56 JST

[Delphi] 実行時にダイナミックにDLLをロードする

  • 投稿者:
  • 表示回数
    6,290

以下のサンプルコードは実行時に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;

トラックバック

このエントリのトラックバックURL:
https://www.blackcat.xyz/trackback.php/ProgramingFAQ_del0023

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。