IDE:Delphi XE6
我正在尝试编写一个从DLL库加载函数的泛型函数。我不确定这个看似正常工作的代码(在User32.dll
和BlockInput
函数上测试过)是否编写良好或需要进行重大/小调整。因为我绝不是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;