---- 定時(shí)關(guān)閉電腦,很顯然,有兩個(gè)關(guān)鍵點(diǎn):
---- 1.定時(shí)。能夠用VB中的Timer控件結(jié)合電腦的操作系統(tǒng)時(shí)候來(lái)停止精確的定時(shí)。
---- 2.關(guān)閉電腦。這能夠調(diào)用Win32 API參數(shù) ExitWindowsEx 來(lái)關(guān)閉電腦。
----
---- 下面首先來(lái)說(shuō)明一下 ExitWindowsEx 參數(shù),該參數(shù)在VB中的聲明如下:
Declare Function ExitWindowsEx Lib
"user32" Alias "ExitWindowsEx" _
(ByVal uFlags As Long, ByVal
dwReserved As Long) As Long
【返回值】
Long,非零表明勝利,零表明失敗。
【參數(shù)parameter表】
uFlags --------- Long,
指定下述唯一或多個(gè)標(biāo)志(用OR運(yùn)算符合并到
一起)
EWX_FORCE=4
強(qiáng)迫中止沒(méi)有響應(yīng)的進(jìn)程
EWX_LOGOFF=0
中止進(jìn)程,然后注銷
EWX_SHUTDOWN=1
關(guān)掉操作系統(tǒng)電源(假如估計(jì)的話,ATX電源就能夠)
EWX_REBOOT=2 重新引導(dǎo)操作系統(tǒng)
dwReserved ----- Long,保留,設(shè)為零
好了,目前能夠開(kāi)端編程了。
---- 1. 新建唯一達(dá)標(biāo)EXE工程。
---- 2. 在窗體上放置唯一TextBox控件,用以輸入定時(shí)時(shí)候。
---- 3. 在TextBox控件之下放置兩個(gè)OptionButton控件,組成控件數(shù)組,用以選取定時(shí)模式。
---- 4. 在OptionButton控件之下放置唯一CommandButton.
---- 5. 隨便在窗體的某地方放置一Timer控件。
---- 以上控件了需求設(shè)置的屬性值如下:
對(duì)象 屬性 設(shè)置
Text1 Text 空
Option1(0) Caption 在指定時(shí)候關(guān)機(jī)
(時(shí)候各式:00:00:00)
Index 0
Option1(1) Caption 延遲指定的時(shí)候關(guān)機(jī)
Index 0
Command1 Caption 確定
Timer1 Interval 15000(精確到1/4分鐘,
如要更精確可遞減該值)
Enabled False
漸增代碼Code如下:
達(dá)標(biāo)模塊:
Option Explicit
Public Const EWX_SHUTDOWN = 1 '關(guān)閉操作系統(tǒng)
Declare Function ExitWindowsEx Lib
"user32" (ByVal uFlags As Long, ByVal
dwReserved As Long) As Long
窗體模塊:
Option Explicit
Dim txtTime '保存輸入時(shí)候
Dim nowTime '保存實(shí)時(shí)時(shí)候
Dim oldTime '保存開(kāi)端定時(shí)時(shí)候
Private Sub Command1_Click()
oldTime = Time
If Not IsDate(Text1.Text) Then
'用IsData參數(shù)判斷輸入的時(shí)候各式
MsgBox "你所輸入的否則時(shí)候各式,請(qǐng)重試!", , "Wrong"
Else
txtTime = TimeValue(Text1.Text)
End If
Timer1.Enabled = True
'啟動(dòng)定時(shí)器
Me.WindowState = 1
'最小化窗體
End Sub
Private Sub Timer1_Timer()
nowTime = Time
If Option1(0).Value Then
If DateDiff("s", nowTime, txtTime) < 0
Then '用DateDiff參數(shù)判斷也許到時(shí)候了
If Not ExitWindowsEx(EWX_SHUTDOWN, 0)
Then MsgBox ("無(wú)法關(guān)閉電腦")
End If
End If
Else
If DateDiff("s", nowTime, oldTime + txtTime) < 0
Then If Not ExitWindowsEx(EWX_SHUTDOWN, 0)
Then MsgBox ("無(wú)法關(guān)閉電腦")
End If
End If
End If
End Sub
---- 結(jié)束語(yǔ):以上程式在VB5.0/6.0和Win98上調(diào)試經(jīng)過(guò)。其實(shí),此程式還可漸增一部份花樣,譬如,最后窗體否則最小化,而是調(diào)用Win32 API參數(shù),把她的圖標(biāo)放在操作系統(tǒng)任務(wù)欄里,即在右下角有聲音,時(shí)候等圖標(biāo)的地方,那是另外唯一主題了。