使用SendInput可模拟鼠标键盘事件,先设置INPUT结构体类型与参数,再调用SendInput发送按键或鼠标动作,支持组合键与精确控制,需注意键码、标志位及焦点问题。

在C++中模拟鼠标和键盘事件,通常用于自动化操作、游戏外挂或测试工具开发。Windows平台提供了系统级别的API来实现这些功能,最常用的是 SendInput 函数。它比旧的 keybd_event 和 mouse_event 更现代、更可靠。
SendInput 可以合成键盘按键动作,比如按下A键、回车、Ctrl+C等组合键。
示例:按下并释放 'A' 键
INPUT input = {0};
// 按下 A 键
input.type = INPUT_KEYBOARD;
input.ki.wVk = 'A'; // 虚拟键码
SendInput(1, &input, sizeof(INPUT));
// 释放 A 键
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &input, sizeof(INPUT));
可以模拟左键点击、右键点击、移动鼠标、滚轮滚动等操作。
示例:鼠标左键单击
INPUT input = {0};
// 按下左键
input.type = INPUT_MOUSE;
input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &input, sizeof(INPUT));
// 释放左键
input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &input, sizeof(INPUT));
需要依次按下修饰键、字符键,再释放。
立即学习“C++免费学习笔记(深入)”;
示例:发送 Ctrl + C
INPUT inputs[4] = {0};
// 按下 Ctrl
inputs[0].type = INPUT_KEYBOARD;
inputs[0].ki.wVk = VK_CONTROL;
// 按下 C
inputs[1].type = INPUT_KEYBOARD;
inputs[1].ki.wVk = 'C';
// 释放 C
inputs[2].type = INPUT_KEYBOARD;
inputs[2].ki.wVk = 'C';
inputs[2].ki.dwFlags = KEYEVENTF_KEYUP;
// 释放 Ctrl
inputs[3].type = INPUT_KEYBOARD;
inputs[3].ki.wVk = VK_CONTROL;
inputs[3].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(4, inputs, sizeof(INPUT));
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号