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 函数依次发送这两个事件序列,实现同时操作键盘和鼠标。注意在发送完事件序列后,需要再发送一次释放按键的事件序列,以避免按键一直处于按下状态。

SendInput 函数:实现键盘鼠标同时操作

原文地址: https://www.cveoy.top/t/topic/nDdQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录