解决了自己的一个难题,希望能帮助到各位!!!枚举窗体
自己遇到的难题: http://bbs.51testing.com/thread-149245-1-2.html可能有些朋友迟早也会遇到 1. 大量同名window 2. 想要enumerate桌面上所有的window的问题
我自己也是这样,找不到资料就想,能不能调用API的EnumerateWindows来处理呢,然后用google一搜,发现其实一切都很简单
http://www.sqaforums.com/showflat.php?Cat=&Board=UBB20&Number=463474&Searchpage=1&Main=463474&Words=&topic=1&Search=true
利用Desctop object和Description object,再调用ChildrenObject.
我已经试了试,效果不错.
很多好内容都被老外掌握,各位要加油啊 枚举窗口和子窗口本来就是windows的API.. 原帖由 mythxhg 于 2009-5-21 17:16 发表 http://bbs.51testing.com/images/common/back.gif
枚举窗口和子窗口本来就是windows的API..
哥们 ,你没看我转的帖子吧.看了再说. 看过了,不就是枚举窗口,然后利用其窗口句柄或者窗口标题,文本长度和类名,然后判断一下..'
不过不知道你做这些的主要目的是什么.
我不是用VBS写,但用VC倒是写过
BOOL CALLBACK FindFunc(HWND hwnd,LPARAM lParam)
{
char szName;
char szText;
::GetClassName(hwnd,szName,255);
::GetWindowText(hwnd,szText,255);
if((strcmp(szName,g_szClassName.GetBuffer(0)) == 0)&&(strcmp(szText,g_szCaption.GetBuffer(0)) == 0))
{
if (g_dwProcessID != NULL)
{
DWORD PID;
DWORD tid = GetWindowThreadProcessId(hwnd, &PID);
if (PID == g_dwProcessID)
{
g_FindHandle = hwnd;
return false;
}else
{
return true;
}
}else
{
g_FindHandle = hwnd;
return false;
}
}
return true;
}
调用
::EnumWindows(FindFunc,0);
::EnumChildWindows((HWND)hWnd,FindFunc,0); //枚举hWnd句柄指向的窗口下的所有子窗口
当然,我不使用QTP去引用系统的API,我把API写到DLL里给VBS调用. 都是高手 原帖由 mythxhg 于 2009-5-22 10:35 发表 http://bbs.51testing.com/images/common/back.gif
看过了,不就是枚举窗口,然后利用其窗口句柄或者窗口标题,文本长度和类名,然后判断一下..'
不过不知道你做这些的主要目的是什么.
我不是用VBS写,但用VC倒是写过
BOOL CALLBACK FindFunc(HWND hwnd,LPARAM lPar ...
看来你确实没弄明白, 我写这个帖子的目的就是告诉大家: 不用写dll ,也能利用QTP已有的object处理问题
回复 6# 的帖子
不好意思,失礼了,本人比较愚笨,的确没有理解你的最终目的不过PS一下,你哪个转帖的确说的只是用QTP调用API而已啊,没有你说的"利用QTP已有的object处理问题"
我的确没用过QTP自身的函数来处理这些窗口问题,你既然上了帖子,还望可以详细说一下这方面的知识啊,谢谢,多交流啊
利用Desctop object和Description object,再调用ChildrenObject,具体是怎么用呢,能不能解说一下...:handshake 51上前几年就贴出过类似的方法了,LZ可以在搜索中全文搜索 Desktop ChildObject。
可别盲目崇拜老外哦~~
页:
[1]