WR调用windows的API实现文本框数据输入
2011-10-27 19:08
411 查看
Windows系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。我们平时所有的操作都是通过消息的形式和系统进行交互,比如单击鼠标,选择下拉框等等。也就是说只要我们了解消息的机制,能够模拟出各种消息,就可以模拟我们的手工操作。其实想要实现这个这个工作很简单,因为windows已经给我们提供了很方便的接口。比如我们想模拟文本框的输入,只需调用user32.dll(系统DLL,在C:\WINDOWS\system32下)中的SendMessageA函数。
我们已经知道了SendMessageA的入参,就可以在WinRunner中引用该函数,以实现文本框的输入。代码如下:
看到这里,你可能会产生疑问,为什么第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
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
相关文章推荐
- 监听回车键----在文本框中输入数据后,直接回车,调用查询、登陆事件
- 调用Windows的API,在QTP中实现高亮对象的方法
- windows 2000XP API 中C++线程池编程实现异步数据插库
- windows下调用系统API实现进程创建和文件读写
- 将ip地址转成二进制数据,除基本输入输出不调用库函数实现
- Windows下使用Java调用ElasticSearch提供的相关API进行数据搜索完整实例演示
- js实现文本框只能输入数据
- Zabbix实践(五):基于java的zabbix api调用实现数据共享
- 实现api返回json数据并在调用api时处理json数据
- 文本框输入之前缓存数据实现事件触发
- 微信的API都是通过https调用实现的,分为post方法调用和get方法调用。不需要上传数据的采用get方法(使用IntraWeb开发)
- golang 调用win32 api 实现windows注销、重启、关机
- 基于java的zabbix api调用实现数据共享
- java-appium,jxl调用Excel中的数据,输入到文本框中。
- [转]C# 调用API,实现注销远程登录本机的用户
- 网页中文本框下拉选择输入与自动提示功能的实现
- php实现异步数据调用的方法
- 用jquery实现文本框已输入多少字
- 对TControl和TWinControl相同与不同之处的深刻理解(每一个WinControl就相当于扮演了整个Windows的窗口管理角色,主要是窗口显示和窗口大小)——TWinControl就两个作用(管理子控件的功能和调用句柄API的功能)
- C#实现动态调用Windows DLL