Мигание Кнопки В Taskbar С Помощью Flashwindowex

  • Автор темы Автор темы Shouldercannon
  • Дата начала Дата начала
S

Shouldercannon

Доброго времени суток!
Нашёл пример с запуском и остановкой мигания кнопки в TaskBar. И столкнулся с проблемами.
1. После остановки мигания кнопкой стоп, кнопка формы в TaskBar хоть и не мигает, но продолжает светиться (замечено если произвести остановку в момент мигания).
2. Как с помощью таймера зациклить мигание и затем остановить?
 

Вложения

Доброго времени суток!
Нашёл пример с запуском и остановкой мигания кнопки в TaskBar. И столкнулся с проблемами.
1. После остановки мигания кнопкой стоп, кнопка формы в TaskBar хоть и не мигает, но продолжает светиться (замечено если произвести остановку в момент мигания).
Похоже Ваши проблемы в нежелании читать хелпы... <_<
Ваш Button2Click замораживает моргание а не отменяет. Посто задайте условие для прекращения моргания.
FlashOptions
...
FLASHW_TIMER - Flash continuously, until the FLASHW_STOP flag is set. (моргаем пока флаг FLASHW_STOP не установлен)
FLASHW_TIMERNOFG = &HC ' Flash continuously until the window comes to the foreground. (соргаем пока окно не станет активным)

Код:
var
fl: FLASHWINFO; // глобальная переменная

procedure TFormMain.Button1Click(Sender: TObject);
begin
ZeroMemory(@fl,SizeOf(fl)); // очистить структуру
fl.cbSize := SizeOf(fl);
fl.hwnd := Self.Handle;
fl.dwFlags := FLASHW_ALL; // тоже самое что FLASHW_CAPTION or FLASHW_TRAY;
fl.uCount := 100; // после 99 "мыргов" - моргание прекратится
fl.dwTimeout := 0; // моргание со стандартной частотой курсора
FlashWindowEx(fl);
end;

procedure TFormMain.Button2Click(Sender: TObject);
begin
// структура была заполнена в Button1Click.
// тут просто изменяем набор флагов
fl.dwFlags := FLASHW_ALL or FLASHW_TIMERNOFG;
FlashWindowEx(fl);
end;
2. Как с помощью таймера зациклить мигание и затем остановить?
Не понял вопрос... это типа - где взять таймер? <_<
 
Не понял вопрос... это типа - где взять таймер?
Имел ввиду как это моргание через таймер пустить. Чтобы моргало хоть вечность, пока не произойдёт нужное действие.
Решено. TTImer не нужен.
Код:
fl.dwFlags := FLASHW_ALL or FLASHW_TIMER;
но без
Код:
fl.uCount
иначе эффекта не будет.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab