如何用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)的方法最好吧,不知大家还有什么高论。 socket error#10054 connection reset by peer 如何使主线程不结束 也谈“用DELPHI是一种信仰!” 如何设置货币文本框 VB中这样的句子在delphi中如何写 200分 用Dephi设计数据库组合查询 关于三层系统的效率问题 Delphi为何连line控件都没有??? 我用DLL封装了一些函数.但我想封装对象怎么办呢? 怎样实现在table中数据库的物理排序? 大家好,我问一个问题,关于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;哈哈,改不了了吧。