【发布时间】:2020-08-18 14:51:01
【问题描述】:
我目前正在使用 VB.NET 开发软件(使用 Visual Studio 2019)。
我需要将流程放在首位。 我正在使用此代码:
Private Sub BringInternet_Click(sender As Object, e As EventArgs) Handles BringInternet.Click
Dim mngcls As ManagementClass = New ManagementClass("Win32_Process")
Do
For Each instance As ManagementObject In mngcls.GetInstances()
If instance("Name").ToString = "msedge.exe" Then
Dim ID As Integer = instance("ProcessId")
MsgBox(ID)
AppActivate(ID)
Exit Do
End If
Next
Loop While False
End Sub
有时它会起作用,但大多数时候它不起作用。我已经对此进行了一些研究,但我没有发现有关此错误的任何信息。
【问题讨论】:
-
首先,
Do...While循环的意义何在?无论如何它只会运行一次。 -
找到进程后退出。否则我有一个错误,因为我尝试多次调用同一个进程。
-
您可以删除
Do...While并只删除For Each循环上的Exit For。 -
再一次,你的
Do...While循环只会运行一次(因为Loop While False)。你应该改变条件(如果你真的需要循环;但我认为你不需要它)或者你应该摆脱它并使用Exit For而不是Exit Do。 -
令人惊讶的是它的工作原理,Edge 是一个 UWP 应用程序。请改用
Process.Start("microsoft-edge:")。 Backgrounder