#c_sharp #wpf #xaml #mvvm
Подскажите пожалуйста как заставить окно моргать в панели задач? Ну так часто делают типа какое то событие в окне произошло, а оно свернуто и вот такое извещение. @VladD хз я может что то не так делаю, но у меня никак не хочет это работать. Я ставил точку останова у меня при попытке создать экземпляр WindowInteropHelper выходит из функции вообще. Тестирую вот так: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var t = new Timer(5000); t.Elapsed += Elapsed; t.Start(); } [DllImport("user32.dll")] public static extern int FlashWindow(IntPtr Hwnd, bool Revert); private void Elapsed(object sender, ElapsedEventArgs e) { var hwnd = new WindowInteropHelper(this).Handle; FlashWindow(hwnd, true); } }
Ответы
Ответ 1
Попробуйте так: [DllImport("user32.dll")] public static extern int FlashWindow(IntPtr Hwnd, bool Revert); // ... var hwnd = new WindowInteropHelper(window).Handle; FlashWindow(hwnd, true); Вызывать эту функцию на таймере не стоит, т. к. он доставляет сообщения в непонятно какой поток. Используйте DispatcherTimer, он выполняет события в главном потоке: var dt = new DispatcherTimer(); dt.Tick += (s, e) => { dt.Stop(); var hwnd = new WindowInteropHelper(this).Handle; FlashWindow(hwnd, true); }; dt.Interval = TimeSpan.FromSeconds(5); dt.Start();
Комментариев нет:
Отправить комментарий