Проверка на открытие\закрытие программы - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5
Похожие ответы