Delphi 的 Dll 函数的 调用
一、Dll建立
(一)DLL项目的建立
library mydll;
uses
base in 'base.pas';
exports
Triple name 'Tr';
{$R *.res}
begin
end.
(二)函数单元
unit base;
interface
uses windows;
function Triple(N:integer):integer;stdcall;
implementation
function Triple(N:integer):integer;stdcall;
begin
result:=n*3;
end;
end.
二、静态调用
unit Unit1;
interface
uses
Windows, SysUtils, Controls, Forms,
StdCtrls, Classes;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
const
gdi32='mydll';
function triple(n:integer):integer;stdcall;external gdi32 name 'Tr';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=inttostr(triple(10));
end;
end.
三、动态调用
unit Unit2;
interface
uses
Windows, SysUtils, Controls, Forms,
StdCtrls, Classes;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
type
Taddc=function(n:integer):integer;stdcall;//定义函数指针
var
Handle:Thandle;
addc:Taddc;
begin
Handle:=LoadLibrary('mydll.dll');//加载mydll
if Handle>32 then
begin
@addc:=GetProcAddress(Handle,'Tr'); //取Tr函数入口地址,大小写敏感。Tr为mydll中的Triple的exports 的name命名
if @a
相关文档:
Delphi通过向导可以非常迅速和方便的直接建立实现COM对象的代码,但是整个COM实现的过程被完全的封装,甚至没有VCL那么结构清晰可见。一个没有C++下COM开发经验甚至没有接触过COM开发的Delphi程序员,也能够很容易的按照教程设计一个接口,但是,恐怕深入一想,连生成的代码代表何种意义,哪些能够定制都不清楚。前几期 &ld ......
一、引子:
现在的Windows应用程序几乎都使用图标、图片、光标、声音等,我们称它们为资源(Resource)。最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便程序需要的时候调用。资源是程序的一部分,程序要正常运行就离不了资源文件。但是它是不可执行代码。
&n ......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button ......
//加一下按钮,加一个对话框就OK啦
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
begin
if OpenDialog1.Execute then
begin
s := OpenDialog1.FileName;
WinExec( PChar(s), SW_NORMAL);
end;
end;
----------------------- ......