Как закрыть все открытые окна из моей программы на C #? - PullRequest
1 голос
/ 29 июля 2010

Привет, у меня есть приложение для Windows, где я показываю веб-браузер, у меня есть кнопка, которая удаляет браузер (его предварительный просмотр) и переходит к другому «представлению» в моем приложении (еще одна вкладка). Моя проблема в том, что мои пользователи становятся продвинутыми, они создают HTML со ссылками (и это нормально), но ссылки могут порождать новые окна браузера (IExplorer), и моя кнопка должна закрывать эти окна, но как?

Я сделал некоторый код для обхода всех окон, оканчивающихся на «Windows Internet Explorer», и, кажется, все работает - но как мне их закрыть? Я пытаюсь сделать это так:

SendMessage((int)hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);

Кажется, это работает, но в браузере появляется диалоговое окно с вопросом, хочу ли я закрыть вкладку всех вкладок ... как обойти / решить эту проблему?

Приветствия

1 Ответ

1 голос
/ 29 июля 2010
  1. обходить все окна iE верхнего уровня и закрывать их - плохая идея, если только вы не гарантированно, что пользователи не могут запускать, т. Е. Просматривать Интернет самостоятельно.В противном случае вы можете фактически потерять пользовательские данные (скажем, электронное письмо или сообщение в блоге, над которым пользователь работал в последние полчаса)

  2. Вы не можете легко обойти этот диалогбез изменения настроек IE для каждого пользователя.Другой вариант - поискать это диалоговое окно и нажать кнопку «Да», но это может быть хрупким и не гарантирует продолжения работы, если пользователь обновится до IE9.

  3. Вы можете предотвратитьоткрыв ссылки в новом окне, прослушав событие BeforeNavigate и разрешив только переходы, которые гарантированно произойдут под вашим контролем.Однако есть сценарии, в которых IE может решить открыть новое окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...