动态加载DLL
2007-04-18 23:31
253 查看
unit DynLoad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
THandle = integer;
TAdd10 = function(number:integer):integer; stdCall;
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
handle:THandle ;
FPointer: TFarProc;
MyFunc : TAdd10 ;
begin
try
temp := StrToInt(Edit1.Text );
handle := LoadLibrary('MyFirstDLL'); {装载DLL到内存}
if handle <> 0 then
try
FPointer := GetProcAddress(handle ,'Add10'); {获得函数的入口地址}
if FPointer <> nil then
begin
MyFunc := TAdd10(FPointer) ;
temp := MyFunc(temp) ; {使用函数操作}
Edit1.Text := IntToStr(temp);
end;
finally
FreeLibrary(handle); {释放DLL}
end
else
ShowMessage('未找到动态链接库MyFirstDLL.dll');
except
ShowMessage('请输入一个整数!');
end;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
THandle = integer;
TAdd10 = function(number:integer):integer; stdCall;
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
handle:THandle ;
FPointer: TFarProc;
MyFunc : TAdd10 ;
begin
try
temp := StrToInt(Edit1.Text );
handle := LoadLibrary('MyFirstDLL'); {装载DLL到内存}
if handle <> 0 then
try
FPointer := GetProcAddress(handle ,'Add10'); {获得函数的入口地址}
if FPointer <> nil then
begin
MyFunc := TAdd10(FPointer) ;
temp := MyFunc(temp) ; {使用函数操作}
Edit1.Text := IntToStr(temp);
end;
finally
FreeLibrary(handle); {释放DLL}
end
else
ShowMessage('未找到动态链接库MyFirstDLL.dll');
except
ShowMessage('请输入一个整数!');
end;
end;
end.
相关文章推荐
- 动态加载dll
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- DLL的动态加载方法
- 加载动态DLL,实现查询进程路径
- 【转载】动态加载dll
- 发现assembly的dll在temp里,AppDomain无法动态加载那个assembly
- How to load a dll resource dialog box at an application Dialog box (怎么在一个应用程序对话框动态加载DLL里的资源对话框)
- C#动态加载dll扩展系统功能的方法
- QT 动态加载dll
- 动态加载dll--不占用文件
- C#实现从dll程序集中动态加载窗体
- C#动态加载DLL(转)
- vc静态加载dll和动态加载dll(转)
- 委托delegate的使用-动态加载DLL控件
- c#实现动态加载Dll
- 动态加载DLL和静态加载DLL的步骤
- dll编写3之LoadLibrary动态加载
- C#动态加载DLL(反射学习(二))
- asp.net(c#)中使用反射动态加载dll简单示例
- vb.net动态加载dll并执行dll中的某一个函数