Как я могу закрыть браузер от XBAP? - PullRequest
5 голосов
/ 31 августа 2009

Я использую приложение XBAP с полным доверием. Мне нужно закрыть браузер с XBAP, когда я нажимаю кнопку. Как мне этого добиться? Application.Currenty.ShutDown() только закрывает приложение, оставляя браузер пустым.

Ответы [ 3 ]

5 голосов
/ 23 мая 2012

Я знаю, что это действительно старый вопрос, но если у кого-то есть такая проблема, вот более простое решение, которое закроет только одну вкладку.

Environment.Exit(0);

Источник: Форумы Microsoft

4 голосов
/ 31 августа 2009

EDIT: Моя ошибка, вот нить с вашей проблемой - http://social.msdn.microsoft.com/forums/en-US/wpf/thread/21c88fed-c84c-47c1-9012-7c76972e8c1c

и, если быть более точным, (для этого кода требуется полное доверие настройки безопасности)

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);      
}
1 голос
/ 27 июня 2010

Это здорово !, но также закрывает все IE, включая любые открытые вкладки

Вы не поверите этому, но если вы также делаете Application.Current.Shutdown (): после вышеописанного он отменяет полное закрытие IE и просто закрывает вкладку приложений.

 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();
        }
...