5,379
社区成员
发帖
与我相关
我的任务
分享
function ShowDllForm(DLLName: string; ProcName: string; Owner: TForm): Boolean;
var
DllHd: THandle;
ShowDllFormProc: Pointer;
OwnerHandle: HWND;
begin
if Owner = nil then
OwnerHandle := 0
else
OwnerHandle := Owner.Handle;
//ShowMessage(DLLName );
if not FileExists(ExtractFilePath(Application.ExeName) + DLLName) then
begin
MessageBox(OwnerHandle, PChar('找不到文件' + DLLName + ',请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
Result := False;
Exit;
end;
DllHd := LoadLibrary(PChar(DLLName));
if DllHd = 0 then
begin
ShowMessage(DLLName);
MessageBox(OwnerHandle, PChar('加载' + DLLName + '错误,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;
ShowDllFormProc := GetProcAddress(DllHd, PChar(ProcName));
// ShowMessage('test');
if ShowDllFormProc = nil then
begin
MessageBox(OwnerHandle,
PChar('查找' + DLLName + '中函数' + ProcName + '出错,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;
// ShowMessage('test2');
try
Result := TShowDllFormProc(ShowDllFormProc)(Owner);
except
MessageBox(OwnerHandle,
PChar('执行' + DLLName + '中函数' + ProcName + '出错,请检查该模块!'), '提示',
MB_OK or MB_ICONEXCLAMATION);
FreeLibrary(DllHd);
Result := False;
Exit;
end;
FreeLibrary(DllHd);
end;
//调用
ShowDllForm('Sys.dll','ShowSYSParamsSetForm',Self);
//SYS.dll中ShowSYSParamsSetForm 写法
function ShowSYSParamsSetForm(Owner : TForm ) : Boolean;stdcall ;
var
frmParamsSet : TfrmParamsSet ;
begin
Application.Handle := CommData.ApplicationHandle ;
frmParamsSet := TfrmParamsSet.Create(Owner );
frmParamsSet.ShowModal;
Result := True ;
FreeAndNil(frmParamsSet);
end;