51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3472|回复: 7
打印 上一主题 下一主题

[讨论] 对由系统弹出的错误窗口的操作代码!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-1-10 18:22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
论坛上看到有个大大写了个自动点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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-1-10 18:37:21 | 只看该作者
改的时候最好配合C++自带的SPY++,可以帮助你查看好多东西
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-1-11 09:43:20 | 只看该作者
又给窗口句柄发消息,又起线程的。。看不懂。我是做测试的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-1-11 10:20:47 | 只看该作者
是啊,太高深了。
好像也不是VB的代码。看不懂啊。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-1-11 10:50:15 | 只看该作者
现在大家都玩这么高深的东西,哈哈...不过做自动化测试就应该知道这些东西,顶一个!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-1-11 14:01:51 | 只看该作者
VC写的啊,我笨,不知道其他方法,就知道底层的话大概都是关于句柄操作的,
所以想问问那位公布一下代码.
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-1-11 14:33:52 | 只看该作者
还好,不错 值得学习这种精神
如果测试需要的话,可以自己写个工具
那会很方便解决问题的:)
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-1-14 10:58:42 | 只看该作者
原帖由 jackymail 于 2008-1-11 09:43 发表
又给窗口句柄发消息,又起线程的。。看不懂。我是做测试的。

现在测试也不容易做了,编程代码什么的还是要懂懂的!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-9 03:45 , Processed in 0.070936 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表