技术开发 频道

揭秘QTP的DeviceReplay对象

  Mercury.DeviceReplay的方法

  SendString方法

  描述

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

  语法

  object.SendString( str )

  参数

  object : Mercury.DeviceReplay对象。

  str : 敲击的字符串。

  返回值

  无。

  例子

  下面的例子会激活记事本(notepad)并输入一段字符:

  Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )

  SystemUtil.Run "notepad.exe", "", "", "open"

  ' ** this line always identifies the notepad window.

  Window( "nativeclass:=Notepad", "index:=0" ).Activate micLeftBtn

  deviceReplay.SendString( "DeviceReplay" )

  Set deviceReplay = Nothing

  KeyDown方法

  描述

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

  语法

  object.KeyDown( key )

  参数

  object : Mercury.DeviceReplay对象。

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

  返回值

  无。

  例子

  下面的例子会激活记事本(notepad)程序并使用大写和小写的方式输入字符串。注意在发送第一个字符串时,SHIFT键保持被按下的状态:

  Const VK_SHIFT = 42

  Const VK_RETURN = 28

  Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )

  SystemUtil.Run "notepad.exe", "", "", "open"

  Window( "nativeclass:=Notepad", "index:=0" ).Activate micLeftBtn

  ' ** Typing uppercase

  deviceReplay.KeyDown VK_SHIFT

  deviceReplay.SendString( "devicereplay" )

  deviceReplay.PressKey VK_RETURN

  deviceReplay.KeyUp VK_SHIFT

  ' ** Typing in lower case

  deviceReplay.SendString( "devicereplay" )

  Set deviceReplay = Nothing

  提示

  在KeyDown后应该有相应的KeyUp方法的调用。

  KeyDown方法就像人工按下一个按键并保持按下的状态。

  KeyUp方法

  描述

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

  语法

  object.KeyUp( key )

  参数

  object : Mercury.DeviceReplay对象。

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

  返回值

  无。

  例子

  下面的例子会激活并并使用热键CTRL+O来打开记事本(notepad)的菜单,然后用ESC键关闭对话框。

  Const VK_O = 24

  Const VK_CONTROL = 29

  Const VK_ESCAPE = 1

  Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )

  SystemUtil.Run "notepad.exe", "", "", "open"

  Window( "nativeclass:=Notepad", "index:=0" ).Activate micLeftBtn

  ' ** Typing uppercase

  Wait 1

  ' ** Opening the menu Ctrl + O

  deviceReplay.KeyDown VK_CONTROL

  deviceReplay.PressKey VK_O

  deviceReplay.KeyUp VK_CONTROL

  Wait 2

  ' ** Closing the menu

  deviceReplay.PressKey VK_ESCAPE

  deviceReplay.SendString "Menu Open, was closed."

  Set deviceReplay = Nothing

  提示

  KeyUp方法应该与KeyDown方法配对使用。

  多个KeyUp不会对应用程序造成影响。

  如果需要组合热键,仅需要像人工执行的方式一样即可。

  PressKey方法

  描述

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

  语法

  object.PressKey( key )

  参数

  object : Mercury.DeviceReplay对象。

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

  返回值

  无。

  例子

  下面的例子会激活记事本并使用热键CTRL+O来模拟选择文件打开菜单,然后用ESCAPE按键关闭对话框。

  Const VK_O = 24 : Const VK_F = 33

  Const VK_CONTROL = 29 : Const VK_ESCAPE = 1 : Const VK_MENU = 56

  Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )

  SystemUtil.Run "notepad.exe", "", "", "open"

  Window( "nativeclass:=Notepad", "index:=0" ).Activate micLeftBtn

  Wait 1

  ' ** Opening the menu Alt + F + O

  deviceReplay.PressKey VK_MENU

  deviceReplay.PressKey VK_F

  deviceReplay.PressKey VK_O

  Wait 2

  ' ** Closing the menu

  deviceReplay.PressKey VK_ESCAPE

  deviceReplay.SendString "Open menu was closed."

  Set deviceReplay = Nothing

0
相关文章