SendInput 函数:实现键盘鼠标同时操作
SendInput 函数可以实现模拟键盘和鼠标输入,包括按键、释放键、鼠标移动、鼠标点击等操作。为了同时操作键盘和鼠标,需要使用 INPUT 结构体来定义输入事件序列,然后使用 SendInput 函数发送这些事件序列。
以下是一个示例代码,演示如何同时按下 Ctrl+Alt+Delete 并移动鼠标到屏幕中央:
#include <Windows.h>
int main()
{
// 定义键盘事件序列
INPUT input[3] = {};
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_CONTROL;
input[0].ki.dwFlags = 0;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = VK_MENU; // Alt
input[1].ki.dwFlags = 0;
input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = VK_DELETE;
input[2].ki.dwFlags = 0;
// 定义鼠标事件序列
INPUT mouse[3] = {};
mouse[0].type = INPUT_MOUSE;
mouse[0].mi.dx = (65535 / 2); // x 坐标
mouse[0].mi.dy = (65535 / 2); // y 坐标
mouse[0].mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
mouse[1].type = INPUT_MOUSE;
mouse[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
mouse[2].type = INPUT_MOUSE;
mouse[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
// 发送输入事件序列
SendInput(3, input, sizeof(INPUT));
SendInput(3, mouse, sizeof(INPUT));
// 释放按键
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
input[1].ki.dwFlags = KEYEVENTF_KEYUP;
input[2].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(3, input, sizeof(INPUT));
return 0;
}
上述代码定义了两个输入事件序列,一个是键盘事件序列,包括 Ctrl、Alt 和 Delete 三个键的按下操作;另一个是鼠标事件序列,包括将鼠标移动到屏幕中央和左键点击操作。最后使用 SendInput 函数依次发送这两个事件序列,实现同时操作键盘和鼠标。注意在发送完事件序列后,需要再发送一次释放按键的事件序列,以避免按键一直处于按下状态。
原文地址: https://www.cveoy.top/t/topic/nDdQ 著作权归作者所有。请勿转载和采集!