开机时间巧控制

出于数据安全的考虑,相信很多朋友都有着这样的需要:自己的电脑也要遵循时间原则,如果没到开机时间,它就不能使用。经过实践,笔者在Windows 98SE中用“VFP 6.0+Wscript”实现了这一功能,具体编制如下:
   1.首先,我们建立关机程序,利用Windows中的Wscript脚本程序,用记事本写入如下代码,取名为restart.vbs:
   Set f=Wscript.CreateObject(“Wscript.Shell”)
   f.Run(“Rundll32.exe User.exe,exitwindows”)
   2.新建表单取名为window.scx,其属性设为:
   BackColor=rgb(192,192,192)
   Caption=“warning”
   TitleBar选择“0 - 关闭” &&关闭标题栏
   WindowState选择“2 - 最大化”
   ShowWindow选择“2 - 作为顶层表单”
   AlwaysOnTop=.t. &防止被其它对象遮档
   这样,别人就没法通过其它方法来关闭当前程序的运行。接下来,在Show方法中加入如下代码:
   if val(left(time(),2))<10.or.;
   val(left(time(),2))>12.and.

val(left(time(),2))<19.or.

val(left(time(),)2))>22 &&时间的控制可自由更改
   ThisForm.closec.Visible=.t.
   else
   This.openc.Visible=.t.
   endif
   3.加入三个标签(三个标签放入中间位置就行,其中label3放下面一点),本例中其name属性分别为closec、openc、label3,相关代码如下:
   WITH ThisForm.closec
   .Caption=“对不起,Windows 暂时不能启动!”
   .ForeColor=rgb(255,0,0)
   .FontSize=24
   .Visible=.f.
   ENDWITH
   WITH Fhisform.openc
   .Caption=“Open the windows……”
   .ForeColor=rgb(0,0,255)
   .FontSize=24
   .Visible=.t.
   ENDWITH
   ThisForm.label3.Caption=“5” &用于显示暂停进程
   ThisForm.label3.FontSize=9
   4.加入一个Timer控件timer1,其属性为:
   WITH ThisForm.timer1
   .Comment='5' &&设置暂停的时间(秒)
   .Enabled=.t.
   .Interval=1000
   ENDWITH
   其Timer事件程序如下:
   If This.Comment='0'
   If ThisForm.closec.Visible=.t.
   If MessageBox(“关闭计算机!”)=1
   Clear Events
   Run Wscript d:\asm\restart.vbs &调用关机程序
   EndIf
   EndIf
   Clear Events &清除事件循环
   ThisForm.Release
   EndIf
   ThisForm.label3.Caption=This.Comment
   a=val(This.Comment)
   a=a-1
   This.Comment=str(a,1)
   5.接下来保存好表单,只要创建一个主程序就行了。main.prg其代码为:
   Clear all
   Close all
   Set Talk Off
   Set Sysmenu Off
   Set Status Bar On
   Zoom Window Screen MAX
   Do Form window.scx
   Read Events
   6.新建项目文件:把window.scx,main.prg,restart.vbs加入到项目文件中,以main.prg为主文件,编译生成可执行文件,取名为window.exe。
   7.把window.exe拖入到开始菜单的启动中去,就样大功告成了,如果不是开机时间,则整个屏幕显示“Windows暂时不能启动!”,过了5秒后出现一个“确定”的关机信息框,一点确定就马上关机。如果可以开机则显示“Open the windows...”,过5秒完毕。