【问题标题】:How to get Application name from process name?如何从进程名称中获取应用程序名称?
【发布时间】:2015-11-06 10:28:53
【问题描述】:

当我有进程名称时,我需要知道如何获取这样的应用程序名称:

我目前的进展:

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 返回“explorer”之外,我就快到了。如何获得“Windows Explorer”的值? 任何帮助表示赞赏。

【问题讨论】:

  • 使用 Process.MainModule.Filename 获取 exe 的路径。然后 FileVersionInfo.GetVersionInfo(path).FileDescription 得到描述。
  • 太棒了!它工作:) 谢谢汉斯! ApplicationName = FileVersionInfo.GetVersionInfo(activeProcess.MainModule.FileName).FileDescription
  • @HansPassant 你能添加答案来结束这个问题吗?

标签: .net vb.net process taskmanager


【解决方案1】:

由于 Hans 尚未发布答案,因此这是他在问题的 cmets 中建议的答案。我希望大家不要介意我冒昧继续写一个答案。

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

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多