标题开机时间巧控制
栏目软件世界
作者刘景超
发布2001年48期
出于数据安全的考虑,相信很多朋友都有着这样的需要:自己的电脑也要遵循时间原则,如果没到开机时间,它就不能使用。经过实践,笔者在Windows 98SE中用“VFP 6.0+Wscript”实现了这一功能,具体编制如下:
1.首先,我们建立关机程序,利用Windows中的Wscript脚本程序,用记事本写入如下代码,取名为restart.vbs:
Set f=Wscript.CreateObject(“Wscript.Shell”)
f.Run(“Rundll32.exe User.exeexitwindows”)
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秒完毕。