QTP的DeviceReplay对象小结 (一)

一.             使用方法

Dim dp

Set dp =  CreateObject("Mercury.DeviceReplay") ' 建立对象

dp.SendString  “keyword”

二.             局限和绕过方法

1.         不能判断一个Control键是否已经被按下

说明:

DeviceReplay是一个强大的未被文档化的对象,但是有一定的局限性。其中一个局限就是不能判断一个Control键是否已经被按下。在输入一个大写字母之前,我们需要知道CAPS-LOCK键是否已经按下。在使用数字键盘之前我们需要检查NUM-LOCK键是否已经被按下。否则我们在切换键盘输入状态时可能得到的并不是我们想要的状态。
        Devices.Keyboard类提供了属性,可用于获取当前的键盘状态,例如当前什么键被按下了,并且提供一个方法用于向激活的窗口发送键盘敲击事件。
        几个有用的属性包括:
AltKeyDown - 判断ALT键是否处于按下状态。
CapsLock -  判断CAPS LOCK键是否处于打开状态。
CtrlKeyDown - 判断CTRL 键是否处于按下状态。
NumLock - 判断NUM LOCK键是否处于打开状态。
ScrollLock - 判断SCROLL LOCK键是否处于打开状态。
ShiftKeyDown - 判断SHIFT键是否处于按下状态。

例:

Set Keyboard = DotNetFactory.CreateInstance(
"Microsoft.VisualBasic.Devices.Keyboard", "Microsoft.VisualBasic" )
Print CBool( Keyboard.AltKeyDown )
Print CBool( Keyboard.CapsLock )
Print CBool( Keyboard.CtrlKeyDown )
Print CBool( Keyboard.NumLock )
Print CBool( Keyboard.ScrollLock )
Print CBool( Keyboard.ShiftKeyDown )

2.         不能获取当前鼠标(光标)在屏幕的位置

说明:

DeviceReplay的另外一个局限是不能获取当前鼠标(光标)在屏幕的位置。而System.Windows.Forms.Control这个类定义了那些拥有视觉表现的控件的基类。
        通过MousePosition属性可以获取当前鼠标光标在屏幕坐标的位置。访问MousePosition属性时,可以返回代表鼠标光标位置的Point数据。

例:

Set ctlr = DotNetFactory.CreateInstance("System.Windows.Forms.Control")
For i = 1 To 10
Wait 2
Print "1. X=" & ctlr.MousePosition.X & "; Y=" & ctlr.MousePosition.Y
Next

三.             方法

1.         DragAndDrop方法

原型:

       Sub DragAndDrop(ByVal DragX As Integer, ByVal DragY As Integer, ByVal DropX As Integer, ByVal DropY As Integer, ByVal Button As MouseButton)

功能:

       用于执行从一点拖动到另外一点的操作。

语法:

       object.DragAndDrop( dragX, dragY, dropX, dropY, Button )

输入参数:

       object : Mercury.DeviceReplay对象。

dragX :起点坐标的X轴的值。

dragY :起点坐标的Y轴的值。

dropX :终点坐标的X轴的值。

dropY :终点坐标的Y轴的值。

Button :可能的值包括

        LEFT_MOUSE_BUTTON = 0

        MIDDLE_MOUSE_BUTTON = 1

        RIGHT_MOUSE_BUTTON = 2

返回值:

       无

2.         GetAndClearSyncFail

原型:

       Function GetAndClearSyncFail As Long

功能:

      

语法:

 

输入参数:

      

返回值:

      

3.         KeyDown

原型:

       Sub KeyDown(ByVal Key As Byte)

功能:

       模拟一个按键的按下并保持(相当于Win32的KEY_DOWN事件)。

语法:

       object.KeyDown( key )

输入参数:

       object : Mercury.DeviceReplay对象。

key : 按键的数值码。可查阅后面的“Key Codes 参考”。

返回值:

       无

4.         KeyUp

原型:

       Sub KeyUp(ByVal Key As Byte)

功能:

       模拟通过键盘释放某个按下的按键。

语法:

           object.KeyUp( key )

输入参数:

       object : Mercury.DeviceReplay对象。

key : 按键的数值码。可查阅后面的“Key Codes 参考”。

返回值:

       无

5.         MouseClick

原型:

       Sub MouseClick(ByVal x As Integer, ByVal y As Integer, ByVal Button As MouseButton)

功能:

       在指定的屏幕位置执行鼠标左键或右键的单击操作。

语法:

       object.MouseClick( x, y, Button )

输入参数:

       object : Mercury.DeviceReplay对象。

x :屏幕坐标X轴的值。

y :屏幕坐标Y轴的值。

Button :可能的值包括

        LEFT_MOUSE_BUTTON = 0

        MIDDLE_MOUSE_BUTTON = 1

        RIGHT_MOUSE_BUTTON = 2

返回值:

       无

6.         MouseDblClick

原型:

       Sub MouseDblClick(ByVal x As Integer, ByVal y As Integer, ByVal Button As MouseButton)

功能:

       在指定的屏幕位置中执行鼠标左键或右键的双击事件。

语法:

       object.MouseDblClick( x, y, Button )

输入参数:

       object : Mercury.DeviceReplay对象。

x :屏幕坐标X轴的值。

y :屏幕坐标Y轴的值。

Button :可能的值包括

        LEFT_MOUSE_BUTTON = 0

        MIDDLE_MOUSE_BUTTON = 1

        RIGHT_MOUSE_BUTTON = 2

返回值:

       无

7.         MouseDown

原型:

        Sub MouseDown(ByVal x As Integer, ByVal y As Integer, ByVal Button As MouseButton)

功能:

       在屏幕指定位置按下鼠标左键或右键,并保持按下状态。

语法:

       object.MouseDown( x, y, Button )

输入参数:

       object : Mercury.DeviceReplay对象。

x :屏幕坐标X轴的值。

y :屏幕坐标Y轴的值。

Button :可能的值包括

        LEFT_MOUSE_BUTTON = 0

        MIDDLE_MOUSE_BUTTON = 1

        RIGHT_MOUSE_BUTTON = 2

返回值:

       无

8.         MouseMove

原型:

       Sub MouseMove(ByVal x As Integer, ByVal y As Integer)

功能:

       用于模拟鼠标移动。

语法:

       object.MouseMove ( x, y, Button )

输入参数:

       object : Mercury.DeviceReplay对象。

x :屏幕坐标X轴的值。

y :屏幕坐标Y轴的值。

返回值:

9.         MouseUp

原型:

       Sub MouseUp(ByVal x As Integer, ByVal y As Integer, ByVal Button As MouseButton)

功能:

       用于释放之前执行的MouseDown方法所按下的鼠标按键。

语法:

       object. MouseUp ( x, y )

输入参数:

       object : Mercury.DeviceReplay对象。

x :屏幕坐标X轴的值。

y :屏幕坐标Y轴的值。

Button :可能的值包括

        LEFT_MOUSE_BUTTON = 0

        MIDDLE_MOUSE_BUTTON = 1

        RIGHT_MOUSE_BUTTON = 2

返回值:

       无

 

10.     PressKey

原型:

       Sub PressKey(ByVal Key As Byte)

功能:

       模拟通过键盘按下一个按键并立即释放。

语法:

       object.PressKey( key )

输入参数:

       object : Mercury.DeviceReplay对象。

key : 按键的数值码。可查阅后面的“Key Codes 参考”。

返回值:

       无

11.     PressNKeys

原型:

       Sub PressNKeys(ByVal Key As Byte, ByVal N As Integer)

功能:

       模拟通过键盘多次按下一个按键并立即释放。

语法:

       object.PressNKeys( key, N )

输入参数:

       object : Mercury.DeviceReplay对象。

key : 按键的数值码。可查阅后面的“Key Codes 参考”。

N:重复的次数。

返回值:

       无

12.     SendString

原型:

       Sub SendString(ByVal str As String)

功能:

       向激活的窗口发送一个或多个键盘按键,就像敲击键盘一样。

语法:

       object.SendString( str )

输入参数:

object : Mercury.DeviceReplay对象。

str : 敲击的字符串。

返回值:

       无

13.     SetDropSyncTimeout

原型:

       Sub SetDropSyncTimeout(ByVal nDropSyncTimeout As Integer)

功能:

      

语法:

 

输入参数:

      

返回值:

      

14.     SetSynchronizationTimeout

原型:

       Sub SetSynchronizationTimeout(ByVal nSyncTimeout As Integer, ByVal is_sec As Long)

功能:

       设置一个新的同步超时的时间值。

语法:

       object. SetSynchronizationTimeout(nSyncTimeout , is_sec

输入参数:

       object : Mercury.DeviceReplay对象。

nSyncTimeout : 同步超时的时间值。

is_sec : 指定设置的时间值是否以秒为单位。

返回值:

       无

四.             常量

1.         LEFT_MOUSE_BUTTON

原型:

Const LEFT_MOUSE_BUTTON = 0

2.         MIDDLE_MOUSE_BUTTON

原型:

       Const MIDDLE_MOUSE_BUTTON = 1

3.         RIGHT_MOUSE_BUTTON

原型:

               Const RIGHT_MOUSE_BUTTON = 2

原文地址:https://www.cnblogs.com/gdg87813/p/10696341.html