自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ruby調(diào)用DLL方法簡介

開發(fā) 開發(fā)工具
在Ruby調(diào)用DLL技巧講解中,我們?yōu)榇蠹以敿?xì)解讀了其中的參數(shù)含義,比如dllname;proc;import;export等等。希望對大家有所幫助。

今天,我們要為大家講解有關(guān)Ruby調(diào)用DLL的一些技巧方法,希望初學(xué)Ruby的朋友可以通過本文介紹的內(nèi)容熟練掌握這一技巧應(yīng)用。開源測試工具watir是采用的Ruby語言進(jìn)行開發(fā)的。#t#

在研究watir框架的時候,發(fā)現(xiàn)有一部分函數(shù)watir沒有提供而且暫時沒找到合適的gem包,而很多功能在我們原來的自動化測試框架中都通過c寫的dll進(jìn)行了實現(xiàn),于是我們希望能夠把這部分的dll無縫的移植到watir上,減少我們的工作量,而且可以更高效的實現(xiàn)我們需要的功能。

在Ruby調(diào)用DLL的開源項目中,Win32Api這個gem可以實現(xiàn)我們需要的功能。通過以下方法 ,我們就可以調(diào)用外部dll中的函數(shù)。

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

參數(shù)說明

dllname:dll文件的名字,如果想只寫dll的名字,可以將dll放到system32目錄或者當(dāng)前目錄下,或者寫上dll文件所在的路徑

proc: dll中函數(shù)的名字

import:函數(shù)傳入?yún)?shù)的參數(shù)類型,其中 "p" 對應(yīng)指針,"n","l"對應(yīng)long,"i"對應(yīng)int,"v" 對應(yīng)void,如果有多個參數(shù),可以通過 ["p","n"]數(shù)組的方式來實現(xiàn),其中置為nil可以表示沒有參數(shù)

export:函數(shù)的返回值類型,參數(shù)類型同上

Win32API#call([args ...])

調(diào)用dll中的函數(shù),參數(shù)和返回值應(yīng)該與new申明中的一致,如果返回一個指針,需要事前初始化,否則可能會有內(nèi)存溢出問題。

例子:

有個dll的頭文件的申明為:

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

那么在將指定的dll文件放在當(dāng)前目錄,Ruby調(diào)用DLL代碼如下

 

  1. require 'rubygems'  
  2. require 'Win32Api'  
  3. JPG=Win32API.new(File.dirname(__FILE__)+"\\JpgDll.dll","BmpToJpg",["p","p"],"l")  
  4. JPG.call("D:\\1.bmp","D:\\1.jpg") 

執(zhí)行上述Ruby調(diào)用DLL代碼后,就能把D盤下的1.bmp文件另存為 1.jpg文件。

責(zé)任編輯:曹凱 來源: CSDN
相關(guān)推薦

2009-08-03 12:57:27

C#調(diào)用DLL

2009-08-05 09:30:39

C#調(diào)用DLL函數(shù)

2009-08-05 09:40:02

C#調(diào)用DLL函數(shù)

2009-06-17 13:19:50

Java調(diào)用DLL

2009-12-23 17:57:22

WPF默認(rèn)模板

2010-01-15 16:12:40

VB.NET調(diào)用DLL

2010-01-06 17:06:05

Json格式

2009-12-18 16:55:49

Ruby調(diào)用win32

2009-08-05 14:45:56

VC中DLL的創(chuàng)建及調(diào)

2009-08-05 17:06:39

ASP調(diào)用C# DLL

2011-04-08 09:52:44

C++C#DLL

2009-12-17 16:57:29

Ruby dot

2009-08-05 09:09:14

C#調(diào)用VC DLL接

2009-07-31 17:28:35

C#語言調(diào)用DLL

2009-08-07 17:22:36

C#調(diào)用dll導(dǎo)出函數(shù)

2011-06-28 13:12:07

Qt 調(diào)用 DLL DLL

2009-12-17 11:27:31

Ruby時間方法

2009-09-10 13:17:50

matlab函數(shù)

2009-08-05 16:41:36

C#調(diào)用VC dll

2016-12-05 09:26:34

點贊
收藏

51CTO技術(shù)棧公眾號