用VB.net句柄杀死进程

用VB.net句柄杀死进程,vb.net,winforms,Vb.net,Winforms,我正在打开internet explorer的一个实例,然后试图关闭该实例。我的代码只能打开网站,不能关闭它。它跳过了应该关闭它的代码,并在internet explorer中不断打开新的选项卡。我想在打开第二个之前先关闭第一个。这是我目前掌握的代码: Dim IE As Process = Process.Start("google.com") 'open the website 'close the website Dim IEProcesses() As Process = System.

我正在打开internet explorer的一个实例,然后试图关闭该实例。我的代码只能打开网站,不能关闭它。它跳过了应该关闭它的代码,并在internet explorer中不断打开新的选项卡。我想在打开第二个之前先关闭第一个。这是我目前掌握的代码:

Dim IE As Process = Process.Start("google.com") 'open the website
'close the website
Dim IEProcesses() As Process = System.Diagnostics.Process.GetProcessesByName("IExplorer")
For Each Instance As Process In IEProcesses
    If Instance.Handle = IE.Handle Then
        Instance.Kill()
    End If
Next
MsgBox("The website has been closed")

在搜索了论坛后,我发现了很多类似的问题,但我似乎不明白为什么这对我不起作用。任何帮助都将不胜感激

Internet Explorer进程的名称是
iexplore
,而不是
iexplorer
(注意我提到的第一个进程末尾没有r

因此,您的代码应该是:

Dim IEProcesses() As Process = System.Diagnostics.Process.GetProcessesByName("iexplore")
然而,已经向您指出的一点(在现在删除的答案中)是,您不需要像这样迭代流程。您只需对已有的变量调用
Kill()

IE.Kill()
最后,如果您希望/需要确保URL仅由IE打开(而不是由Chrome或用户的默认浏览器打开),您应该特别启动它,将URL作为参数传递:

Dim IE As Process = Process.Start("iexplore.exe", "google.com")

如果您传递一个可以识别为URL“http:\\google.com”的字符串,则您的进程.Start将启动默认浏览器。我的进程名称为chrome。您可能需要检查您使用的名称是否正确。我在Instance.Handle和process.Start.Visual返回的进程句柄中没有找到任何匹配项,我尝试只使用IE.kill(),但出现以下错误“对象引用未设置为对象的实例”。我使用的代码如下:Dim IE As New process IE=process.Start(“google.com”)Threading.Thread.Sleep(TextBox1.Text*1000)IE.Kill()@Code123:这意味着要么进程已经退出,要么没有新进程启动,主应用程序处理了它。如果尝试我的最后一个代码块,会发生什么?