1、动态调用DLL
unit formMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TfrmMain = class(TForm) btnLoadLibrary: TButton; procedure btnLoadLibraryClick(Sender: TObject); private { Private declarations } public procedure LoadDllZ; end; TfnC_ExecJS = function(_pSvgFrm :Pointer; _pcJS :PChar):integer;stdcall; TfnD_PassStId = function(_Sender :Pointer; _pcStId :PChar):integer;stdcall;var frmMain: TfrmMain;// *** g_fnExecJS : TfnC_ExecJS; g_fnPassStId :TfnD_PassStId;implementation{ $R *.dfm}{ TfrmMain }procedure TfrmMain.LoadDllZ;var hDll :Cardinal; iRtn :integer;begin hDll := LoadLibrary(PChar('DrRemoteCall.dll')); if hDll = 0 then begin Exit; end; @g_fnExecJS := GetProcAddress(hDll, 'ExecJS'); @g_fnPassStId := GetProcAddress(hDll, 'PassStId'); if not Assigned( g_fnExecJS ) then begin FreeLibrary(hDll); Exit; end; if not Assigned( g_fnPassStId ) then begin FreeLibrary(hDll); Exit; end; // ZC: 调用函数 iRtn := g_fnExecJS(nil, 'TestCC'); FreeLibrary(hDll); ShowMessage('out');end;procedure TfrmMain.btnLoadLibraryClick(Sender: TObject);begin LoadDllZ;end;end.
2、
3、
4、
5、