`
ktc7000
  • 浏览: 34975 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

QTP调用DLL

阅读更多
Search1:
关于DLL文件:
DLL严格意义上说 dll 是微软的 私有格式, 不是 C/C++标准中的, 也无法跨平台的。

其中作用为实现可重复性代码的集合和exe没有本质区别,很难被反编译,因此,即使有了dll文件,仍然不能看到里面具体写了什么,当然现在有很多工具,能逐步识别dll文件的反编译汇编语言

dll工程里面有个dllmain文件,相当于exe文件,但是dll文件不能单独运行,此main文件里面有入口参数,主要作用是机器判断是线呈还是进程,就是一个空壳,和程序员无关,switch ul reason for attach这个值。

test.h文件里主要写具体此函数是做什么的。原理上可以是任何语言

qtp或者lr调用都可

  QTP拥有自己的.NET Factory接口,以调用.NET生成的DLL,也可以使用Extern.Declare来进行外部的DLL的访问。

  语法:

  Extern.Declare(RetType, MethodName, LibName, Alias [, ArgType(s)])

  参数说明:

  RetType: 方法返回值的类型。

  MethodName:调用DLL文件中的某个方法的方法名。

  LibName: DLL文件名。

  Alias: 别名,当别名为空时,方法名和别名一样(此参数通常为空)。

  ArgType(s): 传入的参数。

当然,要放在测试脚本路径下,文件,Action中使用如上语法就可以调用了

LR也一样LR_load_dll(testdll.dll)就可以调用了

当然还需要配置dat文件/dat directory之下将最后一行改为dll名称
将winnt_dll属性改为testdll.dll



Search2:
第一种是ActiveX对象生成的Dll
  在这里的外部dll非本机生成,则在qtp访问前必须在本机器注册,方法为:regsvr32 d:\dll文件路径;取消注册为:
  regsvr32  /u D:\dll文件;
  当然在本机器上生成的dll则不需要注册;
  注册完成后,就可以在qtp中利用createobject方法调用注册的dll文件了;
  set res=CreateObject("文件名.类名")
  res.方法
  这样就可以用res调用dll文件中的各种方法了。
  第二种方法是利用Extern object
  可以利用Extern.Declare 声明,如下面所示:
  Extern.Declare micInteger , "Add", "E:\QTP\DLL\LRDllTest.dll", "Sum", micInteger, micInteger
  res = Extern.Add(1,1)
  Msgbox res
  sum为dll文件中的函数,Add为sum所命的别名;
  第三种方法是利用DotNetFactory对象
  在QTP中为访问.net对象,专门提供了DotNetFactory对象。通过DotNetFactory可以访问.NET对象的属性和方法。



Search3:
What is a DLL?
Dynamic Linked Library is MS implementation of shared library concept in Windows. To understand this term more clearly, DLL can be broken down into Dynamic Link(ed) + Library

Dynamic Link means that the subroutines of a library are loaded into an application program at runtime, rather than being linked in at compile time, and remain as separate files on disk.
Library is a collection of subroutines
How to know about the functions in a DLL?
It is assumed that if you intend to call a DLL, you should know the function to be called from inside and what that function does. If you are clueless about how to get the function names you can get download Microsoft Dependency Walker or a 3rd party utility called PE Explorer which can help you to find the functions.

How can the functions inside DLL be called from QTP?
This part is actually simple and a two step process…

Declare the method using Extern.Declare
Example
Extern.Declare micHwnd, “FindWindow”, “user32.dll”, “FindWindowA”, micString, micString
where:

micHwnd -the data type of value returned by method
FindWindow -the user supplied procedure name. You can set it to anything as long as it’s a valid syntax.
user32.dll -the DLL from where you wish to call the method
FindWindowA -The actual method name inside the DLL
Last two are the data types of the arguments that will be passed to the procedure
Call the method
Example:

Extern.FindWindow(“Notepad”, vbNullString)
To show the above process in action, here is an example to change the title of the Notepad window by calling the user32.dll


1: 'Declare FindWindow method
2: Extern.Declare micHwnd, “FindWindow”, “user32.dll”, “FindWindowA”, micString, micString

3:’Declare SetWindowText method
5: Extern.Declare micLong, “SetWindowText”, “user32.dll”, “SetWindowTextA”, micHwnd, micString

7: ‘Get HWND of the Notepad window
8: hwnd = Extern.FindWindow(“Notepad”, vbNullString)
10: if hwnd = 0 then
12: MsgBox “Notepad window not found”

14: end if

16: ‘Change the title of the notepad window
17: res = Extern.SetWindowText(hwnd, “LearnQTP.com”)

Simple copy-paste the code above in your QTP ‘Expert View’. Open a blank notepad window. Run this code. You will now see that the name has changed from Untitled-Notepad to LearnQTP.com





Windows7+QTP/UFT11.5恢复30天试用破解:
http://www.51testing.com/?uid-306685-action-viewspace-itemid-831140
附件为QTPL, 去后缀 .zip
分享到:
评论

相关推荐

    QTP调用VS2005生成的DLL

    QTP调用VS2005生成的DLL

    QTP调用外部动态库的方法

    2. **QTP调用DLL的步骤** - **创建DLL**:首先,我们需要使用编程语言(如C++、Visual Basic等)编写包含所需功能的DLL。确保编译后的DLL文件与QTP在同一路径下,或者将其放置在系统PATH环境变量所包含的目录中。 ...

    QTP调用VB6生成的DLL实例

    QTP调用VB6生成的DLL实例,用IE打开。

    QTP调用WindowsAPI实例集.rar

    【QTP调用Windows API实例集】是一个关于自动化测试工具QuickTest Professional(QTP,现称为UFT,Unified Functional Testing)如何与Windows操作系统底层接口进行交互的教程集合。这个资源包含了一个名为“QTP调用...

    QTP 调用外部动态库的方法

    ### QTP调用外部动态库的方法详解 #### 引言 在软件测试领域,自动化测试已成为提高测试效率和质量的关键手段。Mercury公司的QuickTest Professional(QTP),凭借其强大的功能和用户友好的界面,成为了自动化测试...

    QTP调用WindowsAPI实例集

    QTP 提供了丰富的功能,能够调用 Windows API 来扩展其内置功能,以满足特定的测试需求。本实例集主要展示了如何通过 QTP 调用 Windows API 来实现一些特殊操作,例如运行可执行文件、发出蜂鸣声、锁定键盘和鼠标、...

    VC下调用 Qtp,供QTP使用者学习

    其他QTP调用 CoUninitialize(); ``` 通过这种方式,VC程序能够控制QTP执行自动化测试,从而实现对VC应用程序的功能测试。这种方式不仅提高了测试效率,也降低了手动测试带来的错误风险。不过,需要注意的是,由于...

    ClassLibrary.dll

    qtp 调用 net编译生成的dll,实现重载,多态功能

    QTP 加载外部文件

    在某些特定情况下,我们需要调用外部程序库(DLL)来执行特定的操作,这时可以利用QTP的`Extern.Declare`函数。下面将详细解释如何使用`Extern.Declare`来加载和调用外部文件,并讨论其相关参数和使用技巧。 `...

    qtp、loadrunner

     需要替换的两个文件名:lm70.dll mlr5lprg.dll  LoadRunner11的license问题:  提供一个超级license 最高支持6.5w个并发:AEACFSJI-YJKJKJJKEJIJD-BCLBR  5. qtp 的资源池  file→settings→resource里添加...

    QTP插件开发实战篇源码

    1. **插件架构理解**:了解QTP插件的基本结构,包括DLL或OCX组件的创建,以及如何与QTP主程序进行通信。 2. **对象模型扩展**:学习如何定义和实现新的对象识别机制,使QTP能够识别和操作自定义的控件或应用程序。 ...

    QTP识别JAVA界面元素的大概技术原理

    这些回调函数覆盖了从类加载到方法调用的各个环节,使QTP能够精确地跟踪和识别应用程序中的界面元素。 #### 结论 综上所述,QTP识别Java界面元素的技术原理主要依托于JVMTI机制和自定义的JVMTI Agent实现。通过在...

    QTP 技术集锦 学习QTP的好东东

    - **定义**: 如何在 QTP 脚本中调用 DLL 文件。 - **示例**: 提供具体的调用示例。 #### 49. CallFunction - **功能**: 介绍如何在 QTP 脚本中调用自定义函数。 - **应用**: 提供具体的使用示例。 #### 50. Global...

    How to get cursor loc use QTP

    ' 调用DLL中的函数获取光标位置 Call GetCursorLocation(cursorLoc(0), cursorLoc(1)) ' 打印光标位置 MsgBox "Cursor is at (" & cursorLoc(0) & ", " & cursorLoc(1) & ")" ``` 这段代码首先声明了一个...

    TestComplete与QTP的简单比较

    - 两款工具均支持调用DLL,增强了测试脚本的功能性和灵活性。 - 对于Java的支持,两者也都提供了相应的解决方案。 #### 十二、支持Flex与.NET - **TestComplete**不支持Flex技术,而**QTP**通过与Adobe的合作,...

    QTP-Addin 对象的讲解.rar

    5. **安装与管理Add-in**:安装Add-in通常是将编译后的Add-in文件(.dll或.ocx)复制到QTP的Add-ins目录,并在QTP的选项设置中启用。QTP会自动加载已启用的Add-in,使得它们的功能在测试脚本中可用。 6. **调用Add-...

    QTP模拟鼠标和键盘事件整理

    该方法需要调用DLL中的函数,并且需要指明鼠标动作的类型以及坐标位置。例如,实现右键点击操作: ```vb ' 声明 mouse_event 函数 Extern.Declare micVoid, "mouse_event", "user32.dll" ' 执行右键点击 Extern....

Global site tag (gtag.js) - Google Analytics