关闭IE并打开Chrome,只运行一次,然后崩溃



我有以下非常简单的脚本

Imports System.Management
Imports System
Module Module1
Dim watcher As ManagementEventWatcher
Sub Main()
    Dim monitoredProcess = "iexplore.exe"
    Dim query As WqlEventQuery = New WqlEventQuery("__InstanceCreationEvent", New TimeSpan(0, 0, 1), "TargetInstance isa ""Win32_Process"" And TargetInstance.Name = """ & monitoredProcess & """")
    watcher = New ManagementEventWatcher()
    watcher.Query = query
    watcher.Start()
    watcher.WaitForNextEvent()
    For Each p As Process In Process.GetProcessesByName("iexplore")
        p.Kill()
    Next
    Process.Start(New System.Diagnostics.ProcessStartInfo("Chrome", "http://google.com"))
End Sub
End Module

它应该监控 ie 窗口何时打开,关闭它并运行 chrome。这在第一次工作得很好,但是一旦完成,它就会崩溃并显示以下错误

An unhandled exception of type     'System.Runtime.InteropServices.InvalidComObjectException' occurred in System.Management.dll
Additional information: COM object that has been separated from its underlying RCW cannot be used.

我该怎么做才能阻止通信分离?我希望程序从窗口开始并继续一直运行。

谢谢

我修复了这基本上是一个循环

Imports System.Management
Imports System
Module Module1
Dim watcher As ManagementEventWatcher
Sub Main()
    Dim monitoredProcess = "iexplore.exe"
    Dim query As WqlEventQuery = New WqlEventQuery("__InstanceCreationEvent", New TimeSpan(0, 0, 1), "TargetInstance isa ""Win32_Process"" And TargetInstance.Name = """ & monitoredProcess & """")
    watcher = New ManagementEventWatcher()
    watcher.Query = query
    watcher.Start()
    watcher.WaitForNextEvent()
    For Each p As Process In Process.GetProcessesByName("iexplore")
        p.Kill()
    Next
    Process.Start(New System.Diagnostics.ProcessStartInfo("Chrome", "http://google.com"))
    watcher.Stop()
    watcher.Dispose()
    Main()
End Sub
End Module

相关内容

  • 没有找到相关文章

最新更新