如何用DELPHI实现锁定系统时间设置:既用户不能改变系统时间呢? 如题:谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说锁定的话不太好做。但我可以给你一种方法。可以不停的从服务器上来读取时间并把本地机器的时间进行修改不就可以了吗?。Function SetSysDT(TempQry:TADOQuery):Boolean;var SLT: SYSTEMTIME; iYear,iMonth,iDay,iHour,iMinute,iSecond,iMSec:Word; dDateTime:TDateTime;begin with TempQry do begin sql.Clear ; sql.Add('select getdate() Now '); //从服务器上读取数据库的时间。这个你可以修改一下我用的是oracl数据库。 open; dDateTime:=TempQry.FieldValues['Now']; end; DecodeDate(dDateTime,iYear,iMonth,iDay); DecodeTime(dDateTime,iHour,iMinute,iSecond,iMSec); SLT.wYear:=iYear; SLT.wMonth:=iMonth; SLT.wDay:=iDay; SLT.wHour:=iHour; SLT.wMinute:=iMinute; SLT.wSecond:=iSecond; SetLocalTime(SLT); ReSult:=True;end; unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) private { Private declarations } procedure WMtimechange(var msg:TMessage);message wm_TimeChange; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMtimechange(var msg: TMessage);begin ShowMessage('Time!');end;end.不过这只是限制在windows下面,如果在cmos下面修改就没有办法咯,最好cmos能设置密码 但我用webnumen(现代孔子)的方法,程序运行的时候还是可以修改,只不过修改后程序会提示罢了。 anh(hananying) ( ) 说的服务器可以是本地的吗? anh(hananying): 是个好东西! 我有绝妙的办法:procedure TForm1.Button1Click(Sender: TObject);var pSysDir:array[0..255] of char;begin getSystemDirectory(psysdir,255); renamefile(pSysdir+'\timedate.cpl',psysdir+'\timedate.bak');end;哈哈,改不了了吧。 我以前曾经做过一个类似的东西,但所谓的限制也只能是一定条件下的限制,真要是绝对的不能改时间应该是很困难的。我的做法类似于古木的方法,自己编一个cpl,取名为timedate.cpl,将系统目录下的timedate.cpl改为别的名字,这样当点击右下角的时间时弹出的就是你自己的窗口,可以让用户输入密码之类的,输入密码正确的话就打开真正的timedate.cpl...当然,你用dos命令date,time都仍然可以修改 呵呵 也许还是anh(hananying)的方法最好吧,不知大家还有什么高论。 如何使DELPHI的接口方法做为其它函数的参数 Delphi用ODAC的MasterSource连数据源插数据库的问题? 高手请进:delphi与excel关联的问题 数据丢失(怎么处理) 数据备份问题? 哪里有delphi压缩和解压的控件下载 《〈〈《一个笑话,100分,一个adoquery问题。 VB中的变量类型Long是不是就是Delphi中的Interger?VB中的变量类型Integer是不是就是Delphi中的shortint? 哪儿有ToolBar2000下载? Delphi函数指针问题 大家好,我问一个问题,关于hook的,希望大侠们给予指点。 delhpi中DMB问题!
但我可以给你一种方法。可以不停的从服务器上来读取时间并把本地机器的时间进行修改不就可以了吗?
。Function SetSysDT(TempQry:TADOQuery):Boolean;
var
SLT: SYSTEMTIME;
iYear,iMonth,iDay,iHour,iMinute,iSecond,iMSec:Word;
dDateTime:TDateTime;
begin
with TempQry do
begin
sql.Clear ;
sql.Add('select getdate() Now '); //从服务器上读取数据库的时间。这个你可以修改一下我用的是oracl数据库。
open;
dDateTime:=TempQry.FieldValues['Now'];
end;
DecodeDate(dDateTime,iYear,iMonth,iDay);
DecodeTime(dDateTime,iHour,iMinute,iSecond,iMSec);
SLT.wYear:=iYear;
SLT.wMonth:=iMonth;
SLT.wDay:=iDay;
SLT.wHour:=iHour;
SLT.wMinute:=iMinute;
SLT.wSecond:=iSecond;
SetLocalTime(SLT);
ReSult:=True;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMtimechange(var msg:TMessage);message wm_TimeChange;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMtimechange(var msg: TMessage);
begin
ShowMessage('Time!');
end;end.
不过这只是限制在windows下面,如果在cmos下面修改就没有办法咯,最好cmos能设置密码
anh(hananying) ( ) 说的服务器可以是本地的吗?
是个好东西!
var
pSysDir:array[0..255] of char;
begin
getSystemDirectory(psysdir,255);
renamefile(pSysdir+'\timedate.cpl',psysdir+'\timedate.bak');
end;哈哈,改不了了吧。