程序模拟键盘鼠标操作
用代码模拟键盘鼠标操作,主要用到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 ) );
* 模拟键盘输入,以按窗口键(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 ) );