ウインドウをアクティブにして点滅させる
Visual Studio 2005 VC++ バッチビルドセットを使用して
さっそく作ってみました。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam );
void FlashWin( HWND hWnd );
char Title[512];
char ClassName[512];
int nCount;
int _tmain(int argc, _TCHAR* argv[])
{
lstrcpy(Title, argv[1]);
if ( argc >= 3 ) {
nCount = atol( argv[2] );
}
else {
nCount = 0;
}
if ( nCount > 10 ) {
nCount = 10;
}
if ( argc >= 4 ) {
lstrcpy(ClassName, argv[2]);
}
else {
ClassName[0] = 0x00;
}
EnumWindows( EnumWindowsProc, 0 );
return 0;
}
BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
{
char buffer[512];
if ( IsWindowVisible( hWnd ) ) {
GetWindowText( hWnd, buffer, 512 );
if ( memcmp( buffer, Title, lstrlen( Title ) ) == 0 ) {
if ( ClassName[0] != 0x00 ) {
GetClassName( hWnd, buffer, 512 );
if ( memcmp( buffer, ClassName, lstrlen( ClassName ) ) == 0 ) {
FlashWin( hWnd );
}
}
else {
FlashWin( hWnd );
}
}
}
return TRUE;
}
void FlashWin( HWND hWnd )
{
ShowWindow( hWnd, SW_RESTORE );
SetForegroundWindow( hWnd );
FLASHWINFO fi;
fi.cbSize = sizeof(FLASHWINFO);
fi.hwnd = hWnd;
fi.dwFlags = FLASHW_ALL;
fi.uCount = nCount;
fi.dwTimeout = 0;
if ( nCount != 0 ) {
FlashWindowEx( &fi );
}
}
ビルド情報と使用説明
FlashWin.exe タイトル [点滅回数] [クラス名]
タイトルで指定した文字列がウインドウの先頭から一致するウインドウは
順番にアクティブにします。
点滅回数を指定すると、最高 10 回点滅します
( 対象ウインドウは全て点滅します )
点滅回数を指定しなければ、アクティブにするのみです。
クラス名を指定すると、タイトル一致 かつ クラス名一致ウインドウが
対象となります。
■ 著作権その他
このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私( lightbox )が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。
lightbox
;コンパイル
cl FlashWin.cpp /c /D "WIN32" /D "NDEBUG" /D "_CONSOLE"
;リンク
link FlashWin.obj User32.lib
|
|