Как получить имя приложения из имени процесса?

Мне нужно знать, как получить такое имя приложения, когда у меня есть имя процесса:

введите описание изображения здесь

Мой прогресс на данный момент:

Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpdwProcessId As Int32) As Int32
Private Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As IntPtr
'Private Declare Auto Function GetWindowText Lib "user32" (ByVal hWnd As System.IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer
Private makel As String
Private Function GetActiveAppProcess() As Process
    Dim activeProcessID As IntPtr
    GetWindowThreadProcessId(GetForegroundWindow(), activeProcessID)
    Return Process.GetProcessById(activeProcessID)
End Function
Sub GetProcInfo()
    Dim activeProcess As Process = GetActiveAppProcess()
    With activeProcess
        ProcessName = .ProcessName
        Windowtitle = .MainWindowTitle
        'Application name = ?
    End With
End Sub

Я почти у цели, за исключением того, что Process.ProcessName возвращает «проводник». Как мне получить значение «Проводник Windows»? Любая помощь приветствуется.


person Ravi Kiran    schedule 06.11.2015    source источник
comment
Используйте Process.MainModule.Filename, чтобы получить путь к exe. Затем FileVersionInfo.GetVersionInfo (path) .FileDescription, чтобы получить описание.   -  person Hans Passant    schedule 06.11.2015
comment
Потрясающий! Получилось :) Спасибо, Ганс! ApplicationName = FileVersionInfo.GetVersionInfo (activeProcess.MainModule.FileName) .FileDescription   -  person Ravi Kiran    schedule 06.11.2015
comment
@HansPassant, можете ли вы добавить ответ, чтобы закрыть этот вопрос?   -  person benni_mac_b    schedule 06.11.2015


Ответы (1)


Поскольку Ханс еще не опубликовал ответ, вот ответ, который он предложил в комментариях к вопросу. Надеюсь, все не возражают, что я взял на себя смелость написать ответ.

Sub GetProcInfo()
   Dim activeProcess As Process = GetActiveAppProcess()
   With activeProcess
        ApplicationName = .MainModule.FileVersionInfo.FileDescription
        ProcessName = .ProcessName
        WindowTitle = .MainWindowTitle
   End With
End Sub
person Jeff B    schedule 31.05.2016