如何用VB6.0編寫壹段程序,能實現某個程序運行結束後(例如QQ.EXE運行結束),電腦自動關機.謝謝,重酬.
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
'上面聲明常數 和 API函數
Function exitproc(ByVal exefile As String) As Boolean
exitproc = False '先將該函數過程賦值為假
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) '給系統進程創建快照 調用成功 則返回快照的句柄 調用失敗 返回INVAID_HANDLE_VALUE
uProcess.dwSize = Len(uProcess)
r = Process32First(hSnapShot, uProcess) '初始遍歷進程
Do While r
If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = exefile Then 'left截取null前的字符~也就是進程列表~再判斷是否有qq.exe
exitproc = True '該函數過程為真 即有此進程
Exit Do '退出循環
End If
r = Process32Next(hSnapShot, uProcess) '遍歷下壹個進程
Loop
End Function
窗體代碼如下 壹個timer控件 壹個按鈕(可要可不要)
Private Sub Command1_Click()
Timer1.Enabled = False '停止監控
End Sub
Private Sub Form_Load()
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
If exitproc("QQ.exe") Then '檢測QQ.exe進程是否存在
Else
x = MsgBox("15秒後關閉計算機", vbYesNo, "警告") '彈出對話框
Timer1.Enabled = False '先將timer控件暫停監視
If x = vbYes Then '如果點擊對話框“是”按鈕 則執行關機
Shell "cmd /c shutdown -s -t 15", 0
Else
Timer1.Enabled = True '如果點 ”否“則繼續監控
End If
End If
End Sub