程序模拟键盘鼠标操作

用代码模拟键盘鼠标操作,主要用到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 @   孤竹君  阅读(1458)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示