Закрыть IE и Open 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.

Что я могу сделать, чтобы остановить разделение ком? Я хотел бы, чтобы программа запускалась с Windows и продолжала работать все время.

Спасибо

1 ответ

Решение

Я исправил это в основном создание цикла

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
Другие вопросы по тегам