keybd_event,mouse_event函数使用方法

Keybd_event

keybd_event函数功能:该函数为Windows提供的虚拟键盘API函数,可合成一次击键事件。系统可使用该函数屏蔽相应键盘动作,合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,触发一个按键事件。

keybd_event函数原型:

VOID keybd_event(  
  BYTE bVk, // virtual-key code  
  BYTE bScan, // hardware scan code  
  DWORD dwFlags, // flags specifying various function options  
  DWORD dwExtraInfo // additional data associated with keystroke  
); 

参数介绍:

  • bVk:定义一个虚拟键码,键码值必须在1~254之间。(具体参见附录:常用模拟键的键值对照表);
  • bScan:定义该键的硬件扫描码,一般不用设置,用0代替就行;
  • dwFlags:定义函数操作的各个方面的一个标志位集,如果为keydown则置0即可,如果为keyup则设成”KEYEVENTF_KEYUP”;
  • dwExtralnfo:定义与击键相关的附加的32位值,一般也置0即可。

使用实例:

/****模拟按下“Hello”****/
keybd_event(16,0,0,0); //按下Shift键
keybd_event('H',0,0,0);  //按下h键
keybd_event('H',0,KEYEVENTF_KEYUP,0);//松开h键
keybd_event(16,0,KEYEVENTF_KEYUP,0);//松开Shift键,构成组合键——按下Shift的同时按下h,形成H
keybd_event('E',0,0,0);
keybd_event('E',0,KEYEVENTF_KEYUP,0);//松开e键
keybd_event('L',0,0,0);
keybd_event('L',0,KEYEVENTF_KEYUP,0);//松开l键
keybd_event('L',0,0,0);
keybd_event('L',0,KEYEVENTF_KEYUP,0);//松开l键
keybd_event('O',0,0,0);
keybd_event('O',0,KEYEVENTF_KEYUP,0);//松开o键

Mouse_event

mouse_event函数功能: mouse_event函数功能是综合鼠标移动和按钮点击。如果鼠标被移动,用设置MOUSEEVENTF_MOVE来表明,dX和dy保留移动的信息。给出的信息是绝对或相对整数值。

函数原型:

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  
);  

参数介绍:

  • dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。
  • dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。
  • dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。
  • dwData:如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。
  • dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。

使用实例:

/****模拟鼠标点击****/
void CMouseEventDlg::OnButton1()   
{  
    CPoint point;  
    GetCursorPos(&point);  
    SetCursorPos( ** , ** );//任意坐标
    mouse_event( MOUSEEVENTF_LEFTDOWN, 0,0,0,NULL);//鼠标down事件  
    mouse_event( MOUSEEVENTF_LEFTUP, 0,0,0,NULL);//鼠标up事件  
    SetCursorPos(point.x,point.y);  
}

官方介绍:

https://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx


附录:常用模拟键的键值对照表

键盘键与虚拟键码对照表  

字母和数字键     数字小键盘的键   功能键         其它键   
键   键码    键   键码   键    键码   键          键码   
A   65     0    96    F1    112   Backspace    8   
B   66     1    97    F2    113   Tab        9   
C   67     2    98     F3    114   Clear      12   
D   68     3    99    F4    115   Enter      13   
E   69     4    100   F5    116   Shift      16   
F   70     5    101   F6    117   Control     17   
G   71     6    102   F7    118   Alt        18   
H   72     7    103   F8    119   Caps Lock    20   
I   73     8    104   F9    120   Esc        27   
J   74     9    105   F10   121   Spacebar    32   
K   75     *    106   F11   122   Page Up     33   
L   76     +    107   F12   123   Page Down    34   
M   77     Enter 108   --     --   End        35   
N   78     -    109   --     --   Home       36   
O   79     .    110   --     --   Left Arrow   37   
P   80     /    111   --     --   Up Arrow     38   
Q   81    --    --   --     --    Right Arrow   39   
R   82    --    --   --     --   Down Arrow    40   
S   83    --    --   --     --   Insert       45   
T   84    --    --   --     --   Delete       46   
U   85    --    --   --     --   Help        47   
V   86    --    --   --     --   Num Lock     144   
W   87            
X   88        
Y   89        
Z   90        
0   48        
1   49        
2   50         
3   51         
4   52         
5   53         
6   54         
7   55         
8   56         
9   57    

你可能感兴趣的:(windows)