Я использую приложение XBAP с полным доверием. Мне нужно закрыть браузер, в котором размещен XBAP, когда я нажимаю кнопку. Как я могу этого добиться? Application.Currenty.ShutDown()
только закрывает приложение, оставляя браузер пустым.
Как я могу закрыть браузер из XBAP?
comment
+1, чтобы компенсировать несправедливый -1... хороший вопрос
- person Thomas Levesque   schedule 31.08.2009
Ответы (3)
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);
}
person
Svetlozar Angelov
schedule
31.08.2009
Мне не удалось найти HtmlPage в проекте xbap, я попытался обратиться к пространству имен system.windows.browser, но не смог его найти.
- person Arvind; 31.08.2009
Это звучит более полезно: мой коллега должен предотвратить запуск нескольких экземпляров приложения XBAP. Закрытие неисправного нового экземпляра этим методом спасло ему жизнь :) Спасибо.
- person Larry; 10.09.2009
Я знаю, что это действительно старый вопрос, но если у кого-то возникнет эта проблема, вот более простое решение, которое закроет только одну вкладку.
Environment.Exit(0);
Источник: форумы Microsoft
person
Dan
schedule
23.05.2012
Это здорово!, однако он также закрывает весь 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();
}
person
PrimeTSS
schedule
27.06.2010