博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WR调用windows的API实现文本框数据输入
阅读量:5145 次
发布时间:2019-06-13

本文共 1104 字,大约阅读时间需要 3 分钟。

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消息处理机制   

2、SendMessage  
3、MSDN  
4、SendMessage的参数  

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

你可能感兴趣的文章
windows远程控制ubuntu---基于ssh
查看>>
CSS3透明背景表单
查看>>
python类库32[多线程]
查看>>
创建元素节点createElement
查看>>
【Algorithm】插入排序法
查看>>
【cf contest 1119 G】Get Ready for the Battle
查看>>
django——简介
查看>>
ffmpeg,X264编码结果I帧QP比P帧还大
查看>>
@Conditional的使用及使用场景
查看>>
ural1439 Battle with You-Know-Who
查看>>
Spring MVC 知识总结
查看>>
mongodb 中非常好用的 Aggregate
查看>>
JQuery选择器练习原码
查看>>
D3.js使用过程中的常见问题(D3版本D3V4)
查看>>
Python基础
查看>>
选择排序
查看>>
图片验证码常用方法
查看>>
[Usaco2007 Jan]Running贝茜的晨练计划
查看>>
[BZOJ1708][Usaco2007 Oct]Money奶牛的硬币
查看>>
洛谷 P2626 斐波那契数列(升级版)
查看>>