function - Delphi:用于从 DLL 库加载函数的通用函数
问题描述
IDE:德尔福 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;
解决方案
推荐阅读
- javascript - 想将下面的html转换成JSON结构
- python - 在 Python 中移动以使数组中的所有元素相等
- monaco-editor - 如何在 monaco 编辑器中添加自定义字体文件
- nginx - nginx 中的 URL 掩码
- vba - vba 中的 MSXML2.XMLHTTP60 对象不起作用
- c++ - 与 decltype 一起使用时的函数类型
- php - 类 App\Http\Controllers\CreateTagRequest 不存在
- google-bigquery - 按分区字段动态过滤时如何优化查询
- c# - 将图像从 PictureBox 拖放到另一个 PictureBox 并检查目标 PictureBox 是否正确
- java - Android:获取有关哪个窗口获得焦点的通知,通过 Android 服务存储和提供该信息