• 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

  • 相关阅读:
    Java中的逆变与协变
    JAVA中使用DOM解析XML文件
    ReentrantLock的使用
    tomcat源码 Container
    tomcat源码 Connector
    tomcat源码 StandardService
    BlockingQueue队列
    tomcat源码 StandardServer
    tomcat源码 分析 Catalina
    tomcat整体架构
  • 原文地址:https://www.cnblogs.com/gdg87813/p/10696341.html
Copyright © 2020-2023  润新知