如何使用delphi创建dll程序(含form),包含属性事件,最好给个源码例子(100分)

  • 主题发起人 主题发起人 lyloyal
  • 开始时间 开始时间
L

lyloyal

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用delphi创建一个dll程序,包含form,事件,属性等。然后在vb中调用,请教高手
怎样用delphi开发dll程序.谢谢!
 
利用Dll实现通用密码验证框
夏青虫
---- 在我们编制Delphi应用程序,常常需要提供一个密码验证框,对应用程序的使用者进
行身份核对。如果能有一个通用的密码验证框,便能够为我们的工作节约不少的时间,更能
使我们编制的程序小而快。以下的程序为你提供了这样的一个DLL文件。

//文件名为CheckPasswordForm.dpr;
编译此文件生成CheckPasswordForm.dll
library CheckPasswordForm;

uses
XcqCheck in 'XcqCheck.pas' {XcqForm};

exports
CheckPassword name 'CheckPassword';//dll入口

begin
end.


//文件名为XcqCheck.pas
unit XcqCheck;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, Menus;

type
TXcqForm = class(TForm)
XcqEdit: TMaskEdit;//密码输入框
OkBtn: TButton;
procedure OkBtnClick(Sender: TObject);
end;

var
XcqForm: TXcqForm;
Check: Boolean;//验证输入密码的正确性
function CheckPassword: Boolean;export;
//本dll文件的关键实现

implementation

{$R *.DFM}

procedure TXcqForm.OkBtnClick(Sender: TObject);
begin
if XcqEdit.Text = 'xcq' then
Check := True;
Close;
end;

function CheckPassword;export;
begin
Check := False;
XcqForm := TXcqForm.Create(Application);
//创建密码输入框
XcqForm.ShowModal;//显示密码输入框;
注意:不能用XcqForm.Show!
Result := Check;//返回给调用本dll的应用程序判断
XcqForm.Free;//释放本dll文件所占资源
end;
end.

---- 在调用以上dll中CheckPassword函数的应用程序中只需加入以下语句在implementation
后,function CheckPassword: Boolean; external 'CheckPasswordForm.dll' name 'CheckPassword';
在需要进行密码验证的地方加入下面的条件语句就完全实现了密码验证的功能。
if CheckPassword then
begin
...//如XcqQuery.Open;
end;

---- 上面的程序只是一个简单的密码验证框,我们可以将密码以写入注册表或文件的方式保
存,动态修改,更可以利用算术算法对密码进行简单的加密等,使要保密的数据更安全。
---- 其实,上文中如何在dll中实现窗口让我走了不少弯路,我觉得此法对大家更有意义,这
是避免程序庞大的一种有效方法,不妨试试。

---- 以上程序在Windows98/Delphi3下编译通过。欢迎大家批评指正。
 
谢谢!我试了一下,在调用程序中,不识别CheckPassword。
 
函数声明之后一定要加上 stdcall; 这样VB才能使用。
如:function DllVersion: shortstring; stdcall;

这有个例子。
http://vcl.vclxx.org/DELPHI/D32SAMPL/SIDLL02A.ZIP
 
谢谢!给各位加分。另外,delphi做的dll在VB6中如何调用?
 
你可以参考VB 的Win API函数的调用格式。

 
接受答案了.
 
后退
顶部