Страницы

Поиск по вопросам

понедельник, 9 марта 2020 г.

Моргающее в панели задач окно

#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();

Комментариев нет:

Отправить комментарий