首页 > 解决方案 > Delphi:用于从 DLL 库加载函数的通用函数

问题描述

IDE:德尔福 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;

标签: functiondelphidll

解决方案


推荐阅读