1.头文件中定义
static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);
2.声明一些用的东西
HWND hWnd;
HWND m_hwndFind[100] = {0};
int m_num = 0 ;
TCHAR m_store[MAX_PATH];
TCHAR m_name[MAX_PATH];
TCHAR m_strClass[MAX_PATH];
TCHAR m_FilePath[MAX_PATH];
TCHAR m_FileName[24];
3.枚举部分
BOOL CXXXDlg::EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
if(::GetWindowLong(hWnd,GWL_STYLE)&WS_VISIBLE)
{
m_hwndFind[m_num] = hWnd;
m_num++;
}
return 1;
}
4.在事件中列出所有的窗口
void CXXXDlg::OnButton1()
{
::EnumWindows(CXXXDlg::EnumWindowsProc,NULL);
for(int i = 0;i <=m_num;i++)
{
HWND m_wnd = m_hwndFind[i];
::GetWindowText(m_wnd,m_store,128);
::GetClassName(m_wnd,m_strClass,MAX_PATH-1);
sprintf(m_name,"(%d)标题名称:",i);
strcat(m_name,m_store);
strcat(m_name," 类名称:");
strcat(m_name,m_strClass);
m_strList.AddString(m_name);
}
}
m_strList是ListBOX关联的变量,可以编译了
本文介绍了如何使用VC++ MFC来枚举并显示当前系统中所有可见窗口的标题和类名。通过定义EnumWindowsProc回调函数,遍历窗口,并将窗口信息填充到ListBOX控件中,实现窗口信息的实时展示。

1589

被折叠的 条评论
为什么被折叠?



