Проверка на открытие\закрытие программы - VB
Формулировка задачи:
Всем привет! У меня запущена например программа "Проект1.exe"
Нужно сделать проверку
Если эта программа запущена, то закрыть ее, если нет - то ничего не делать.)))
Решение задачи: «Проверка на открытие\закрытие программы»
textual
Листинг программы
Private Sub Command1_Click()
'// Сюда пишем полный путь к своей программе
AppFind "c:\users\alex\desktop\Picture_Find.exe"
End Sub
Sub AppFind(ExecPath)
Dim wmiObj, proCollection, scrShell, Proc, Query, AppName, Way
Set wmiObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
ExecPath = Replace(ExecPath, "\", "\\")
AppName = Mid(ExecPath, InStrRev(ExecPath, "\") + 1)
'// Name в запросе можно опустить, т.к. имя процесса входит в состав ExecutablePath
'// приведено исключительно с соображений демонстрации синтаксиса языка запросов WMI
Query = "SELECT Handle FROM Win32_Process WHERE (Name = '" & AppName & "' AND ExecutablePath = '" & ExecPath & "')"
Set proCollection = wmiObj.ExecQuery(Query)
'// If proCollection.Count = 0 Then Exit Sub
For Each Proc In proCollection
Way = MsgBox("Найдено приложение с PID = " & Proc.Handle & vbLf & "Да - Завершить, Нет - Активировать.", vbYesNo)
If (Way) = vbYes Then
Proc.Terminate
Else
CreateObject("WScript.Shell").AppActivate Proc.Handle
'// Handle - это на самом деле не Hwnd, а PID (это MS так назвала свойство :)
End If
Next
End Sub