记录阿里巴巴QA架构组成长点滴。2008年关键词为效率,技术,影响力!QA/测试架构师定义:开发和设计测试框架测试库;纵横全局的考虑产品的功能,设计复杂的测试系统;负责研发某一项特定的测试技术;为公司考虑如何提高测试效率。领导公司测试技术的发展和测试策略上的方向,关注整个公司的测试部门的问题,前瞻性的考虑未来的版本的测试策略和技术。测试架构师计划/设计测试平台,关注着产品的测试过程,提供咨询服务,影响到公司内的测试机构测试社区,以及开发机构等,对产品各个方面施加深远而正确的影响,最终提高整体软件质量。

[Ruby学习] 在ruby中调用dll

上一篇 / 下一篇  2008-09-24 17:19:10 / 个人分类:开源工具与新技术研究

                                                                      -----by Nish 

  开源测试工具watir是采用的ruby语言进行开发的。在研究watir框架的时候,发现有一部分函数watir没有提供而且暂时没找到合适的gem包,而很多功能在我们原来的自动化测试框架中都通过c写的dll进行了实现,于是我们希望能够把这部分的dll无缝的移植到watir上,减少我们的工作量,而且可以更高效的实现我们需要的功能。

  在ruby的开源项目中,Win32Api这个gem可以实现我们需要的功能。通过以下方法 ,我们就可以调用外部dll中的函数。

Win32Api.new(dllname, proc, import, export)

参数说明

dllname:dll文件的名字,如果想只写dll的名字,可以将dll放到system32目录或者当前目录下,或者写上dll文件所在的路径

proc: dll中函数的名字

import:函数传入参数的参数类型,其中 "p" 对应指针,"n","l"对应long,"i"对应int,"v" 对应void,如果有多个参数,可以通过 ["p","n"]数组的方式来实现,其中置为nil可以表示没有参数

export:函数的返回值类型,参数类型同上

 

Win32API#call([args ...])

调用dll中的函数,参数和返回值应该与new申明中的一致,如果返回一个指针,需要事前初始化,否则可能会有内存溢出问题。

 

例子:

有个dll的头文件的申明为:

extern "C" long PASCAL EXPORT BMPToJPG(char *jpg,char *bmp);

那么在将指定的dll文件放在当前目录,ruby代码如下

require 'rubygems'

require 'Win32Api'

JPG=Win32API.new(File.dirname(__FILE__)+"\\JpgDll.dll","BmpToJpg",["p","p"],"l")

JPG.call("D:\\1.bmp","D:\\1.jpg")

执行上述代码后,就能把D盘下的1.bmp文件另存为 1.jpg文件


TAG: 开源工具与新技术研究

引用 删除 ahtest   /   2009-12-02 12:02:58
5
 

评分:0

我来说两句

日历

« 2024-01-20  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 150701
  • 日志数: 163
  • 文件数: 1
  • 建立时间: 2008-02-26
  • 更新时间: 2008-12-10

RSS订阅

Open Toolbar