2010-07-29 6 views
1

Salut j'ai une application windows où je montre un webbrowser, j'ai un bouton qui supprime le navigateur (c'est un aperçu) et va à une autre "vue" dans mon application (un autre onglet). Mon problème est que mes utilisateurs sont avancés, ils construisent HTML avec des liens (et c'est ok) mais les liens peuvent générer de nouvelles fenêtres de navigateur (IExplorer), et mon bouton doit fermer ces fenêtres, mais comment?Comment fermer toutes les fenêtres ouvertes de mon programme C#?

J'ai fait du code pour traverser toutes les fenêtres eht qui se termine par "Windows Internet Explorer", et tout semble fonctionner - mais comment puis-je les fermer? Je suis en train de le faire comme ceci:

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

Il semble fonctionner, mais le navigateur affiche une boîte de dialogue me demandant si je veux fermer l'onglet de tous les onglets ... comment travailler autour/résous ce?

Cheers,

Répondre

1
  1. marche sur tous les haut niveau et les fenêtres iE de fermeture est une mauvaise idée, à moins que vous les utilisateurs ne peuvent pas lancer la garantie et à savoir naviguer sur Internet sur leur propre. Sinon, vous risquez de perdre des données utilisateur (par exemple un e-mail ou un article sur lequel l'utilisateur a travaillé au cours de la dernière demi-heure)

  2. Vous ne pouvez pas facilement contourner ce dialogue sans modifier l'IE par utilisateur paramètres. Votre autre option est de rechercher cette boîte de dialogue et cliquez sur le bouton Oui, mais ce serait fragile et n'est pas garanti de continuer à fonctionner si l'utilisateur met à niveau vers IE9.

  3. Vous pouvez potentiellement empêcher l'ouverture de liens dans une nouvelle fenêtre en écoutant l'événement BeforeNavigate et en n'autorisant que les navigations dont le contrôle est garanti. Cependant, il existe des scénarios dans lesquels IE pourrait décider d'ouvrir une nouvelle fenêtre.

+0

+1 pour # 1. Je ne voudrais pas pour une application de fermer sans discernement toutes mes fenêtres IE. – JMarsch

Questions connexes