QTP调用外部函数

QTP主要提供了3种DLL的调用方式,这3种调用方式分别为Extern、CreateObject和DotNetFactory。这3种调用方式都分别对应着不同类型的DLL。

首先Extern所调用的DLL为WIN32 API – DLL,Createobject所调用的是ActiveX类型的DLL,这类DLL其实应用的最多,AOM \ EOM等都是此类型的DLL,最后一种.NET Factory是直接调用.Net framework 或者.NET自定义的DLL。

Extern:
例子一:

'#######启动浏览器######## 
systemutil.Run "iexplore.exe"
 
'#######创建API  Extern对象########## 
Extern.Declare micHWnd, "GetForegroundWindow", "user32.dll", "GetForegroundWindow"
 
'######使用WIN32 API获取窗口的句柄###### 
hwnd = Extern.GetForegroundWindow()
 
'########通过获取的句柄控制浏览器窗口并跳转百度##### 
Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"

例子二:

Const SW_MINIMIZE = 6
'声明user32.dll中的ShowWindow方法
Extern.Declare micLong,"ShowWindow","user32.dll","ShowWindow",micLong,micLong
 
'高亮QTP窗口对象
Window("text:=QuickTest.*").highlight
 
'获取QTP自身的窗口对象的句柄属性
ohwnd = Window("text:=QuickTest.*").GetROProperty("HWND")
 
'调用ShowWindow方法 并加入最小化窗口参数
Extern.ShowWindow ohwnd,SW_MINIMIZE
 
'等待两秒钟
wait 2

注:QTP本身并没有加入反HOOK注入,因此,同样可以把QTP自身程序窗口加入到对象库中并对其进行一些操作。以上脚本就是直接通过Window(“text:=QuickTest.*”)获取到QTP对象窗口的,获取到之后即可方便做操作。

Createobject:

Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True  '设置可见
oIE.Navigate "http://www.baidu.com"  '跳转URL

DotNetFactory:

Set var_CreateInstance = DotNetFactory.CreateInstance("System.Windows.Forms.Form""System.Windows.Forms")
var_CreateInstance.Show

下面我说一下如何用DotNetFactory调用我们自己开发的。net类库。

首先用Visual Studio 2003或者2005创建一个新项目:类库,我用的是C#.新建一个类,假设命名空间是Test.myTest,类名是QTPTest。我们再新建一个公共方法: public string DoAction()假设编译后产生的文件是d:\mtTest.dll.下面我们在QTP里面写脚本:

Set obj = DotNetFactory.CreateInstance("Test.myTest.QTPTest""d:\mtTest.dll")
obj.DoAction
6 days ago, this page was being read.

,

Subscribe to Comments