VC++鼠标、键盘的模拟操作

一、鼠标事件模拟使用的函数是mouse_event()函数,对于鼠标事件我们应该确定两个问题:1.鼠标点击了哪个键:左键、中键、右键?  2.鼠标点击的位置。

mouse_event()函数常常配合SetCursorPos();函数来使用。

mouse_event():

 

1

2

3

4

5

6

7

VOID mouse_event(

DWORD dwFlags, // motion and click options

DWORD dx, // horizontal position or change

DWORD dy, // vertical position or change

DWORD dwData, // wheel movement

ULONG_PTR dwExtraInfo // application-defined information

);

 

参数1:告诉系统你的鼠标事件,一共有下面的几种鼠标事件可供选择:

MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,那么dX和dY是相对于上一次鼠标的位置,例如上一次鼠标通过SetCursorPos(0,0)将鼠标的位置设置为了(0,0),那么这个时候的dX和dY就是相对于(0,0)的偏移。

此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,还是需要下面的几个类型的参数的:

MOUSEEVENTF_MOVE:表明发生移动。

MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。

MOUSEEVENTF_LEFTUP:表明松开鼠标左键。

MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。

MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。

MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。

MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。

MOUSEEVENTF_WHEEL:如果鼠标有一个滚轮,表明鼠标轮被移动。移动的数量由dwData给出。

参数2:事件发生的x坐标,但也可能是偏移量

参数3:事件发生的y坐标,但也可能是偏移量

参数4:dwData:,如果dwFlags为MOUSEEVENTF_WHEEL,

      则dwData指定鼠标轮移动的数量。正值表明鼠

      标轮向前转动,即远离用户的方向;负值表明鼠

      标轮向后转动,即朝向用户。一个轮击定义为

      WHEEL_DELTA,即120。

参数5:指定与鼠标事件相关的附加32位值。应用程序

       调用函数GetMessageExtraInfo来获得此附

       加信息。

 

我们以鼠标双击(100,100)这个坐标为例子写一段代码片段吧,注意对于双击来说,其实就是短时间内左键按下然后左键弹起:

1

2

3

4

5

6

7

8

9

10

//首先直接鼠标位置设置为(100,100)

SetCursorPos(100,100);

//然后,完成一次点击,(按下弹起)

mouse_event(MOUSEEVENTF_LEFTDOWN ,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

//注意鼠标两次点击之间应当有一个时间间隔,否则可能不会出发双击的

Sleep(100);

//再来一次点击

mouse_event(MOUSEEVENTF_LEFTDOWN ,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

 

二、键盘事件模拟使用函数keybd_event()函数。

 

VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);

参数1:一个8位的按键虚拟码,注意是1~254之间的

参数2:定义该键的硬件扫描码:。

参数3:定义函数操作的各个方面的一个标志位集。应用程

        序可使用如下一些预定义常数的组合设置标志位。

      KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前

         一个值为OXEO(224)的前缀字节。

      KEYEVENTF_KEYUP:若指定该值,该键将被释放;若

      未指定该值,该键将被按下。

参数4:定义与击键相关的附加的32位值。

我们以暴风影音的播放按钮为例来模拟键盘事件:

 

 
  1. 1

  2. 1

  3. 通过模拟键盘事件,给暴风影音的播放按钮发送消息

  4. HWND hFrmWnd=::FindWindow(_T("Baofeng_StormPlayer"),NULL);

  5. if (hFrmWnd!=NULL)

  6. {

  7. ::ShowWindow(hFrmWnd,SW_SHOWNORMAL);

  8. ::SetForegroundWindow(hFrmWnd);

  9. keybd_event(VK_SPACE,0,0,0);

  10. Sleep(200);

  11. keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0);

  12. }


三、键盘  虚拟码表

 

VK_LBUTTON 1 鼠标左键
VK_RBUTTON 2 鼠标右键
VK_CANCEL 3 Cancel
VK_MBUTTON 4 鼠标中键
VK_XBUTTON1 5  
VK_XBUTTON2 6  
VK_BACK 8 Backspace
VK_TAB 9 Tab
VK_CLEAR 12 Clear
VK_RETURN 13 Enter
VK_SHIFT 16 Shift
VK_CONTROL 17 Ctrl
VK_MENU 18 Alt
VK_PAUSE 19 Pause
VK_CAPITAL 20 Caps Lock
VK_KANA 21  
VK_HANGUL 21  
VK_JUNJA 23  
VK_FINAL 24  
VK_HANJA 25  
VK_KANJI 25*  
VK_ESCAPE 27 Esc
VK_CONVERT 28  
VK_NONCONVERT 29  
VK_ACCEPT 30  
VK_MODECHANGE 31  
VK_SPACE 32 Space
VK_PRIOR 33 Page Up
VK_NEXT 34 Page Down
VK_END 35 End
VK_HOME 36 Home
VK_LEFT 37 Left Arrow
VK_UP 38 Up Arrow
VK_RIGHT 39 Right Arrow
VK_DOWN 40 Down Arrow
VK_SELECT 41 Select
VK_PRINT 42 Print
VK_EXECUTE 43 Execute
VK_SNAPSHOT 44 Snapshot
VK_INSERT 45 Insert
VK_DELETE 46 Delete
VK_HELP 47 Help
  48 0
  49 1
  50 2
  51 3
  52 4
  53 5
  54 6
  55 7
  56 8
  57 9
  65 A
  66 B
  67 C
  68 D
  69 E
  70 F
  71 G
  72 H
  73 I
  74 J
  75 K
  76 L
  77 M
  78 N
  79 O
  80 P
  81 Q
  82 R
  83 S
  84 T
  85 U
  86 V
  87 W
  88 X
  89 Y
  90 Z
VK_LWIN 91  
VK_RWIN 92  
VK_APPS 93  
VK_SLEEP 95  
VK_NUMPAD0 96 小键盘 0
VK_NUMPAD1 97 小键盘 1
VK_NUMPAD2 98 小键盘 2
VK_NUMPAD3 99 小键盘 3
VK_NUMPAD4 100 小键盘 4
VK_NUMPAD5 101 小键盘 5
VK_NUMPAD6 102 小键盘 6
VK_NUMPAD7 103 小键盘 7
VK_NUMPAD8 104 小键盘 8
VK_NUMPAD9 105 小键盘 9
VK_MULTIPLY 106 小键盘 *
VK_ADD 107 小键盘 +
VK_SEPARATOR 108 小键盘 Enter
VK_SUBTRACT 109 小键盘 -
VK_DECIMAL 110 小键盘 .
VK_DIVIDE 111 小键盘 /
VK_F1 112 F1
VK_F2 113 F2
VK_F3 114 F3
VK_F4 115 F4
VK_F5 116 F5
VK_F6 117 F6
VK_F7 118 F7
VK_F8 119 F8
VK_F9 120 F9
VK_F10 121 F10
VK_F11 122 F11
VK_F12 123 F12
VK_F13 124  
VK_F14 125  
VK_F15 126  
VK_F16 127  
VK_F17 128  
VK_F18 129  
VK_F19 130  
VK_F20 131  
VK_F21 132  
VK_F22 133  
VK_F23 134  
VK_F24 135  
VK_NUMLOCK 144 Num Lock
VK_SCROLL 145 Scroll
VK_LSHIFT 160  
VK_RSHIFT 161  
VK_LCONTROL 162  
VK_RCONTROL 163  
VK_LMENU 164  
VK_RMENU 165  
VK_BROWSER_BACK 166  
VK_BROWSER_FORWARD 167  
VK_BROWSER_REFRESH 168  
VK_BROWSER_STOP 169  
VK_BROWSER_SEARCH 170  
VK_BROWSER_FAVORITES 171  
VK_BROWSER_HOME 172  
VK_VOLUME_MUTE 173 VolumeMute
VK_VOLUME_DOWN 174 VolumeDown
VK_VOLUME_UP 175 VolumeUp
VK_MEDIA_NEXT_TRACK 176  
VK_MEDIA_PREV_TRACK 177  
VK_MEDIA_STOP 178  
VK_MEDIA_PLAY_PAUSE 179  
VK_LAUNCH_MAIL 180  
VK_LAUNCH_MEDIA_SELECT 181  
VK_LAUNCH_APP1 182  
VK_LAUNCH_APP2 183  
VK_OEM_1 186 ; :
VK_OEM_PLUS 187 = +
VK_OEM_COMMA 188  
VK_OEM_MINUS 189 - _
VK_OEM_PERIOD 190  
VK_OEM_2 191 / ?
VK_OEM_3 192 ` ~
VK_OEM_4 219 [ {
VK_OEM_5 220 \ |
VK_OEM_6 221 ] }
VK_OEM_7 222 ' "
VK_OEM_8 223  
VK_OEM_102 226  
VK_PACKET 231  
VK_PROCESSKEY 229  
VK_ATTN 246  
VK_CRSEL 247  
VK_EXSEL 248  
VK_EREOF 249  
VK_PLAY 250  
VK_ZOOM 251  
VK_NONAME 252  
VK_PA1 253  
VK_OEM_CLEAR 254

 

VK_LBUTTON 1 鼠标左键
VK_RBUTTON 2 鼠标右键
VK_CANCEL 3 Cancel
VK_MBUTTON 4 鼠标中键
VK_XBUTTON1 5  
VK_XBUTTON2 6  
VK_BACK 8 Backspace
VK_TAB 9 Tab
VK_CLEAR 12 Clear
VK_RETURN 13 Enter
VK_SHIFT 16 Shift
VK_CONTROL 17 Ctrl
VK_MENU 18 Alt
VK_PAUSE 19 Pause
VK_CAPITAL 20 Caps Lock
VK_KANA 21  
VK_HANGUL 21  
VK_JUNJA 23  
VK_FINAL 24  
VK_HANJA 25  
VK_KANJI 25*  
VK_ESCAPE 27 Esc
VK_CONVERT 28  
VK_NONCONVERT 29  
VK_ACCEPT 30  
VK_MODECHANGE 31  
VK_SPACE 32 Space
VK_PRIOR 33 Page Up
VK_NEXT 34 Page Down
VK_END 35 End
VK_HOME 36 Home
VK_LEFT 37 Left Arrow
VK_UP 38 Up Arrow
VK_RIGHT 39 Right Arrow
VK_DOWN 40 Down Arrow
VK_SELECT 41 Select
VK_PRINT 42 Print
VK_EXECUTE 43 Execute
VK_SNAPSHOT 44 Snapshot
VK_INSERT 45 Insert
VK_DELETE 46 Delete
VK_HELP 47 Help
  48 0
  49 1
  50 2
  51 3
  52 4
  53 5
  54 6
  55 7
  56 8
  57 9
  65 A
  66 B
  67 C
  68 D
  69 E
  70 F
  71 G
  72 H
  73 I
  74 J
  75 K
  76 L
  77 M
  78 N
  79 O
  80 P
  81 Q
  82 R
  83 S
  84 T
  85 U
  86 V
  87 W
  88 X
  89 Y
  90 Z
VK_LWIN 91  
VK_RWIN 92  
VK_APPS 93  
VK_SLEEP 95  
VK_NUMPAD0 96 小键盘 0
VK_NUMPAD1 97 小键盘 1
VK_NUMPAD2 98 小键盘 2
VK_NUMPAD3 99 小键盘 3
VK_NUMPAD4 100 小键盘 4
VK_NUMPAD5 101 小键盘 5
VK_NUMPAD6 102 小键盘 6
VK_NUMPAD7 103 小键盘 7
VK_NUMPAD8 104 小键盘 8
VK_NUMPAD9 105 小键盘 9
VK_MULTIPLY 106 小键盘 *
VK_ADD 107 小键盘 +
VK_SEPARATOR 108 小键盘 Enter
VK_SUBTRACT 109 小键盘 -
VK_DECIMAL 110 小键盘 .
VK_DIVIDE 111 小键盘 /
VK_F1 112 F1
VK_F2 113 F2
VK_F3 114 F3
VK_F4 115 F4
VK_F5 116 F5
VK_F6 117 F6
VK_F7 118 F7
VK_F8 119 F8
VK_F9 120 F9
VK_F10 121 F10
VK_F11 122 F11
VK_F12 123 F12
VK_F13 124  
VK_F14 125  
VK_F15 126  
VK_F16 127  
VK_F17 128  
VK_F18 129  
VK_F19 130  
VK_F20 131  
VK_F21 132  
VK_F22 133  
VK_F23 134  
VK_F24 135  
VK_NUMLOCK 144 Num Lock
VK_SCROLL 145 Scroll
VK_LSHIFT 160  
VK_RSHIFT 161  
VK_LCONTROL 162  
VK_RCONTROL 163  
VK_LMENU 164  
VK_RMENU 165  
VK_BROWSER_BACK 166  
VK_BROWSER_FORWARD 167  
VK_BROWSER_REFRESH 168  
VK_BROWSER_STOP 169  
VK_BROWSER_SEARCH 170  
VK_BROWSER_FAVORITES 171  
VK_BROWSER_HOME 172  
VK_VOLUME_MUTE 173 VolumeMute
VK_VOLUME_DOWN 174 VolumeDown
VK_VOLUME_UP 175 VolumeUp
VK_MEDIA_NEXT_TRACK 176  
VK_MEDIA_PREV_TRACK 177  
VK_MEDIA_STOP 178  
VK_MEDIA_PLAY_PAUSE 179  
VK_LAUNCH_MAIL 180  
VK_LAUNCH_MEDIA_SELECT 181  
VK_LAUNCH_APP1 182  
VK_LAUNCH_APP2 183  
VK_OEM_1 186 ; :
VK_OEM_PLUS 187 = +
VK_OEM_COMMA 188  
VK_OEM_MINUS 189 - _
VK_OEM_PERIOD 190  
VK_OEM_2 191 / ?
VK_OEM_3 192 ` ~
VK_OEM_4 219 [ {
VK_OEM_5 220 \ |
VK_OEM_6 221 ] }
VK_OEM_7 222 ' "
VK_OEM_8 223  
VK_OEM_102 226  
VK_PACKET 231  
VK_PROCESSKEY 229  
VK_ATTN 246  
VK_CRSEL 247  
VK_EXSEL 248  
VK_EREOF 249  
VK_PLAY 250  
VK_ZOOM 251  
VK_NONAME 252  
VK_PA1 253  
VK_OEM_CLEAR 254

你可能感兴趣的:(VC)