- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
这个函数功能是搜索所有符合条件(类名)的窗口,返回的是数组,成员是句柄,长度是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);
}*/ |
|