Я использую SHDocVw.InternetExplorer для запуска IE в моем коде. В некоторых случаях InternetExplorer.Quit () не работает. Я попробовал несколько вещей , чтобы заставить Quit работать, но безуспешно. Я сейчас прибегаю к Process.Kill.
Теперь, если запущенный вручную экземпляр IE8 уже запущен, когда SHDocVw.InternetExplorer используется для запуска другого, новый создается как дочерний процесс существующего IE:
![SHDocVw.InternetExplorer spawned IE is a child of the existing IE](https://i.stack.imgur.com/2l8RM.png)
SHDocVw.InternetExplorer IE - это идентификатор процесса 996 на скриншоте, запущенный вручную 3388 плюс его дочерний 2876.
Теперь, если я использую InternetExplorer.HWND , чтобы извлечь дескриптор окна моего IE, а затем GetWindowThreadProcessId , чтобы получить идентификатор процесса, который я получаю в результате с 3388, идентификатор родительского процесса IE, когда я хочу 996, InternetExplorer.HWND запустил идентификатор процесса IE.
Я не уверен, на каком шаге происходит ошибка.
Должен ли я получать HWND другим способом или с идентификатором процесса? Или оба?
Спасибо!
Редактировать: Я только что попытался отправить WM_CLOSE
в HWND, и он закрыл родительский IE. Я полагаю, это означает, что я получаю неправильный HWND?
Редактировать: Возможно, стоит отметить, что при закрытии я вижу только IE, запущенный вручную. Значит ли это, что я получаю HWND единственного видимого IE, поэтому?