您的位置:首页 > 其它

WR调用windows的API实现文本框数据输入

2011-10-27 19:08 411 查看
Windows系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。我们平时所有的操作都是通过消息的形式和系统进行交互,比如单击鼠标,选择下拉框等等。也就是说只要我们了解消息的机制,能够模拟出各种消息,就可以模拟我们的手工操作。其实想要实现这个这个工作很简单,因为windows已经给我们提供了很方便的接口。比如我们想模拟文本框的输入,只需调用user32.dll(系统DLL,在C:\WINDOWS\system32下)中的SendMessageA函数。

SendMessageA函数将指定的消息发送到一个或多个窗口。定义大致如下:


LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);   
参数:   
hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,
包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。   
Msg:指定被发送的消息。   
wParam:指定附加的消息特定信息。   
IParam:指定附加的消息特定信息。   
返回值:返回值指定消息处理的结果,依赖于所发送的消息。


我们已经知道了SendMessageA的入参,就可以在WinRunner中引用该函数,以实现文本框的输入。代码如下:

extern int SendMessageA(int hand,int msg,int wParam,string lParam);    //声明外部函数
load_dll("User32.dll");    //加载DLL
obj_get_info ("{class: edit}", "handle", str_Handle);    //获取文本框的句柄
SendMessageA(str_Handle,12,0,"d:\\test.xls");    //发送消息


看到这里,你可能会产生疑问,为什么第2、3个参数是输入12、0,其实这些参数都是有固定含义的,具体可参考MSDN上的定义。需要注意的是,网上给的入参可能是十六进制,在WR中使用时需要转换成十进制。

[b]相关资料:[/b]
1、windows消息处理机制 http://baike.baidu.com/view/2724978.htm
2、SendMessage http://baike.baidu.com/view/1080187.htm
3、MSDN http://msdn.microsoft.com/zh-cn/
4、SendMessage的参数 http://topic.csdn.net/t/20050713/18/4142641.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐