|
试回答下:
1. 自己写个DLL来找吧, 给些参考(VC下):
HWND hWnd = ::FindWindow(NULL, "Your Dlg Title"); // 找到窗口, 第二个参数为标题
CWnd* pWnd = FromHandle(hWnd);
CWnd* pCurWnd = pWnd->GetFocus(); // 获取当前的焦点所在的控件
return pCurWnd->GetSafeHWnd(); // 返回句柄. GUI属性中有个handle就是指这个句柄, 应该可以用get_win_info来获取到, 比较一下就知道是哪个了(一般情况下程序每次运行各个控件的句柄是会变的)
2. 在脚本中使用treturn 退出正在执行的脚本(默认返回空), 并返回到调用它的脚本
脚本这样写应该可以完成2所要求的倒数第二种: 执行B:
E脚本:
report_msg("test1: 1");
if (有异常)
treturn "exceptionE";
report_msg("test1: 2");
C脚本:
....
rc = call E();
if (rc == "exceptionE")
treturn "exceptionC";
...
A脚本:
...
rc = call C();
if (rc == "exceptionC")
treturn "exceptionA";
...
main脚本不用特殊处理. 因为A已经返回, 其它级别的类推.
最后一个比较简单: texit 是直接退出的. 不会再执行
3. 应该是你的被测系统已经无法响应wait_info所发出的某种消息, WR就一直等. 只能强行结束WR
4. 你所指的异常是指什么? Memory leak? Runtime Error? 这种异常好像WR处理不了(出错对话框都抓不到) |
|