使用EnumWindows方法枚举窗口, 将调用EnumWindowsProc回调函数, 执行后面的操作
typedef std::list<cstring> LISTSTR;
LISTSTR strList; // 定义一个临时list保存窗体文本
/*
* 回调函数, 保存窗口标题信息
*/
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) // 回调函数
{
TCHAR szTitle[200];
TCHAR szClass[200];
GetWindowText(hwnd, szTitle, sizeof(szTitle) / sizeof(TCHAR)); // 获取窗口名称
GetClassName(hwnd, szClass, sizeof(szClass) / sizeof(TCHAR)); // 窗口类
if (szTitle[0] != '\0' && IsWindowVisible(hwnd)) { // 判断窗口标题不为空,并且窗口可见
strList.push_back(szTitle); // 添加到临时list中
}
return TRUE;
}
/**
* 查找窗口
*/
void CStudyDlg::OnBnClickedButton1()
{
strList.clear();
m_list.ResetContent();
EnumWindows(EnumWindowsProc, 0); // 枚举窗口
/* 将list中的值付给m_list控件展示 */
LISTSTR::iterator i;
for (i = strList.begin(); i != strList.end(); i++){
m_list.AddString(*i);
}
}