Подтвердить что ты не робот

Запускать кнопку панели задач из пакетного файла?

Можно ли запустить Windows "вспыхнуть кнопку панели задач X раз или до тех пор, пока не появится окно" переднего плана "из командного файла? Я пытаюсь привлечь внимание пользователя к длительному script после завершения.

Использование внешней программы для запуска мигания в порядке, если она не требует установки (т.е. исполняемый файл может быть связан с моими скриптами).

Обновление

Вот что я в итоге получил (минималистский порт кода Андреаса Delphi). Я скомпилировал его под MinGW, он, похоже, зависит только от KERNEL32.DLL и USER32.DLL, поэтому он должен быть очень портативным.

Мигает три раза, затем остается подсвеченным до тех пор, пока не появится на переднем плане.

#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);
}
4b9b3361

Ответ 1

Это очень просто сделать, используя очень простой внешний *.exe. Он просто должен вызвать функцию FlashWindowEx для Windows API.

Это пример приложения консоли Delphi:

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.

Просто назовите его

flashwnd

чтобы развернуть текущее окно консоли десять раз. Вызов

flashwnd 27

чтобы развернуть окно 27 раз.