2010-06-28 37 views
1

我期待从进程名称转到windows标题。如何使用vb.net获取进程的窗口标题

例如

'winamp.exe' - >'1。布兰妮斯皮尔斯 - 打我的宝宝一次”

感谢

解决方案:

Dim p As Process 

For Each p In Process.GetProcessesByName("winamp") 

    MsgBox(p.MainWindowTitle.ToString) 

Next 
+1

'ToString'在你的代码中是完全多余的。 'MainWindowTitle'已经*了一个字符串! – 2010-06-28 10:23:37

+0

谢谢opps我的坏:p – Pablo 2010-06-28 18:29:05

+0

Upvote for the window title。 – SamJakob 2017-04-10 12:04:24

回答

1

看一看的System.Diagnostics.Process类:

Process p = <Get process> 
Console.WriteLine(p.MainWindowTitle) 
+0

谢谢.. MainWindowTitle是我需要的:) – Pablo 2010-06-28 09:40:08

0

这里是如何得到文件名作为显示在主标题栏中。这是没有扩展名的文件名。比方说,我的Excel工作簿被命名为“ThisWorks.xlsx”此代码返回“ThisWorks”没有文件扩展名。

Function OpenAppFileNames(ByVal exeName As String) As String 

    Dim p() As Process = System.Diagnostics.Process.GetProcessesByName(exeName) 
    Dim i As Integer = 0 
    Dim x As Integer = UBound(p) + 1 
    Dim Index As Long = 0 
    Dim Title As String = "" 
    Dim Result As String = "" 
    Debug.Print(x) 
    Do 
     If i = x Then 
      Exit Do 
     End If 
     Title = p(i).MainWindowTitle 
     Result += vbNewLine & "Index " & Index + i & " = " & Title 
     i = i + 1 
     'MsgBox(Result) 
    Loop Until i = x 

    Return Result 

End Function 

p返回从0(零)开始的整数数组。如果您知道进程的顺序,您可以返回所需目标的标题/文件名。

希望这会有所帮助......花了3个星期才找到这个答案。

+0

需要注意的是,有些应用程序只能打开单个实例,如MS Word和MS Excel,但该单个实例可能会打开多个工作簿。 – rogue5pawn 2013-11-09 02:29:41