看流星社区

 找回密码
 注册账号
查看: 1839|回复: 0

VC源码在所有窗口中搜索自己想要的窗口

[复制链接]

该用户从未签到

发表于 2013-5-5 09:52:59 | 显示全部楼层 |阅读模式
  这个函数功能是搜索所有符合条件(类名)的窗口,返回的是数组,成员是句柄,长度是256个,最后一个有效的成员后一个成员值为0,可以用来判断找到了多少窗口。我是新手,大家可以拿来直接用,也可以修改。
另外也可以用EnumWindows枚举所有窗口,然后用相对的回调函数来实现这个功能。

HWND* searchwindows(LPSTR fuckingclassname)
{
    HWND h[255];
    int a = 0;
    CWnd* pDesktopWnd = CWnd::GetDesktopWindow();
    CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);

    while (pWnd != NULL)
    {               
        CString strClassName = _T("");
        ::GetClassName(pWnd->GetSafeHwnd(), strClassName.GetBuffer(256), 256);
        strClassName.ReleaseBuffer();
        if (strClassName == fuckingclassname)
        {
            h[a++] = pWnd->GetSafeHwnd();
            h[a] = false;
        }

        pWnd = pWnd->GetWindow(GW_HWNDNEXT);
    }
    return h;
}

/*调用示例:5开梦幻西游,调用这个函数返回相应5个句柄,用MessageBox显示出句柄,也可以根据句柄显示出标题。
void CDemoDlg::OnTest1()
{
    HWND *b;
    b= searchwindows("WSGAME");
    CString t1,t2,t3,t4,t5;
    t1.Format(_T("%d"),b[0]);
    t2.Format(_T("%d"),b[1]);
    t3.Format(_T("%d"),b[2]);
    t4.Format(_T("%d"),b[3]);
    t5.Format(_T("%d"),b[4]);
    AfxMessageBox(t1+"|"+t2+"|"+t3+"|"+t4+"|"+t5);
}*/
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-14 21:10

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表