遍历软件界面内的按钮和文本框 大家好我在做一个测试软件需要遍历被检测软件里面的所有的按钮 和文本框 如果我已经得到该软件的窗口句柄 如何做到?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 EnmuChildWindows然后GetWindowClassName,看是不是button和edit就可以了 学习,看起来很像可以。GetWindowClassName 这个函数没找到呢 #define MAX_COUNT 256BOOL CALLBACK EnumChildWindowProc(HWND hWnd, LPARAM lParam){ TCHAR szBuf[MAX_COUNT] = {0}; GetClassName(hWnd, szBuf, MAX_COUNT); TCHAR szText[MAX_COUNT] = {0}; if((0 == _tcscmp(szBuf, _T("Button"))) || (0 == _tcscmp(szBuf, _T("Edit")))) { GetWindowText(hWnd, szText, MAX_COUNT); AfxMessageBox(szText); } return TRUE;}//调用EnumChildWindows(GetSafeHwnd(), EnumChildWindowProc, NULL); CWnd *pWnd; pWnd = GetWindow(GW_CHILD); CString ClassName; while(pWnd) { GetClassName(pWnd->GetSafeHwnd(),ClassName.GetBuffer(255),255); //得到控件的类名,主要有Edit,Button,Static等等 if(ClassName.Find(_T("Edit"),0)>=0){ /// } if(ClassName.Find(_T("Button"),0)>=0){ // } pWnd = pWnd->GetWindow(GW_HWNDNEXT); } 不好意思啊 大家我对CSDN不是很熟,大家回复了这么多我都没有收到消息,今天刚刚看到。谢谢大家 我先好好看看 需要遍历被检测软件里面的所有的按钮 和文本框 如果我已经得到该软件的窗口句柄 如何做到?===========我觉得用FindWindowEx是不是更好一点 貌似ce下FindWindowEx函数不支持... 我本来说用FindWindowEx,可是貌似楼主不愿用,所以就改成EnumChildWindow了 有吗?我好像没有说不愿意用吧~~~只要能做出来就行~现在用EnumChildWindow能够做出来了。弱弱的问一下,FindWindowEx是只能获得窗口句柄吗?可以获得控件句柄吗? 运行软件时提示打不到NTWDBLIB.LIB 一个单击选择区域的问题 VB调用vc dll,想参数是int(int),在vb中选As Integer传进去数字不对! 菜单问题,高手指点以下???????????/ 检测内存泄漏工具 如何在Doc里获得当前窗口的句柄 如何获得WINDOWS的默认打印机 谁有非常简单的COM的例子!!! 求最简单的SMTP发信源代码(100分) 我的com组件在vb下可用,在asp下不可用 为什么CRichEditCtrl中的字体不一致 wdm类型的驱动能否改成NT式的驱动?
然后GetWindowClassName,看是不是button和edit就可以了
GetWindowClassName 这个函数没找到呢
#define MAX_COUNT 256
BOOL CALLBACK EnumChildWindowProc(HWND hWnd, LPARAM lParam)
{
TCHAR szBuf[MAX_COUNT] = {0};
GetClassName(hWnd, szBuf, MAX_COUNT);
TCHAR szText[MAX_COUNT] = {0};
if((0 == _tcscmp(szBuf, _T("Button"))) || (0 == _tcscmp(szBuf, _T("Edit"))))
{
GetWindowText(hWnd, szText, MAX_COUNT);
AfxMessageBox(szText);
}
return TRUE;
}
//调用
EnumChildWindows(GetSafeHwnd(), EnumChildWindowProc, NULL);
pWnd = GetWindow(GW_CHILD);
CString ClassName;
while(pWnd)
{
GetClassName(pWnd->GetSafeHwnd(),ClassName.GetBuffer(255),255);
//得到控件的类名,主要有Edit,Button,Static等等
if(ClassName.Find(_T("Edit"),0)>=0){
/// }
if(ClassName.Find(_T("Button"),0)>=0){
//
}
pWnd = pWnd->GetWindow(GW_HWNDNEXT);
}
===========
我觉得用FindWindowEx是不是更好一点
我本来说用FindWindowEx,可是貌似楼主不愿用,所以就改成EnumChildWindow了
有吗?我好像没有说不愿意用吧~~~只要能做出来就行~现在用EnumChildWindow能够做出来了。弱弱的问一下,FindWindowEx是只能获得窗口句柄吗?可以获得控件句柄吗?