如何设置系统的时间(50分)

  • 主题发起人 主题发起人 weblogic_li
  • 开始时间 开始时间
W

weblogic_li

Unregistered / Unconfirmed
GUEST, unregistred user!
如何设置系统的时间,包括设置、修改和锁定(程序运行期间不允许修改系统的日期和时间)<br>谢谢
 
var<br>&nbsp; systime: TSystemTime;<br>begin<br>&nbsp; systime.wyear := 2002;<br>&nbsp; systime.wmonth := 5;<br>&nbsp; systime.wday := 23;<br>&nbsp; &nbsp; ....<br>&nbsp; setsystemtime(systime);<br>end; <br>
 
设置和修改可以用SetsystemTime,时间是国际标准的。<br>delphi还提供了另外一个函数来设置本机系统时间,推荐使用!<br>&nbsp; SetLocalTime(dt: TSystemTime)<br>&gt;&gt;锁定(程序运行期间不允许修改系统的日期和时间)<br>就别想了!不过看你具体给什么人用了。看下面连接<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=282187<br><br>
 
在DELPHI下读取与设置系统时钟<br><br>很多朋友都想在自己的程序中显示系统时间<br><br>这在DELPHI中十分容易<br><br>利用DateToStr(Date)及TimeToStr(Time)函数即可实现。<br><br><br>二者的函数原型如下:<br><br>function DateToStr(Date:TDateTime):string;<br><br>function TimeToStr(Time:TDateTime):string;<br><br>其返回值均为String型。<br><br>在程序中我们可以这样使用:<br><br>Label1.Caption:=DateToStr(Date);<br><br>Lable2.Caption:=TimeToStr(Time);<br><br>二者分别调用了Delphi函数Date和Time读取系统日期和时间来实现的<br><br>但只能读系统时钟<br><br>而不能设置系统时钟。那么如何处理这一问题呢?这正是本文所要讨论的问题。<br><br>既然Delphi没有提供如此功能<br><br>但Delphi提供了调用WindowsAPI的接口。所以我们可以调用WindowsAPI函数来实现这一功能。具体方法如下:<br><br>procedure TForm1.Button1Click(Sender:TObject);<br><br>begin<br><br>Edit1.Text:='97/10/30 10:09:59'; //注意:控制面板内时间格式要为YY/MM/DD<br><br>end;<br><br>procedure TForm1.Button2Click(Sender:TObject);<br><br>var   systemtime:Tsystemtime;<br><br>DateTime:TDateTime;<br><br>begin<br><br>DateTime:=StrToDateTime(Edit1.text); //获得时间(TDateTime格式)<br><br>DateTimeToSystemTime(DateTime<br><br>systemtime); //把Delphi的TDateTime格式转化为API的TSystemTime格式<br><br>SetLocalTime(SystemTime); //设置系统时间<br><br>GetLocalTime(SystemTime); //读取系统时间<br><br>DateTime:=SystemTimeToDateTime(SystemTime); //把API的TSystemTime格式 转化为 Delphi的TDateTime格式<br><br>Edit2.Text:=DateTimeToStr(DateTime); //显示当前系统的时间<br><br>end;<br><br>另外<br><br>还有好多其它的Delphi函数和API函数供我们使用<br><br>如:  StrToDate、StrToTime、DateTimeToStr、StrToDateTime、DateTimeToSystemTime、SystemTimeToDateTime、DateTimeToTimeStamp、TimeStampToDateTimeCompareFileTime、DosDateTimeToFileTime、FileTimeToDosDateTime、FileTimeToLocalFileTime、FileTimeToSystemTime、GetFileTime、SetFileTime、GetSystemTime(格林威治时间)、SetSystemTime.GetSystemTimeAdjustment<br><br>SetSystemTimdAdjustment。<br><br><br>//TSystemTime的格式<br><br>PSystemTime = ^TSystemTime;<br><br>TSystemTime = record<br><br>wYear: Word;<br><br>wMonth: Word;<br><br>wDayOfWeek: Word; //当前的系统时间是星期几<br><br>wDay: Word;<br><br>wHour: Word;<br><br>wMinute: Word;<br><br>wSecond: Word;<br><br>wMilliseconds: Word;<br><br>end;<br><br>//TDateTime的格式<br><br>TDateTime = type Double<br><br><br>具体我们可以查Delphi所带的Win32.HLP(WindowsAPI帮助文件)<br><br>它在Delphi2.0ιHelp或Delphi3ιHelp目录下。<br>
 
大家想一想,可以在BIOS里面改系统时间,可以在DOS窗口改系统时间,所以基本上是不可能防止别人修改时间了。<br>但是win2000好像可以限制很多东西不能修改,不过要用用户权限。<br>我想你的程序可以从别的角度考虑一下,比如验证时间时用服务器时间而不是本地时间,<br>甚至可以去取Internet时间。这样就不要不让用户改时间拉。
 
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; MyST:TSystemTime;<br>&nbsp; begin<br>&nbsp; &nbsp; with MyST do<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; wYear:=1998;<br>&nbsp; &nbsp; &nbsp; &nbsp; wMonth:=12;<br>&nbsp; &nbsp; &nbsp; &nbsp; wDay:=7;<br>&nbsp; &nbsp; &nbsp; &nbsp; wHour:=8;<br>&nbsp; &nbsp; &nbsp; &nbsp; wMinute:=9;<br>&nbsp; &nbsp; &nbsp; &nbsp; wSecond:=10;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; SetSystemTime(MyST);<br>&nbsp; end;<br>end;
 
听听,<br><br>觉得http://www.delphibbs.com/delphibbs/dispq.asp?lid=282187<br>这zhao太损,
 
后退
顶部