Приложение Xbap: Как я могу предложить пользователю подтвердить выход, когда пользователь закрывает браузер или вкладку браузера? - PullRequest
0 голосов
/ 07 октября 2009

Событие application_exit и session_ending в app.xaml не может помочь.

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 27 июня 2010

Событие session_ending игнорируется для приложений XBAP Однако событие Exit есть, но я не вижу способа отменить выход в этом событии. Однако почему бы просто не вызвать кнопку Exit для вызова метода, требующего выключения, а если ДА, явно закрыть приложение здесь или нет

 [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 exitButton_Click(object sender, RoutedEventArgs e)
        {

            if (MessageBox.Show("Are you Sure you want to Exit?", "Confirm", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                // 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();
            }          
        }

вам также понадобятся эти

с использованием System.Windows.Interop; using System.Runtime.InteropServices;

...