unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
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
re_id:integer;
registertemp:tregistry;
inputstr,get_id:string;
dy,clickdok:boolean;
begin
dy:=false;//软件是否注册的标志,FALSE的时候可以继续使用
registertemp:=tregistry.create;//准备使用注册表。
with regietertemp do
begin
rootkey:=hkey_local_machine;//存放在此根下
if openkey('software\microsoft\windows\currentversion\mark',true) then
//建一目录,存放标志值,当然也可以存放在已经存在的目录下
begin
if valueexist('gc_id') then //用GC-ID做标志值
begin
re_id:=readinteger('gc_id');//读出标志值
if(re_id<>0)and(re_id<>100)then//为0则已经注册
begin
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//DY为TRUE,应该进行注册
begin
clickdok:=inputquery('还没注册,请进行注册;','',inputstr);
if clickdok then
begin
get_id:=inttostr(111*2);//注册码为222
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;
end.
谁能帮我改一下,然后再家个难点的算法,至于回报可以商量,请会的人一定要帮我,很急!
[此贴子已经被静夜思于2005-5-24 18:09:08编辑过]