Как узнать: работает ли какая-либо сторонняя программа - VB
Формулировка задачи:
Добрый вечер. Появился вопрос: как можно проверить работает ли какая-то программа в данный момент.
Есть у меня один метод но мне он не подходит:
И если программа активна, выдаст ошибку 75.
Но если нет то удалит
Подскажите кто знает может обойтись тут Api функцией.
Спасибо.
Листинг программы
- Option Explicit
- Private Sub Command1_Click()
- Kill ("C:\file.exe")
- End Sub
Решение задачи: «Как узнать: работает ли какая-либо сторонняя программа»
textual
Листинг программы
- 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 * 260
- 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 CloseHandle Lib "Kernel32" (ByVal hPass As Long)
- Public Function ProcessExist(WhatProcess$) As Boolean
- Dim hSnapShot&, uProcess As PROCESSENTRY32, r As Long, ProcessName$
- hSnapShot = CreateToolhelp32Snapshot(15&, 0&)
- uProcess.dwSize = Len(uProcess)
- r = Process32First(hSnapShot, uProcess)
- Do While r
- ProcessName = Left$(uProcess.szExeFile, IIf(InStr(uProcess.szExeFile, Chr$(0)) > 0, InStr(uProcess.szExeFile, Chr$(0)) - 1, 0))
- If StrComp(ProcessName, WhatProcess, vbTextCompare) = 0 Then ProcessExist = True: Exit Do
- r = Process32Next(hSnapShot, uProcess)
- Loop
- CloseHandle hSnapShot
- End Function
- Sub test()
- MsgBox ProcessExist("notepad.exe")
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д