VB 进程守护

时间: 2011-03-26 / 分类: 代码 / 浏览次数: / 0个评论 发表评论


Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long

Const PROCESS_QUERY_INFORMATION = &H400

Const STILL_ALIVE = &H103

Const INFINITE = &HFFFF

Private ExitCode As Long
Private hProcess As Long
Private isDone As Long
Dim pid As Long
Private Sub Command2_Click()
MsgBox STILL_ALIVE
End Sub

Private Sub Form_Load()

pid = Shell("Notepad ", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
End Sub

Private Sub Timer1_Timer()
Call GetExitCodeProcess(hProcess, ExitCode)
Debug.Print ExitCode
If ExitCode <> STILL_ALIVE Then
Call CloseHandle(hProcess)
Call Form_Load()
End If
End Sub

发表评论

您的昵称 *

您的邮箱 *

您的网站