トップレベルウインドウの情報

  LboxEnumWindowInfo



  
typedef struct _LBOXENUMWINDOWINFO {
	HWND hList;
	int	nIndex;
	DWORD nOption;
	LPTSTR szBuffer;
} LBOXENUMWINDOWINFO;
#define LBOX_ENUMWINDOW_CLASS	0x00000001
#define LBOX_ENUMWINDOW_TITLE	0x00000002
#define LBOX_ENUMWINDOW_PROCESS	0x00000004
// *********************************************************
// LboxEnumWindowInfo 用 CallBack
// *********************************************************
BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
{
	LBOXENUMWINDOWINFO *lewi;
	DWORD ProcessId;

	lewi = (LBOXENUMWINDOWINFO *)lParam;

	wsprintf( lewi->szBuffer, "%08lX", (DWORD)hWnd );

	if ( lewi->nOption & LBOX_ENUMWINDOW_CLASS ) {
		lstrcat( lewi->szBuffer, "\t" );
		GetClassName( hWnd, lewi->szBuffer+lstrlen(lewi->szBuffer), 512 );
	}
	if ( lewi->nOption & LBOX_ENUMWINDOW_TITLE ) {
		lstrcat( lewi->szBuffer, "\t" );
		GetWindowText( hWnd, lewi->szBuffer+lstrlen(lewi->szBuffer), 512 );
	}
	if ( lewi->nOption & LBOX_ENUMWINDOW_PROCESS ) {
		lstrcat( lewi->szBuffer, "\t" );
		GetWindowThreadProcessId( hWnd, &ProcessId );
		wsprintf(
			lewi->szBuffer+lstrlen(lewi->szBuffer),
			"%08lX",
			ProcessId
		);
	}

	LboxListInsert( lewi->hList, lewi->nIndex, lewi->szBuffer );
	lewi->nIndex++;

	return TRUE;

}

// *********************************************************
// リストボックスにトップレベルウインドウの情報一覧を追加
// 戻り値 : 無し
// *********************************************************
void LboxEnumWindowInfo( HWND hList, int nIndex, DWORD nOption )
{
	LBOXENUMWINDOWINFO lewi;

	lewi.hList = hList;
	lewi.nIndex = nIndex;
	lewi.nOption = nOption;
	lewi.szBuffer = (LPTSTR)GlobalAlloc(GMEM_FIXED, 4096);

	EnumWindows(
		EnumWindowsProc,	// コールバック関数へのポインタ
		(LPARAM)&lewi		// アプリケーション定義の値
	);

	GlobalFree( (HGLOBAL)lewi.szBuffer );
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ