代码之家  ›  专栏  ›  技术社区  ›  Ben Blank Jarret Hardie

从批处理文件触发任务栏按钮闪烁?

  •  21
  • Ben Blank Jarret Hardie  · 技术社区  · 15 年前

    是否可以从批处理文件中触发Windows的“将任务栏按钮闪烁X次或直到窗口到达前台”行为?我试图在完成后将用户的注意力转移到一个长时间运行的脚本上。

    闪烁三次,然后保持高亮显示,直到带到前景。

    #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);
    }
    
    1 回复  |  直到 8 年前
        1
  •  7
  •   phuclv    8 年前

    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