程序模拟键盘鼠标操作

用代码模拟键盘鼠标操作,主要用到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, 
0sizeof( 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,  000, NULL );  //模拟左键按下
        ::mouse_event( MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, 0,  00, NULL );       //模拟左键弹起

        
//SendInput模拟鼠标输入示例
        ::SetCursorPos( 0,  880 );  //将当前鼠标位置设置到开始菜单位置
        INPUT mouseInput[2];
        memset( mouseInput, 
0sizeof( 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 ) );

 

posted @ 2009-04-24 16:00 孤竹君 阅读(...) 评论(...) 编辑 收藏