Как найти exe-имя из идентификатора процесса - PullRequest
1 голос
/ 28 января 2020

У меня есть функция, которая завершает процесс активного окна. он получает дескриптор окна, затем находит свой идентификатор процесса и завершает свой процесс. но проблема в том, что (explorer.exe)

Я хочу поставить условие игнорирования конечного процесса, если имя процесса равно (explorer.exe)

Но я не знаю, как

Это мой код:

Private Sub ENDS_WINDOW_PROCESS(Window_Handle As Long)

    Dim target_process_id As Long
    Dim target_process_handle As Long

    If Window_Handle = 0 Then
        'MsgBox "Error finding target window handle"
        Exit Sub
    End If

    GetWindowThreadProcessId Window_Handle, target_process_id
    If target_process_id = 0 Then
        'MsgBox "Error finding target process ID"
        Exit Sub
    End If

    target_process_handle = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, ByVal 0&, target_process_id)

    If target_process_handle = 0 Then
        'MsgBox "Error finding target process handle"
        Exit Sub
    End If

    If TerminateProcess(target_process_handle, 0&) = 0 Then
        'MsgBox "Error terminating process"
    Else
        'MsgBox "Process terminated"
    End If

    CloseHandle target_process_handle
End Sub

1 Ответ

3 голосов
/ 28 января 2020

Попробуйте эту функцию (модификация http://www.vbforums.com/showthread.php?763427-RESOLVED-Get-exe-name-from-Process-ID-fails-Help)

Public Function GetExeName(pid As Long) As String
    Dim Process As Object
    Dim sFilePath As String
    Dim lPos As Long
    On Error GoTo GetFileErr:

    'Scan process and find pid then return the path and exe name
    For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
        If (pid = CLng(Process.ProcessID)) Then
            'Return exe path
            sFilePath = Process.ExecutablePath
            lPos = InStrRev(sFilePath, "\", Compare:=vbTextCompare)
            If lPos > 0 Then GetExeName = Mid$(sFilePath, lPos + 1)
            Exit Function
        End If
    Next Process

    Exit Function

GetFileErr:
    GetExeName = vbNullString
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...