Est-il possible de déclencher le bouton “X Flash de la barre des tâches” de Windows ou jusqu’à ce que la fenêtre apparaisse au premier plan? J’essaie d’attirer l’attention de l’utilisateur sur un script de longue durée à la fin.
Utiliser un programme externe pour déclencher le clignotement convient, à condition qu’il ne nécessite aucune installation (l’exécutable peut être associé à mes scripts).
Mettre à jour
Voici ce que j’ai fini avec (un port minimaliste du code Delphi d’Andreas). Je l’ai compilé sous MinGW à ce qui semble dépendre uniquement de KERNEL32.DLL et USER32.DLL, donc devrait être très portable.
Clignote trois fois, puis rest en surbrillance jusqu’au premier plan.
#define WINVER 0x501 #define _WIN32_WINNT 0x501 #include void main(int argc, char **argv) { FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 }; FlashWindowEx(&info); }
Il est très facile de faire en utilisant un très simple external * .exe. Il suffit d’appeler la fonction FlashWindowEx
de l’API Windows.
Ceci est un exemple d’application de la console Delphi:
program flashwnd; {$APPTYPE CONSOLE} uses SysUtils, Windows; var OldTitle, UniqueTitle: ssortingng; h: HWND; c: cardinal; fwi: TFlashWInfo; begin try h := GetConsoleWindow(); c := 10; if ParamCount = 1 then c := StrToInt(ParamStr(1)); FillChar(fwi, sizeof(fwi), 0); fwi.cbSize := sizeof(fwi); fwi.hwnd := h; fwi.dwFlags := FLASHW_ALL; fwi.uCount := c; fwi.dwTimeout := 0; FlashWindowEx(fwi); except on E: Exception do Writeln(E.ClassName + ': ' + E.Message); end; end.
Il suffit de l’appeler comme
flashwnd
pour flasher la fenêtre de console actuelle dix fois. Appel
flashwnd 27
clignoter la fenêtre 27 fois.