vb 프로세스가 실행 중인지 확인

2198 단어 qqvb
vb 프로세스가 실행 중인지 확인
모듈에 다음 코드를 추가합니다.
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 
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long) 
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 



Function exitproc(ByVal exefile As String) As Boolean 
exitproc = False 
Dim hSnapShot As Long, uProcess As PROCESSENTRY32 
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) 
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 
exitproc = True 
Exit Do 
End If 
r = Process32Next(hSnapShot, uProcess) 
Loop 
End Function

예는 다음과 같습니다.
Private Sub Command1_Click() 
If exitproc("QQ.exe") Then '  QQ.exe      
MsgBox "  !" 
Else 
MsgBox "   !" 
End If 
End Sub

좋은 웹페이지 즐겨찾기