J'utilise une application XBAP en toute confiance. Je dois fermer le navigateur hébergeant le XBAP quand je clique sur un bouton. Comment puis-je atteindre cet objectif? Application.Currenty.ShutDown()
ferme uniquement l'application, laissant le navigateur vide.Comment puis-je fermer le navigateur à partir d'un XBAP?
Répondre
EDIT: Mon erreur, voici un fil avec votre problème - http://social.msdn.microsoft.com/forums/en-US/wpf/thread/21c88fed-c84c-47c1-9012-7c76972e8c1c
et d'être plus précis (ce code doit pleine confiance les paramètres de sécurité)
using System.Windows.Interop;
using System.Runtime.InteropServices;
[DllImport("user32", ExactSpelling = true, CharSet = CharSet.Auto)]
private static extern IntPtr GetAncestor(IntPtr hwnd, int flags);
[DllImport("user32", CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
private void button1_Click(object sender, RoutedEventArgs e)
{
WindowInteropHelper wih = new WindowInteropHelper(Application.Current.MainWindow);
IntPtr ieHwnd = GetAncestor(wih.Handle, 2);
PostMessage(ieHwnd, 0x10, IntPtr.Zero, IntPtr.Zero);
}
je ne pouvais trouver HtmlPage dans le projet XBAP, tryed à refere espace de noms system.windows.browser Ne pas le trouver. – Arvind
Merci Cela a fonctionné. – Arvind
Il est plus utile que cela semble être: Un de mes collègues doit empêcher le lancement de plusieurs instances d'une application XBAP. Fermer la nouvelle instance défectueuse en utilisant cette méthode lui a sauvé la vie :) Merci. – Larry
C'est great !, mais il arrête également tout IE, y compris les onglets ouverts
Vous ne croirez pas cela sur e, mais si vous faites aussi un Application.Current.Shutdown(): après ci-dessus, il annule l'arrêt IE total et ferme simplement l'onglet applications.
private void exitButton_Click(object sender, RoutedEventArgs e)
{
// This will Shut entire IE down
WindowInteropHelper wih = new WindowInteropHelper(Application.Current.MainWindow);
IntPtr ieHwnd = GetAncestor(wih.Handle, 2);
PostMessage(ieHwnd, 0x10, IntPtr.Zero, IntPtr.Zero);
// Singularly will just shutdown single tab and leave white screen, however with above aborts the total IE shutdown
// and just shuts the current tab
Application.Current.Shutdown();
}
Je sais que cela est une question très ancienne, mais au cas où quelqu'un a ce problème, voici une solution simple qui clôturera juste l'un onglet.
Environment.Exit(0);
Source: Microsoft Forums
+1 pour compenser la injuste -1 ... qui est une bonne question –