Получение идентификатора процесса SHDocVw.InternetExplorer порождал процесс IE8 - PullRequest
3 голосов
/ 22 августа 2011

Я использую SHDocVw.InternetExplorer для запуска IE в моем коде. В некоторых случаях InternetExplorer.Quit () не работает. Я попробовал несколько вещей , чтобы заставить Quit работать, но безуспешно. Я сейчас прибегаю к Process.Kill.

Теперь, если запущенный вручную экземпляр IE8 уже запущен, когда SHDocVw.InternetExplorer используется для запуска другого, новый создается как дочерний процесс существующего IE:

SHDocVw.InternetExplorer spawned IE is a child of the existing IE

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, поэтому?

...