Delphi:从DLL库加载函数的通用函数

时间:2018-06-09 08:33:10

标签: function delphi dll

IDE:Delphi XE6

我正在尝试编写一个从DLL库加载函数的泛型函数。我不确定这个看似正常工作的代码(在User32.dllBlockInput函数上测试过)是否编写良好或需要进行重大/小调整。因为我绝不是DLL专家,所以我问。

function LoadFunctionFromLibrary(const LibraryName, FunctionName: string; out FunctionPointer: Pointer): Boolean;

var
  LibraryHandle, ModuleHandle: THandle;

begin
  Result := False;
  FunctionPointer := nil;

  LibraryHandle := Winapi.Windows.LoadLibrary(PChar(LibraryName));
  if LibraryHandle = 0 then Exit;

  try

    ModuleHandle := Winapi.Windows.GetModuleHandle(PChar(LibraryName));

    if ModuleHandle <> 0 then begin
      FunctionPointer := Winapi.Windows.GetProcAddress(ModuleHandle, PChar(FunctionName));
      if FunctionPointer <> nil then Result := True;
    end;

  finally
    Winapi.Windows.FreeLibrary(LibraryHandle);
  end;
end;

0 个答案:

没有答案