// Define FLASHWINFO structure as record type
type
FLASHWINFO = record
cbSize: UINT;
hWnd: HWND;
dwFlags: DWORD;
uCount: UINT;
dwTimeOut: DWORD;
end;
TFlashWInfo = FLASHWINFO;
// Define dwFlags constants
const
FLASHW_STOP = 0;
FLASHW_CAPTION = 1;
FLASHW_TRAY = 2;
FLASHW_ALL = FLASHW_CAPTION or FLASHW_TRAY;
FLASHW_TIMER = 4;
FLASHW_TIMERNOFG = 12;
var
Form1: TForm1;
FWInfo: TFlashWInfo;
// Function declaration for WinAPI call
function FlashWindowEx(var pfwi: FLASHWINFO): BOOL; stdcall;
{...}
implementation
{...}
// Import external function from 'USER32.DLL' with the same name
function FlashWindowEx; external user32 Name 'FlashWindowEx';
procedure TForm1.FormCreate(Sender: TObject);
begin
// Check for API function's availability
if not Assigned(@FlashWindowEx) then
begin
ShowMessage('API Function FlashWindowEx is not present... Exit program!');
Application.Terminate;
end
else
// Set default parameters
with FWInfo do
begin
cbSize := SizeOf(FWInfo); // Size of structure in bytes
hWnd := Form1.Handle; // Main's form handle
dwFlags := FLASHW_ALL; // Flash both caption & task bar
uCount := 10; // Flash 10 times
dwTimeOut := 100; // Timeout is 1/10 second apart
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Flash on normal state
FlashWindowEx(FWInfo);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Flash on minimized state
WindowState := wsMinimized; // Application.Minimize;
FlashWindowEx(FWInfo);
end;