vol ver uso significa script que ejemplo comandos comando windows batch-file taskbar

windows - uso - ver comandos



¿Desencadenando el botón de la barra de tareas de un archivo por lotes? (1)

Es muy fácil hacerlo usando un simple * .exe externo. Simplemente tiene que llamar a la función FlashWindowEx de la API de Windows.

Esta es una aplicación de consola Delphi de muestra:

program flashwnd; {$APPTYPE CONSOLE} uses SysUtils, Windows; var OldTitle, UniqueTitle: string; 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.

Simplemente llámalo como

flashwnd

para flashear la ventana de la consola actual diez veces. Llamada

flashwnd 27

para flashear la ventana 27 veces.

¿Es posible desencadenar "el botón de la barra de tareas X de Windows o hasta que la ventana llegue al primer plano" de un archivo por lotes? Estoy tratando de llamar la atención del usuario a un script de larga duración al finalizar.

El uso de un programa externo para activar el parpadeo está bien, siempre y cuando no requiera una instalación (es decir, el archivo ejecutable se puede incluir en mis scripts).

Actualizar

Esto es lo que terminé con (un puerto minimalista del código Delphi de Andreas). Lo he compilado bajo MinGW y parece depender solo de KERNEL32.DLL y USER32.DLL, por lo que debería ser altamente portátil.

Parpadea tres veces, luego permanece resaltado hasta que se pone en primer plano.

#define WINVER 0x501 #define _WIN32_WINNT 0x501 #include <windows.h> void main(int argc, char **argv) { FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 }; FlashWindowEx(&info); }