//============动态链接库代码===============
uses
SysUtils,
Classes,
Registry,
Windows,
Dialogs,
U_dlkz in 'U_dlkz.pas' {Frm_dlkz},
U_sjjs in 'U_sjjs.pas' {Frm_sjjs},
U_public in 'U_public.pas';
{$R *.res}
function Date_Check:boolean;stdcall;
var
key:word;
date1,date2
char;
begin
result:=false;
key:=strtoint(ReadReg('FlagC'));
if inttostr(key) = '1' then
begin
result:=true;
exit;
end;
if decryp(key,ReadReg('FlagA')) = 'false' then //是否启用日期限制
begin
result:=true;
end
else
begin
//================将当前日期和注册表中的限制日期进行比较=====================
date1:=pchar(decryp(key,ReadReg('FlagD')));
date2:=pchar(decryp(key,ReadReg('FlagE')));
if (formatdatetime('yyyy-MM-dd',date) < date1) or (formatdatetime('yyyy-MM-dd',date) > date2) then
begin
if decryp(key,ReadReg('FlagB')) = 'true' then
begin
Randomize;
WirteReg('FlagC',inttostr(Random(999999)));
key:= strtoint(ReadReg('FlagC'));
WirteReg('FlagA',encryp(key,'true'));
WirteReg('FlagB',encryp(key,'false'));
end;
showmessage('您的使用期限已到,请与软件供应商联系,续订软件服务!');
try
Frm_sjjs:= TFrm_sjjs.Create(nil);
Frm_sjjs.ShowModal;
finally
Frm_sjjs.Free;
end;
end
else
begin
result:=true;
end;
end;
end;
function Date_Control(pswd
char):boolean;stdcall;
begin
result:=true;
if pswd = '6852903' then
begin
try
Frm_dlkz:= TFrm_dlkz.Create(nil);
Frm_dlkz.ShowModal;
result:=false;
finally
Frm_dlkz.Free;
end;
end;
end;
exports
Date_Check,Date_Control;
begin
end.
//============主程序调用=============
unit umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, DBTables, StdCtrls,ActnList, ComCtrls, ExtCtrls,
Buttons, shellapi, XPMenu, jpeg, XPMan;
implementation
{$R *.dfm}
function Date_Check:boolean;stdcall;external 'demo.dll';
procedure Tmain.FormCreate(Sender: TObject);
begin
if not Date_Check then application.Terminate;
end;
这是我的代码。