#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();
Комментариев нет:
Отправить комментарий