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

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中使用时需要转换成十进制。

相关资料:

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

转载于:https://www.cnblogs.com/spo22/archive/2011/10/27/2226949.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值