.net 在组合框中显示进程时出现问题

.net 在组合框中显示进程时出现问题,.net,vb.net,visual-studio-2010,process,.net,Vb.net,Visual Studio 2010,Process,在我的应用程序中,用户单击一个按钮,然后加载一个表单,在这个表单中有一个组合框,它生成一个窗口进程列表并显示窗口名称 它在VisualStudio中总是工作得很好,尽管当我启动编译版本时,总是发现这个错误进程{0}未找到 我认为这意味着它没有可读取的进程,所以我添加了一些代码,仅当数量大于或等于1时才显示,这没有帮助 有人看到我的问题了吗 Dim ProcessList() As Process = Process.GetProcesses If ProcessList.Cou

在我的应用程序中,用户单击一个按钮,然后加载一个表单,在这个表单中有一个组合框,它生成一个窗口进程列表并显示窗口名称

它在VisualStudio中总是工作得很好,尽管当我启动编译版本时,总是发现这个错误进程{0}未找到

我认为这意味着它没有可读取的进程,所以我添加了一些代码,仅当数量大于或等于1时才显示,这没有帮助

有人看到我的问题了吗

     Dim ProcessList() As Process = Process.GetProcesses
    If ProcessList.Count() >= 1 Then
        For I = 0 To UBound(ProcessList)
            If ProcessList(I).MainWindowTitle.ToString = "" = False Then
                ComboBox1.Items.Add(ProcessList(I).MainWindowTitle.ToString)
            End If


        Next
    Else
        ComboBox1.Items.Add("No windows found")
    End If
更改此行:

For I = 0 To UBound(ProcessList)
致:


在VB中,有些数组从1开始。我无法复制您的问题,我在Visual Studio中运行了您的代码,没有错误,在可执行文件中也没有错误。在联机查找错误时,它不是描述性的,这表明该过程无法访问该函数。您可以尝试添加一些额外的检查,作为最后的手段,如果您有Visual Studio Professional或更高版本,您可以将其添加到可执行文件中,并以这种方式排除错误。下面是我用来测试的代码

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ProcessList() As Process = Process.GetProcesses
        If ProcessList.Count() >= 1 Then
            For Each p As Process In ProcessList
               If Not IsNothing(p) Then
                    If Not String.IsNullOrEmpty(p.MainWindowTitle) Then
                        ComboBox1.Items.Add(p.MainWindowTitle.ToString)
                    End If
                End If
            Next
        Else
            ComboBox1.Items.Add("No windows found")
        End If
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim ProcessList() As Process = Process.GetProcesses
        If ProcessList.Count() >= 1 Then
            For Each p As Process In ProcessList
                If Not IsNothing(p) Then
                    ComboBox1.Items.Add(p.ProcessName)
                End If
            Next
        Else
            ComboBox1.Items.Add("No windows found")
        End If
    End Sub
End Class

从VB6开始就没有了,System.Diagnostics.GetProcesses返回的任何集合都将是零基的。对不起,我不在家,所以我还没有尝试过。马克,你知道它为什么不起作用吗?就像我说的,这只发生在编译的调试/发布副本上。@user1632018我的第一个猜测是权限问题,请右键单击您的exe并以管理员身份运行Hi mark,谢谢您的回复。我回家后会试试,唯一的问题是当我把我的软件分发给需要以管理员身份运行的人时,这可能是个问题,如果需要,我是否能够在应用程序中编写代码,自动提示用户以管理员身份运行。@user163218是的,您可以,看看这是否真的是个问题,查看GetProcesss文档,看看它是否说明了需要哪些权限。我正在旅行,在我的iPhone上,当我今晚安顿下来的时候,我会调查一下。试着以管理员的身份运行。如果你看看开发环境中的流程,它们是你的应用程序还是visual studio?
Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ProcessList() As Process = Process.GetProcesses
        If ProcessList.Count() >= 1 Then
            For Each p As Process In ProcessList
               If Not IsNothing(p) Then
                    If Not String.IsNullOrEmpty(p.MainWindowTitle) Then
                        ComboBox1.Items.Add(p.MainWindowTitle.ToString)
                    End If
                End If
            Next
        Else
            ComboBox1.Items.Add("No windows found")
        End If
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim ProcessList() As Process = Process.GetProcesses
        If ProcessList.Count() >= 1 Then
            For Each p As Process In ProcessList
                If Not IsNothing(p) Then
                    ComboBox1.Items.Add(p.ProcessName)
                End If
            Next
        Else
            ComboBox1.Items.Add("No windows found")
        End If
    End Sub
End Class