zoukankan      html  css  js  c++  java
  • SilkTest高级进阶系列7-用PostMessage模拟鼠标

    SilkTest可以通过调用Windows API来向控件发送消息,从而进行特定的操作。下面这段code使用PostMessage来向计算器上的清除键发送WM_LBUTTONDOWN和WM_LBUTTONUP两个消息,从而模拟PressMouse和ReleaseMouse的操作。

     

    [ ] use "C:/TA/SilkTest/mswfun32.inc"
    [ ] use "C:/TA/SilkTest/msw32.inc"
    [ ] use "C:/TA/SilkTest/mswconst.inc"
    [ ]
    [+] window MainWin Calculator
    [+] multitag "Calculator"
    [ ] "$C:/WINNT/system32/calc.exe"
    [+] Menu Edit
    [ ] tag "Edit"
    [+] MenuItem Copy
    [+] multitag "Copy"
    [ ] "$300"
    [+] MenuItem Paste
    [+] multitag "Paste"
    [ ] "$301"
    [+] Menu View
    [ ] tag "View"
    [+] MenuItem Standard
    [+] multitag "Standard"
    [ ] "$305"
    [+] MenuItem Scientific
    [+] multitag "Scientific"
    [ ] "$304"
    [+] MenuItem DigitGrouping
    [+] multitag "Digit grouping"
    [ ] "$303"
    [+] Menu Help
    [ ] tag "Help"
    [+] MenuItem HelpTopics
    [+] multitag "Help Topics"
    [ ] "$317"
    [+] MenuItem AboutCalculator
    [+] multitag "About Calculator"
    [ ] "$302"
    [+] TextField TextField1
    [ ] tag "$403"
    [+] PushButton MC
    [+] multitag "MC"
    [ ] "$113"
    [+] PushButton MR
    [+] multitag "MR"
    [ ] "$114"
    [+] PushButton MS
    [+] multitag "MS"
    [ ] "$115"
    [+] PushButton M
    [+] multitag "M+"
    [ ] "$116"
    [+] PushButton N7
    [+] multitag "7"
    [ ] "$131"
    [+] PushButton N4
    [+] multitag "4"
    [ ] "$128"
    [+] PushButton N1
    [+] multitag "1"
    [ ] "$125"
    [+] PushButton N0
    [+] multitag "0"
    [ ] "$124"
    [+] PushButton N8
    [+] multitag "8"
    [ ] "$132"
    [+] PushButton N51
    [+] multitag "5"
    [ ] "$129"
    [+] PushButton N2
    [+] multitag "2"
    [ ] "$126"
    [+] PushButton PushButton24
    [+] multitag "+?-"
    [ ] "$80"
    [+] PushButton N91
    [+] multitag "9"
    [ ] "$133"
    [+] PushButton N6
    [+] multitag "6"
    [ ] "$130"
    [+] PushButton N3
    [+] multitag "3"
    [ ] "$127"
    [+] PushButton N16
    [+] multitag "?[16]"
    [ ] "$85"
    [+] PushButton N52
    [+] multitag "?[5]"
    [ ] "$90"
    [+] PushButton N92
    [+] multitag "?[9]"
    [ ] "$91"
    [+] PushButton PushButton20
    [+] multitag "-"
    [ ] "$93"
    [+] PushButton PushButton26
    [+] multitag "+"
    [ ] "$92"
    [+] PushButton PushButton27
    [+] multitag "="
    [ ] "$112"
    [+] PushButton Backspace
    [+] multitag "Backspace"
    [ ] "$83"
    [+] PushButton CE
    [+] multitag "CE"
    [ ] "$82"
    [+] PushButton C
    [+] multitag "C"
    [ ] "$81"
    [+] StaticText StaticText1
    [ ] tag "$401"
    [+] PushButton N1X
    [+] multitag "1?x"
    [ ] "$107"
    [+] PushButton Sqt
    [+] multitag "sqt"
    [ ] "$103"
    [+] PushButton PushButton15
    [+] multitag "%"
    [ ] "$109"
    [+] StaticText StaticText2
    [ ] tag "$1000"
    [ ]
    [+] testcase PressAndReleaseButton() appstate none
    [ ] // get the hanle of window
    [ ] INTEGER hdWnd = Calculator.CE.GetHandle()
    [ ] // input 11
    [ ] Calculator.SetActive()
    [ ] Calculator.N1.Click()
    [ ] Calculator.N1.Click()
    [ ] sleep(1)
    [ ] // Press Left key of mouse
    [ ] PostMessage(hdWnd, WM_LBUTTONDOWN, 0, 0 )
    [ ] sleep(4)
    [ ] // Release Left key of mouse
    [ ] PostMessage(hdWnd, WM_LBUTTONUP,0, 0)
    [ ]

    你同样可以通过SendMessage实现相同的功能,他们二者的差别就是一个是异步消息,一个是同步消息。如果你想了解更多,可以google下二者具体的区别。

    另外附上一些Windows常用消息号。

    WM_NULL = 0x00
    WM_CREATE = 0x01
    WM_DESTROY = 0x02
    WM_MOVE = 0x03
    WM_SIZE = 0x05
    WM_ACTIVATE = 0x06
    WM_SETFOCUS = 0x07
    WM_KILLFOCUS = 0x08
    WM_ENABLE = 0x0A
    WM_SETREDRAW = 0x0B
    WM_SETTEXT = 0x0C
    WM_GETTEXT = 0x0D
    WM_GETTEXTLENGTH = 0x0E
    WM_PAINT = 0x0F
    WM_CLOSE = 0x10
    WM_QUERYENDSESSION = 0x11
    WM_QUIT = 0x12
    WM_QUERYOPEN = 0x13
    WM_ERASEBKGND = 0x14
    WM_SYSCOLORCHANGE = 0x15
    WM_ENDSESSION = 0x16
    WM_SYSTEMERROR = 0x17
    WM_SHOWWINDOW = 0x18
    WM_CTLCOLOR = 0x19
    WM_WININICHANGE = 0x1A
    WM_SETTINGCHANGE = 0x1A
    WM_DEVMODECHANGE = 0x1B
    WM_ACTIVATEAPP = 0x1C
    WM_FONTCHANGE = 0x1D
    WM_TIMECHANGE = 0x1E
    WM_CANCELMODE = 0x1F
    WM_SETCURSOR = 0x20
    WM_MOUSEACTIVATE = 0x21
    WM_CHILDACTIVATE = 0x22
    WM_QUEUESYNC = 0x23
    WM_GETMINMAXINFO = 0x24
    WM_PAINTICON = 0x26
    WM_ICONERASEBKGND = 0x27
    WM_NEXTDLGCTL = 0x28
    WM_SPOOLERSTATUS = 0x2A
    WM_DRAWITEM = 0x2B
    WM_MEASUREITEM = 0x2C
    WM_DELETEITEM = 0x2D
    WM_VKEYTOITEM = 0x2E
    WM_CHARTOITEM = 0x2F

    WM_SETFONT = 0x30
    WM_GETFONT = 0x31
    WM_SETHOTKEY = 0x32
    WM_GETHOTKEY = 0x33
    WM_QUERYDRAGICON = 0x37
    WM_COMPAREITEM = 0x39
    WM_COMPACTING = 0x41
    WM_WINDOWPOSCHANGING = 0x46
    WM_WINDOWPOSCHANGED = 0x47
    WM_POWER = 0x48
    WM_COPYDATA = 0x4A
    WM_CANCELJOURNAL = 0x4B
    WM_NOTIFY = 0x4E
    WM_INPUTLANGCHANGEREQUEST = 0x50
    WM_INPUTLANGCHANGE = 0x51
    WM_TCARD = 0x52
    WM_HELP = 0x53
    WM_USERCHANGED = 0x54
    WM_NOTIFYFORMAT = 0x55
    WM_CONTEXTMENU = 0x7B
    WM_STYLECHANGING = 0x7C
    WM_STYLECHANGED = 0x7D
    WM_DISPLAYCHANGE = 0x7E
    WM_GETICON = 0x7F
    WM_SETICON = 0x80

    WM_NCCREATE = 0x81
    WM_NCDESTROY = 0x82
    WM_NCCALCSIZE = 0x83
    WM_NCHITTEST = 0x84
    WM_NCPAINT = 0x85
    WM_NCACTIVATE = 0x86
    WM_GETDLGCODE = 0x87
    WM_NCMOUSEMOVE = 0xA0
    WM_NCLBUTTONDOWN = 0xA1
    WM_NCLBUTTONUP = 0xA2
    WM_NCLBUTTONDBLCLK = 0xA3
    WM_NCRBUTTONDOWN = 0xA4
    WM_NCRBUTTONUP = 0xA5
    WM_NCRBUTTONDBLCLK = 0xA6
    WM_NCMBUTTONDOWN = 0xA7
    WM_NCMBUTTONUP = 0xA8
    WM_NCMBUTTONDBLCLK = 0xA9

    WM_KEYFIRST = 0x100
    WM_KEYDOWN = 0x100
    WM_KEYUP = 0x101
    WM_CHAR = 0x102
    WM_DEADCHAR = 0x103
    WM_SYSKEYDOWN = 0x104
    WM_SYSKEYUP = 0x105
    WM_SYSCHAR = 0x106
    WM_SYSDEADCHAR = 0x107
    WM_KEYLAST = 0x108

    WM_IME_STARTCOMPOSITION = 0x10D
    WM_IME_ENDCOMPOSITION = 0x10E
    WM_IME_COMPOSITION = 0x10F
    WM_IME_KEYLAST = 0x10F

    WM_INITDIALOG = 0x110
    WM_COMMAND = 0x111
    WM_SYSCOMMAND = 0x112
    WM_TIMER = 0x113
    WM_HSCROLL = 0x114
    WM_VSCROLL = 0x115
    WM_INITMENU = 0x116
    WM_INITMENUPOPUP = 0x117
    WM_MENUSELECT = 0x11F
    WM_MENUCHAR = 0x120
    WM_ENTERIDLE = 0x121

    WM_CTLCOLORMSGBOX = 0x132
    WM_CTLCOLOREDIT = 0x133
    WM_CTLCOLORLISTBOX = 0x134
    WM_CTLCOLORBTN = 0x135
    WM_CTLCOLORDLG = 0x136
    WM_CTLCOLORSCROLLBAR = 0x137
    WM_CTLCOLORSTATIC = 0x138

    WM_MOUSEFIRST = 0x200
    WM_MOUSEMOVE = 0x200
    WM_LBUTTONDOWN = 0x201
    WM_LBUTTONUP = 0x202
    WM_LBUTTONDBLCLK = 0x203
    WM_RBUTTONDOWN = 0x204
    WM_RBUTTONUP = 0x205
    WM_RBUTTONDBLCLK = 0x206
    WM_MBUTTONDOWN = 0x207
    WM_MBUTTONUP = 0x208
    WM_MBUTTONDBLCLK = 0x209
    WM_MOUSEWHEEL = 0x20A
    WM_MOUSEHWHEEL = 0x20E

    WM_PARENTNOTIFY = 0x210
    WM_ENTERMENULOOP = 0x211
    WM_EXITMENULOOP = 0x212
    WM_NEXTMENU = 0x213
    WM_SIZING = 0x214
    WM_CAPTURECHANGED = 0x215
    WM_MOVING = 0x216
    WM_POWERBROADCAST = 0x218
    WM_DEVICECHANGE = 0x219

    WM_MDICREATE = 0x220
    WM_MDIDESTROY = 0x221
    WM_MDIACTIVATE = 0x222
    WM_MDIRESTORE = 0x223
    WM_MDINEXT = 0x224
    WM_MDIMAXIMIZE = 0x225
    WM_MDITILE = 0x226
    WM_MDICASCADE = 0x227
    WM_MDIICONARRANGE = 0x228
    WM_MDIGETACTIVE = 0x229
    WM_MDISETMENU = 0x230
    WM_ENTERSIZEMOVE = 0x231
    WM_EXITSIZEMOVE = 0x232
    WM_DROPFILES = 0x233
    WM_MDIREFRESHMENU = 0x234

    WM_IME_SETCONTEXT = 0x281
    WM_IME_NOTIFY = 0x282
    WM_IME_CONTROL = 0x283
    WM_IME_COMPOSITIONFULL = 0x284
    WM_IME_SELECT = 0x285
    WM_IME_CHAR = 0x286
    WM_IME_KEYDOWN = 0x290
    WM_IME_KEYUP = 0x291

    WM_MOUSEHOVER = 0x2A1
    WM_NCMOUSELEAVE = 0x2A2
    WM_MOUSELEAVE = 0x2A3

    WM_CUT = 0x300
    WM_COPY = 0x301
    WM_PASTE = 0x302
    WM_CLEAR = 0x303
    WM_UNDO = 0x304

    WM_RENDERFORMAT = 0x305
    WM_RENDERALLFORMATS = 0x306
    WM_DESTROYCLIPBOARD = 0x307
    WM_DRAWCLIPBOARD = 0x308
    WM_PAINTCLIPBOARD = 0x309
    WM_VSCROLLCLIPBOARD = 0x30A
    WM_SIZECLIPBOARD = 0x30B
    WM_ASKCBFORMATNAME = 0x30C
    WM_CHANGECBCHAIN = 0x30D
    WM_HSCROLLCLIPBOARD = 0x30E
    WM_QUERYNEWPALETTE = 0x30F
    WM_PALETTEISCHANGING = 0x310
    WM_PALETTECHANGED = 0x311

    WM_HOTKEY = 0x312
    WM_PRINT = 0x317
    WM_PRINTCLIENT = 0x318

    WM_HANDHELDFIRST = 0x358
    WM_HANDHELDLAST = 0x35F
    WM_PENWINFIRST = 0x380
    WM_PENWINLAST = 0x38F
    WM_COALESCE_FIRST = 0x390
    WM_COALESCE_LAST = 0x39F
    WM_DDE_FIRST = 0x3E0
    WM_DDE_INITIATE = 0x3E0
    WM_DDE_TERMINATE = 0x3E1
    WM_DDE_ADVISE = 0x3E2
    WM_DDE_UNADVISE = 0x3E3
    WM_DDE_ACK = 0x3E4
    WM_DDE_DATA = 0x3E5
    WM_DDE_REQUEST = 0x3E6
    WM_DDE_POKE = 0x3E7
    WM_DDE_EXECUTE = 0x3E8
    WM_DDE_LAST = 0x3E8

    WM_USER = 0x400
    WM_APP = 0x8000

  • 相关阅读:
    wepy框架构建小程序(1)
    百度地图2
    百度地图1
    VS Code 用户自定义代码片段(React)
    JS MarcoTasks MicroTasks
    JS位运算和遍历
    VueX源码分析(5)
    VueX源码分析(4)
    tensorflow 自带的实现函数翻转的函数
    namedtuple
  • 原文地址:https://www.cnblogs.com/riskyer/p/3306472.html
Copyright © 2011-2022 走看看