SendInput
代替了 mouse_event 以及 keybd_event
prototype
UINT WINAPI SendInput( _In_ UINT nInputs, _In_ LPINPUT pInputs, _In_ int cbSize // 表示的是input的size,可以通过sizeof(INPUT) * n [这里传递的是 pInput的首地址,这个input可能不止一个] );
LPINPUT
typedef struct tagINPUT { DWORD type; union { MOUSEINPUT mi; KEYBDINPUT ki; HARDWAREINPUT hi; }; } INPUT, *PINPUT, FAR* LPINPUT;
MOUSEINPUT
typedef struct tagMOUSEINPUT { LONG dx; LONG dy; DWORD mouseData; DWORD dwFlags; DWORD time; ULONG_PTR dwExtraInfo; } MOUSEINPUT, *PMOUSEINPUT, FAR* LPMOUSEINPUT;
KEYBDINPUT
typedef struct tagKEYBDINPUT { WORD wVk; WORD wScan; DWORD dwFlags; DWORD time; ULONG_PTR dwExtraInfo; } KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;
HARDWAREINPUT
typedef struct tagHARDWAREINPUT { DWORD uMsg; WORD wParamL; WORD wParamH; } HARDWAREINPUT, *PHARDWAREINPUT, FAR* LPHARDWAREINPUT;
use keyboard
ki -> key input; mi-> mouse input
#define WINVER 0x0500 #include <windows.h> int main() { // This structure will be used to create the keyboard // input event. INPUT ip; // Pause for 5 seconds. Sleep(5000); // Set up a generic keyboard event. ip.type = INPUT_KEYBOARD; ip.ki.wScan = 0; // hardware scan code for key ip.ki.time = 0; ip.ki.dwExtraInfo = 0; // Press the "A" key ip.ki.wVk = 0x41; // virtual-key code for the "a" key ip.ki.dwFlags = 0; // 0 for key press SendInput(1, &ip, sizeof(INPUT)); // Release the "A" key ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release SendInput(1, &ip, sizeof(INPUT)); // Exit normally return 0; }
... 目前还未测试使用,仅仅见到了进行记录
https://stackoverflow.com/questions/22419038/how-to-use-sendinput-function-c
use of mouse event
https://stackoverflow.com/questions/62962636/how-to-use-sendinput-properly-to-simulate-mouse-input-in-c-sharp
分类:
win32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步