程序模拟键盘鼠标操作

用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput  API函数.使用示例如下(附注释):

         /*
        * 模拟键盘输入,以按窗口键(WIN键)为例
        
*/

        
// keybd_event模拟键盘输入示例
        ::keybd_event( VK_LWIN,   0 ,   0  ,  0  );     // 按下WIN键          
        ::keybd_event( VK_LWIN,   0 ,  KEYEVENTF_KEYUP,  0  );  // 弹起WIN键      

        
// SendInput模拟键盘输入示例
        INPUT keyInput[ 2 ];
        memset( keyInput, 
0 sizeof ( keyInput ) );
        keyInput[
0 ].type  =  keyInput[ 1 ].type  =  INPUT_KEYBOARD;   // 设置为键盘输入
        keyInput[ 0 ].ki.wVk  =  keyInput[ 1 ].ki.wVk  =  VK_LWIN;   // 操作WIN键
        keyInput[ 1 ].ki.dwFlags   =  KEYEVENTF_KEYUP;    // 弹起    
        ::SendInput( _countof( keyInput ), keyInput,  sizeof ( INPUT ) );


        
/*
        * 模拟鼠标输入,以单击开始菜单为例
        * 由于我的机器分辨率为1440*900,因而鼠标位置(0,880)刚好位于开始菜单的位置
        
*/

        
// mouse_event模拟鼠标输入示例
        ::SetCursorPos(  0 ,   880  );      // 将当前鼠标位置设置到开始菜单位置
        ::mouse_event( MOUSEEVENTF_ABSOLUTE  |  MOUSEEVENTF_LEFTDOWN,   0 0 0 , NULL );   // 模拟左键按下
        ::mouse_event( MOUSEEVENTF_ABSOLUTE  |  MOUSEEVENTF_LEFTUP,  0 ,   0 0 , NULL );        // 模拟左键弹起

        
// SendInput模拟鼠标输入示例
        ::SetCursorPos(  0 ,   880  );   // 将当前鼠标位置设置到开始菜单位置
        INPUT mouseInput[ 2 ];
        memset( mouseInput, 
0 sizeof ( mouseInput ) );
        mouseInput[
0 ].type  =  mouseInput[ 1 ].type  =  INPUT_MOUSE;          // 设置为鼠标输入
        mouseInput[ 0 ].mi.dwFlags  =  MOUSEEVENTF_ABSOLUTE  |  MOUSEEVENTF_LEFTDOWN;   // 左键按下
        mouseInput[ 1 ].mi.dwFlags   =  MOUSEEVENTF_ABSOLUTE  |  MOUSEEVENTF_LEFTUP;   // 左键弹起
        ::SendInput( _countof( mouseInput ), mouseInput,  sizeof ( INPUT ) );

 

你可能感兴趣的:(模拟)