51Testing软件测试论坛
标题:
对由系统弹出的错误窗口的操作代码!
[打印本页]
作者:
mythxhg
时间:
2008-1-10 18:22
标题:
对由系统弹出的错误窗口的操作代码!
论坛上看到有个大大写了个自动点QTP的RUNERROR窗口的小工具,但是网友们苦于楼主失踪,无法求得原代码,因此自个而按照自己的猜测写了个,各位可以试试,要怎么改就怎么改,要加界面就用VS2005拖一个再将这写放到里面,想点什么就自己改代码咯.有什么错误的话请各位在小弟的BLGG 9527留上训言.
不过注意咯,用作监控的话要加上无限循环::EnumWindows(EnumFunc,0)这个,所以最好起一个线程,在线程函数里加上
while(true){
::EnumWindows(EnumFunc,0);
//为了性能,最好在这加上一句等待
}
用来监控的一定要有循环,要不就失去监控的意义,不过当然各位可以通过其他数据的监控再驱动,如果加上了无限循环,那么会出现阻塞,所以为了避免阻塞,请用线程.
下面是定位窗口子对象并发送消息的代码.
BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam)
{
char WndTitle[255];
char szName[255];
::GetWindowText(hwndChild,WndTitle,255);//获取当前子对象的TITLE
::GetClassName(hwndChild,szName,255);//获取当前子对象的CLASSNAME
if((strcmp(WndTitle,"确定") == 0)&&(strcmp(szName,"Button") == 0))//这里也改,你想找TITLE是什么的就自己改,CLASSNAME同理
{
DWORD dw = 1;
dw = dw << 16;
dw +=1;
//下面2句就是对指定的子对象发送消息了,想点击的话可以发送KEY的消息,或者用鼠标消息,反正要做什么就自己查WINUSER.H和MSDN
::PostMessage(hwndChild,WM_LBUTTONDOWN,MK_LBUTTON, dw);
::PostMessage(hwndChild,WM_LBUTTONUP,MK_LBUTTON,dw);
///////////////////////////////////////////////////
}
return true;
}
BOOL CALLBACK EnumFunc(HWND hwnd,LPARAM lParam){
char szName[255];
::GetClassName(hwnd,szName,255);//获取当前窗口的CLASSNAME
if(strcmp(szName,"#32770") == 0)//这里各位可以改,你想找哪个窗口都行,自己该CLASSNAME,当有多个CLASSNAME一样的话,你又想定位,那么你再加上其他判断咯,例如窗口的TITLE.
{
::EnumChildWindows(hwnd,EnumChildProc,0);//这里是枚举"#32770"的窗口下的所有子对象
}
return true;
}
int main(int argc, char* argv[])
{
::EnumWindows(EnumFunc,0);//枚举桌面当前所有WINDOW.
return 0;
}
[
本帖最后由 mythxhg 于 2008-1-10 18:34 编辑
]
作者:
mythxhg
时间:
2008-1-10 18:37
改的时候最好配合C++自带的SPY++,可以帮助你查看好多东西
作者:
jackymail
时间:
2008-1-11 09:43
又给窗口句柄发消息,又起线程的。。看不懂。我是做测试的。
作者:
jinsen
时间:
2008-1-11 10:20
是啊,太高深了。
好像也不是VB的代码。看不懂啊。
作者:
lantianwei
时间:
2008-1-11 10:50
现在大家都玩这么高深的东西,哈哈...不过做自动化测试就应该知道这些东西,顶一个!
作者:
mythxhg
时间:
2008-1-11 14:01
VC写的啊,我笨,不知道其他方法,就知道底层的话大概都是关于句柄操作的,
所以想问问那位公布一下代码.
作者:
three116
时间:
2008-1-11 14:33
还好,不错 值得学习这种精神
如果测试需要的话,可以自己写个工具
那会很方便解决问题的:)
作者:
wenfeng0187
时间:
2008-1-14 10:58
原帖由
jackymail
于 2008-1-11 09:43 发表
又给窗口句柄发消息,又起线程的。。看不懂。我是做测试的。
现在测试也不容易做了,编程代码什么的还是要懂懂的!
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2