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
Ïà¹ØÎĵµ£º
windows¼¸¸öÖØÒªµÄÄÚºËÊý¾Ý½á¹¹ËäÈ»ÍøÉÏÒ²ÓÐÏà¹ØµÄ¶¨Ò壬µ«¸öÈ˾õµÃ²»ÆëÈ«¶¨Òå²»¹æ·¶£¬Òò´ËÓÃÒ»Ììʱ¼äʹÓÃWinDbg+Win2000sourcecodeÖØÐ¶¨ÒåÁ˳£ÓõÄÄÚºËÊý¾Ý½á¹¹£¬²¢¾¡¿ÉÄÜ»¹Ô΢ÈíµÄԽṹ¶¨Ò壬ÿ¸ö½á¹¹¶¼µÝ¹éµ½×î×Ó²ãµÄ½á¹¹²¢ÇÒͨ¹ýÁ˲âÊÔ¡£Í¨¹ýÕâ´Î¹¤×÷¹ý³Ì²»½öʹ×Ô¼ºµÃµ½Ò»´ÎѧϰµÄ»ú»á£¬¶øÇÒÌá¸ßÁË×Ô¼ºµÄÕûÌåÈí¼þ¼Ü¹ ......
1£¬¹æ·¶¼ò½é
¡¡¡¡±¾¹æ·¶Ö÷Òª¹æ¶¨DelphiÔ´³ÌÐòÔÚÊéд¹ý³ÌÖÐËùÓ¦×ñѵĹæÔò¼°×¢ÒâÊÂÏî¡£±àд¸Ã¹æ·¶µÄÄ¿µÄÊÇʹ¹«Ë¾Èí¼þ¿ª·¢ÈËÔ±µÄÔ´´úÂëÊéдϰ¹ß±£³ÖÒ»Ö¡£ÕâÑù×ö¿ÉÒÔʹÿһ¸ö×éÔ±¶¼¿ÉÒÔÀí½âÆäËü×éÔ±µÄ´úÂ룬ÒÔ±ãÓÚÔ´´úÂëµÄ¶þ´Î¿ª·¢¼ÇÒäϵͳµÄά»¤¡£
2£¬Ò»°ã¸ñʽ¹æ·¶
2.1 Ëõ½ø
¡¡¡¡Ëõ½ø¾ÍÊÇÔÚµ±Ô´³ÌÐòµÄ¼¶¸Ä±äʱΪÔö¼ ......
µÚÒ»ÖÖ·½·¨,ʹÓÃSelectDirectory º¯Êý ,ÔÚShellApiÖÐ
procedure TForm2.BtSelectPathClick(Sender: TObject);
var
strCaption,strDirectory:String;
wstrRoot:WideString;
begin
strCaption:='ÕâÊÇä¯ÀÀÎļþ¼ÐµÄ˵Ã÷ÎÄ×Ö£¬¿ÉÒÔ¸ù¾ÝÐèÒª½ ......