假设软件的主程序窗口为FORM1,则将该段代码置放在FORM1.CREATE事件中。代码如下:procedure TForm1.form1create(Sender: TObject); var re_id:integer; registerTemp : TRegistry; inputstr,get_id:string; dy,clickedok:boolean; begin dy:=false; //软件是否已到注册期、及是否允许继续使用的标志,当值为FALSE是为允许使用。 registerTemp := TRegistry.Create; //准备使用注册表 with registerTemp do begin RootKey:=HKEY_LOCAL_MACHINE; //存放在此根下 if OpenKey('Software\Microsoft\Windows\CurrentVersion\Mark',True) then // 建一目录,存放标志值。当然也可以存放在已存在的目录下。怎么样,很难发现吧? begin if valueexists('gc_id') then begin //用gc_id的值作为标志,首先判断其存在否? re_id:=readinteger('gc_id');//读出标志值 if (re_id<>0) and (re_id<>100) then begin //若标志值为0,则说明已注册。 //若不为0且值不到100,说明虽未注册,但允许使用的次数尚未达到。 re_id:=re_id+5; //允许标志的最大值为100,每次加5,则最多只可用20次。 Writeinteger('gc_id',re_id);//将更新后的标志值写入注册表中。 end; if re_id=100 then dy:=true; //假如值已到100,则应注册。 end else Writeinteger('gc_id',5);//建立标志,并置初始标志值。 end; if dy then begin //若dy值为TRUE,则应提示用户输入注册码,进行注册。 clickedok:=InputQuery('您使用的是非注册软件,请输入注册码:',' ',inputstr); if clickedok then begin get_id:=inttostr(27593758*2);//注册码为55187516,当然可加入更杂的算法。 if get_id=inputstr then begin Writeinteger('gc_id',0);//若输入的注册码正确,则将标志值置为0,即已注册。 CloseKey; Free; end else begin //若输入的注册码错误,应作出提示并拒绝让其继续使用 application.messagebox('注册码错误!请与作者联系!','警告框',mb_ok); CloseKey; Free; application.terminate; //中止程序运行,拒绝让其继续使用 end; end else begin //若用户不输入注册码,也应作出提示并拒绝让其继续使用 application.messagebox('请与作者联系,使用注册软件!','警告框',mb_ok); CloseKey; Free; application.terminate; end; end; end; end;
就是呀!! : DDeveloper(金色麦浪) 你有什么招可以实现控制使用时间
unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Registry, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject); var registerTemp : TRegistry; curDate : TDateTime; begin registerTemp := TRegistry.Create; with registerTemp do begin RootKey := HKEY_LOCAL_MACHINE; //判断是否初次运行程序 if OpenKey('Software\MySoftware',True) then begin if ReadBool('Runned') then //不是第一次运行 begin curDate := Date; if (curDate-ReadTime('LastRunTime'))>=ReadInteger('Duration') then begin //当前的系统时间超出了使用期限 ShowMessage('试用版已到期'); exit; end else begin DeleteKey('LastRunTime'); WriteTime('LastRunTime',Date); end; end else begin //初次运行程序 DeleteKey('Runned'); WriteBool('Runned',True); //设置试用期限30天 WriteInteger('Duration',30); //写入当前运行时间 WriteTime('LastRunTime',Date); end; end else begin ShowMessage('Fails!'); end; CloseKey; end; end;end.
var
re_id:integer;
registerTemp : TRegistry;
inputstr,get_id:string;
dy,clickedok:boolean;
begin
dy:=false; //软件是否已到注册期、及是否允许继续使用的标志,当值为FALSE是为允许使用。
registerTemp := TRegistry.Create; //准备使用注册表
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE; //存放在此根下
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Mark',True) then
// 建一目录,存放标志值。当然也可以存放在已存在的目录下。怎么样,很难发现吧?
begin
if valueexists('gc_id') then begin //用gc_id的值作为标志,首先判断其存在否?
re_id:=readinteger('gc_id');//读出标志值
if (re_id<>0) and (re_id<>100) then begin //若标志值为0,则说明已注册。
//若不为0且值不到100,说明虽未注册,但允许使用的次数尚未达到。
re_id:=re_id+5; //允许标志的最大值为100,每次加5,则最多只可用20次。
Writeinteger('gc_id',re_id);//将更新后的标志值写入注册表中。
end;
if re_id=100 then dy:=true; //假如值已到100,则应注册。
end
else Writeinteger('gc_id',5);//建立标志,并置初始标志值。
end;
if dy then begin //若dy值为TRUE,则应提示用户输入注册码,进行注册。
clickedok:=InputQuery('您使用的是非注册软件,请输入注册码:',' ',inputstr);
if clickedok then begin
get_id:=inttostr(27593758*2);//注册码为55187516,当然可加入更杂的算法。
if get_id=inputstr then begin
Writeinteger('gc_id',0);//若输入的注册码正确,则将标志值置为0,即已注册。
CloseKey;
Free;
end
else begin //若输入的注册码错误,应作出提示并拒绝让其继续使用
application.messagebox('注册码错误!请与作者联系!','警告框',mb_ok);
CloseKey;
Free;
application.terminate; //中止程序运行,拒绝让其继续使用
end;
end
else begin //若用户不输入注册码,也应作出提示并拒绝让其继续使用
application.messagebox('请与作者联系,使用注册软件!','警告框',mb_ok);
CloseKey;
Free;
application.terminate;
end;
end;
end;
end;
: DDeveloper(金色麦浪)
你有什么招可以实现控制使用时间
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Registry, Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
var
registerTemp : TRegistry;
curDate : TDateTime;
begin
registerTemp := TRegistry.Create;
with registerTemp do
begin
RootKey := HKEY_LOCAL_MACHINE;
//判断是否初次运行程序
if OpenKey('Software\MySoftware',True) then
begin
if ReadBool('Runned') then
//不是第一次运行
begin
curDate := Date;
if (curDate-ReadTime('LastRunTime'))>=ReadInteger('Duration') then
begin
//当前的系统时间超出了使用期限
ShowMessage('试用版已到期');
exit;
end
else
begin
DeleteKey('LastRunTime');
WriteTime('LastRunTime',Date);
end;
end
else
begin
//初次运行程序
DeleteKey('Runned');
WriteBool('Runned',True);
//设置试用期限30天
WriteInteger('Duration',30);
//写入当前运行时间
WriteTime('LastRunTime',Date);
end;
end
else
begin
ShowMessage('Fails!');
end;
CloseKey;
end;
end;end.