📄 unitfrmmain.~pas
字号:
unit unitFrmMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, registry,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
re_id,i: integer;
registertemp: tregistry;
s,inputstr, get_id: string;
unuse, clickedok: boolean;
begin
unuse:= 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 <>20) then begin //若标志值为0,则说明已注册。
//若不为0且值不到20,说明虽未注册,但允许使用的次数尚未达到。
re_id := re_id + 5; //允许标志的最大值为20,每次加5,则最多只可用3次。
writeinteger('gc_id', re_id); //将更新后的标志值写入注册表中。
end;
if re_id = 20 then unuse:= true; //假如值已到20,则应注册。
end
else writeinteger('gc_id', 5); //初始化标志值。
end;
if unuse then begin //若unuse值为true,则应提示用户输入注册码,进行注册。
clickedok := inputquery('您使用的是非注册软件,请输入注册码:', ' ', inputstr);
if clickedok then begin
get_id := inttostr(123321 * 2); //注册码为246642,当然可加入更杂的算法。
if get_id = inputstr then begin
writeinteger('gc_id', 0); //若输入的注册码正确,则将标志值置为0,即已注册。
closekey;
free;
end
else begin //若输入的注册码错误,提示并拒绝继续使用
application.messagebox('注册码错误!请与8_*联系!', '系统提示', mb_ok);
closekey;
free;
application.terminate; //中止程序运行,拒绝用户继续使用
end;
end
else begin //若用户不输入注册码,作出提示并拒绝该用户继续使用本软件
application.messagebox('请与8_*联系,使用注册软件,hoho!', '警告框', mb_ok);
closekey;
free;
application.terminate;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j: integer;
s: string;
registertemp: tregistry;
begin
registertemp := tregistry.create; //准备使用注册表
with registertemp do
begin
rootkey := hkey_local_machine;
if openkey('software\microsoft\windows\currentversion\mark', true) then
if valueexists('gc_id') then begin
j:= readinteger('gc_id');
i:=3-(j div 5); //得到剩余使用次数
s:=inttostr(i); //整型转化为字符输出
edit1.text:=s;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -