トップレベル・ウィンドウを列挙し、タイトルバーのテキストを取得
ここでは、トップレベル・ウィンドウのHandleを列挙し、タイトルバーのテキストを取得する方法を示します。
【使用するAPI】
[ヘッダー]
Winuser.hで宣言、Windows.hをインクルード
[インポートライブラリ]
User32.lib
[API]
EnumWindows : トップレベル・ウィンドウのHandleを列挙
EnumWindowsProc : EnumWindowsを実行すると呼び出されるコールバック(CALLBACK)関数
GetWindowText : タイトルバーのテキストを取得
(APIの詳細に付いては、MSDNライブラリを参照して下さい。)
【サンプル】
//取得したタイトルバーのテキストを格納する配列
CStringArray m_strWinTxt;
//EnumWindowsを実行すると呼び出されるコールバック(CALLBACK)関数
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam)
{
char buf[99];
//-----------------------------------------------------
//Windowのタイトルを取得
GetWindowText(hwnd, buf, 99);
if(hwnd){
//Windows Titleを格納して、次のHandleを取得
m_strWinTxt.Add(buf);
return(true);
}
else{
//Windows Handleの列挙を止める
return(false);
}
}
void CWinhandleDlg::OnButton1()
{
int i;
//-----------------------------------------------------
//Window Handleとタイトルの列挙
boolean result = EnumWindows(EnumWindowsProc, 0);
//列挙したWindow Titleをリストボックスへ出力
CListBox* myLIST1 = (CListBox *)GetDlgItem(IDC_LIST1);
for( i = 0; i < m_strWinTxt.GetSize(); i++){
myLIST1->AddString(m_strWinTxt.GetAt(i));
}
}