1.联合使用LoadLibrary和GetProcAddress即可达到动态调用DLL的效果,例子:
Var
SHEmptyRecycleBin : TSHEmptyRecycleBin ;
LibHandle : THandle ;
begin
LibHandle:=LoadLibrary(PChar('Shell32.dll')) ;
If LibHandle<>0 then
@SHEmptyRecycleBin:=GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')
Else Begin
MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);
Exit ;
End ;
If @SHEmptyRecycleBin <> nil then
SHEmptyRecycleBin(Application.Handle ,
'' ,
SHERB_NOCONFIRMATION or
SHERB_NOPROGRESSUI or
SHERB_NOSOUND ) ;
FreeLibrary(LibHandle);
@SHEmptyRecycleBin := nil ;
End;
Var
SHEmptyRecycleBin : TSHEmptyRecycleBin ;
LibHandle : THandle ;
begin
LibHandle:=LoadLibrary(PChar('Shell32.dll')) ;
If LibHandle<>0 then
@SHEmptyRecycleBin:=GetProcAddress(LibHandle, 'SHEmptyRecycleBinA')
Else Begin
MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0);
Exit ;
End ;
If @SHEmptyRecycleBin <> nil then
SHEmptyRecycleBin(Application.Handle ,
'' ,
SHERB_NOCONFIRMATION or
SHERB_NOPROGRESSUI or
SHERB_NOSOUND ) ;
FreeLibrary(LibHandle);
@SHEmptyRecycleBin := nil ;
End;
....
Function DB(H:THandle;Var Aqu:TADOQuery):integer;
Begin
Application.Handle:=H;
With Aqu do
Begin
Close;
Sql.Clear;
Sql.Add();
Open;
Result:=0;
End;
Unit CallDemo
;;;;;
ADOConnection1.Conncetionstring:=
ADOQuery1.Connection:=ADOConnection1;
IF DB(ADOQuery1)=0 Then
.....
你试吧,最好你的问题具体一点!
哪位大哥能详细的告诉我么?十分谢谢!谢谢!