小弟我用的软件试用期是用时间来判断,代码如下://////////////////////////////进行软件试用的限制///如果超过试用期
if (now()>=strtodate('2006-08-15')) then
begin
Application.MessageBox('软件试用期已过,如果还需要继续使用请与我联系,现在系统将退出!',PChar('警告'),MB_OK + MB_DEFBUTTON1 + MB_ICONASTERISK + MB_APPLMODAL);
application.Terminate;
end
else if (now()<=strtodate('2006-06-15')) then
begin
Application.MessageBox('请正确设置系统日期至当前日期,现在系统将退出!',PChar('德明自控'),MB_OK + MB_DEFBUTTON1 + MB_ICONASTERISK + MB_APPLMODAL);
application.Terminate;
end
////正常进入系统
else
。。
但是发现如果把系统日期改前的话,软件照样能用。是不是要写注册表写ini文件啊?请高手指点!最好给我点源代码看看,谢谢啊!
if (now()>=strtodate('2006-08-15')) then
begin
Application.MessageBox('软件试用期已过,如果还需要继续使用请与我联系,现在系统将退出!',PChar('警告'),MB_OK + MB_DEFBUTTON1 + MB_ICONASTERISK + MB_APPLMODAL);
application.Terminate;
end
else if (now()<=strtodate('2006-06-15')) then
begin
Application.MessageBox('请正确设置系统日期至当前日期,现在系统将退出!',PChar('德明自控'),MB_OK + MB_DEFBUTTON1 + MB_ICONASTERISK + MB_APPLMODAL);
application.Terminate;
end
////正常进入系统
else
。。
但是发现如果把系统日期改前的话,软件照样能用。是不是要写注册表写ini文件啊?请高手指点!最好给我点源代码看看,谢谢啊!
解决方案 »
- 怎样控制随机抽奖的中奖率?
- TVideoCap 2.3 摄像头控件使用的问题
- 请教
- speedbutton的numglyph设置为4,但图片仍然只能有两种状态是什么原因呢?
- 在dbgrid中如何根据记录标志显示不同的背景色?
- 泡MM
- mapx范围专题图的奇怪问题,期待高手解答
- 为什么我从网上下载的一些源代码,打开是总是说''filectrl is special to a platform'',''请教大家
- 连接数据库 ADO和BDE那种比较好,那种用的比较多!!!!!!!!!
- help me!!!!!!!!!!!!!!!!!!!!!!!!!
- 垃圾软件横行,大家小心CNNIC、傲讯等垃圾
- FastReport打印图像
或者你可以这么做,在注册表或INI文件中记录下上次使用时间,启动的时候,发现当前的系统时间在这个时间之前,就锁了。
赞一个,我也只是想通过日期判断的。那么你说的注册表和Ini文件写入有没有源码?小弟菜鸟,在此多谢啦!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Registry;type
TForm1 = class(TForm)
Edit1: TEdit;
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,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;
end.
将程序首次运行的时间写进注册表
以后每运行一次程序都和首次运行的时间进行比较
算出差值和你想限制的天数进行比较就行了
其实不难的