2010-08-24 24 views
18

Có thể kích hoạt Windows '' flash thanh tác vụ nút X lần hoặc cho đến khi cửa sổ đến nền trước "hành vi từ một tập tin thực thi? Tôi đang cố gắng kêu gọi sự chú ý của người dùng đối với tập lệnh chạy dài khi hoàn thành.Kích hoạt nút thanh tác vụ flash từ tập tin batch?

Sử dụng chương trình bên ngoài để kích hoạt nhấp nháy là tốt, miễn là nó không yêu cầu cài đặt (nghĩa là tệp thực thi có thể đi kèm với tập lệnh của tôi).

Cập nhật

Đây là những gì tôi đã kết thúc với (một cổng nhỏ gọn mã Andreas' Delphi). Tôi đã biên dịch nó theo MinGW tại nó dường như chỉ phụ thuộc vào KERNEL32.DLL và USER32.DLL, vì vậy nên được đánh giá cao di động.

Nhấp nháy ba lần, sau đó vẫn được đánh dấu cho đến khi được đưa vào nền trước.

#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); 
} 
+0

Câu hỏi thú vị như vậy và chỉ có ba chế độ xem trong 45 phút ?! –

+0

... và chỉ 15 lượt xem trong 24 giờ. Tôi không hiểu ... –

+0

Vâng, 'GetConsoleWindow' tốt hơn' FindWindow' và chú thích duy nhất. Không biết tại sao tôi không làm điều đó ... –

Trả lời

5

Nó rất dễ làm bằng cách sử dụng một * .exe bên ngoài rất đơn giản. Nó chỉ đơn giản là phải gọi hàm FlashWindowEx của API Windows.

Đây là một mẫu Delphi giao diện điều khiển ứng dụng:

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. 

Đơn giản chỉ cần gọi nó như

flashwnd 

để flash giao diện điều khiển cửa sổ hiện tại mười lần. Gọi

flashwnd 27 

để flash cửa sổ 27 lần.

+0

Tôi nghi ngờ một cái gì đó như thế này sẽ là trường hợp, nhưng tôi vô vọng tại Windows API! Tôi sẽ xem liệu tôi có thể làm việc này không. –

+0

Cuối cùng đã làm việc trong MinGW (vì tôi không có trình biên dịch Delphi tiện dụng). Cảm ơn! –

+0

hi Ben, bất kỳ cơ hội nào bạn có phiên bản được biên dịch của tiện ích này? cảm ơn trước –

Các vấn đề liên quan