VB.net显示了EXTERNAL程序的多个实例

时间:2013-10-02 13:59:53

标签: c# wpf vb.net process count

现在我有以下代码,应该显示在加载事件

上打开的实例数
Class MainWindow 

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim processCount As Integer = Process.GetProcessesByName("WinWord").Count()

        MessageBox.Show(String.Format("{0} Instances Running", processCount.ToString()))
    End Sub
End Class

但是,如果我运行带有2个Word实例的程序,它只显示1.这可能是由于Windows 8/7如何处理实例?在任务管理器中我看到了进程(Microsoft Word(32位)(2)),对我来说这意味着2个单词的实例是开放的,对吧?!?!

我的代码出了什么问题?如果您的示例是在C#中,这很好!

2 个答案:

答案 0 :(得分:1)

感谢Denis,下面的代码与其他进程一起工作,看看有多少个程序实例是打开的,但是看起来Window 8只打开一个WinWord进程并将它放在一个PID下,即使你打开多于1个实例

Class MainWindow 

    Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
        Dim processCount As Integer = Process.GetProcessesByName("WinWord").Count()

        MessageBox.Show(String.Format("{0} Instances Running", processCount.ToString()))
    End Sub
End Class

答案 1 :(得分:-1)

如果你改变" WINWORD"到" WinWord"这可能会帮助你。尝试完全匹配.GetProcessByName中的进程名称。除此之外,Windows可能只返回.count调用上的一个实例。在这种情况下,您可以获取程序名称的实例,并将其分配给您自己的计数(变量)以获得所需的结果。