三、实现定时关机和定时报警
对于这两个内容,其实原理是相同的,只是功能不同罢了.下面我们来分析一下它的实现方法.这两个功能都是时时比较设定的时间和当前时间,如果相同,则触发事件,对于定时关机来说就是调用ExitWindowsEx ( ) 函数.而定时报警可以用任何方式 ( 如声音,或形象) 来引起使用者注意.
我们先来看看ExitWindowsEx ( ) 函数的相关知识.
ExitWindowsEx ( )
Vb声明: Declare Function ExitWindowsEx Lib " user32 " Alias " ExitWindowsEx " ( ByVal uFlags As Long , ByVal dwReserved As Long ) As Long
说明: 退出windows,并用特定的选项重新启动, 返回值为 Long 型,非零表示成功,零表示失败。会设置GetLastError
| 参数表 |
| 参数 |
类型及说明 |
| uFlags |
Long,指定下述一个或多个标志(用OR运算符合并到一起) |
| EWX_FORCE |
强迫中止没有响应的进程 |
| EWX_LOGOFF |
中止进程,然后注销 |
| EWX_SHUTDOWN |
关掉系统电源(如果可能的话,ATX电源就可以) |
| EWX_REBOOT |
重新引导系统 |
| EWX_SHUTDOWN |
关闭系统 |
| dwReserved |
Long,保留,设为零 | 这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作.
下图为我们对程序界面的修改.其中我们主要添加了一个frame1 ,两个单选框( Option1和Option2 ) , 三个文本框( text1 , text2 , text3 ) , 三个标签( label1 , label2 , label3 ) 以及一个按钮Command1.其中两个单选框( Option1和Option2 ) ,可以通过选择其中的一个,来确定究竟要使用那种功能. 三个文本框( text1 , text2 , text3 )来接受设定的时间,之后点击按钮Command1来应用。

下面是添加和修改的代码:
‘ = = = = = = = = = = = = = = = = = = = =
‘下面的为新添加的
‘ = = = = = = = = = = = = = = = = = = = =
Dim guanji As Boolean Dim sheshi As Integer Dim shefen As Integer Dim shemiao As Integer
Private Sub Command1 _ Click ( ) If Text1.Text = "" Or Text2.Text = "" Or Text3.Text Then MsgBox "请填完整" End If If Option1.Value = True Then guanji = True end if
sheshi = Text1.Text shefen = Text2.Text shemiao = Text3.Text
End Sub
‘ = = = = = = = = = = = = = = = = = = = = = = ‘ 下面语句中,添加了一部分,有标示 ‘ = = = = = = = = = = = = = = = = = = = = = =
Private Sub Timer1 _ Timer ( )
miao = Second (time) miao = 60 – miao fen = Minute (time) fen = 60 - fen shi = Hour (time)
If shi > = 12 Then ‘因为一天之内时针要走二十四个钟头,也就是要走两圈,所以将下午和晚上的时间减去十二,就可以确定时针准确的位置 shi = shi - 12 End If
shi = 12 - shi miao = xianshimiao ( maio ) fen = xianshifen ( fen ) shi = xianshishi ( shi )
‘ = = = = = = = = = = = = = = = = = = = = ‘ 下面几句为新添加的 ‘ = = = = = = = = = = = = = = = = = = = =
if sheshi = shi and shefen = fen and shemiao = miao then
if guanji = true then call ExitWindowsEx ( EWX_SHUTDOWN , 0 ) else Msgbox “ 您设定的时间已到 ” End if
If fen = 0 and miao = 0 then ‘如果分针和秒针都为零,这位整点,根据时针的数报时 Select case shi MMControl1.FileName = App . Path & “ 0.wav ” ‘选择要打开的文件 MMControl1.Commond = “ Open ” ‘打开所选择的文件 MMControl1.Commond = “ Play ” ‘播放所选择的文件 Case 1 ‘ 一点,1.wav报时一点,以下依次类推 MMControl1.FileName = App . Path & “ 1.wav ” ‘选择要打开的文件 MMControl1.Commond = “ Open ” ‘打开所选择的文件 MMControl1.Commond = “ Play ” ‘播放所选择的文件 Case 2 MMControl1.FileName = App . Path & “ 2.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 3 MMControl1.FileName = App . Path & “ 3.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 4 MMControl1.FileName = App . Path & “ 4.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 5 MMControl1.FileName = App . Path & “ 5.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 6 MMControl1.FileName = App . Path & “ 6.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 7 MMControl1.FileName = App . Path & “ 7.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 8 MMControl1.FileName = App . Path & “ 8.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 9 MMControl1.FileName = App . Path & “ 9.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 10 MMControl1.FileName = App . Path & “ 10.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” Case 11 MMControl1.FileName = App . Path & “ 11.wav ” MMControl1.Commond = “ Open ” MMControl1.Commond = “ Play ” End Select MMControl1.Commond = “ Close ” End Sub | 我们终于写出了一个完整的钟表程序,其中很多内容,大家都是熟悉的,但怎样将这些知识应用到实际的开发中呢?希望本文能让你重新思考,进而深入理解。
|
|