原文链接 -> 传送门
函数功能:
SendInput 函数用户合成键盘事件,鼠标动作和按钮事件。
API 函数原型:
注释:_In_ 说明该参数是输入的。
UINT WINAPI SendInput( _In_ UINT nInputs, _In_ LPINPUT pInputs, _In_ int cbSize );
参数解析:
|
参数 |
含义 |
|
nInputs |
指定 pInputs 数组中元素的个数 |
|
pInputs |
一个 INPUT 结构体类型的数组。该数组中的每个元素代表一个将要插入到键盘或鼠标输入流中的事件 |
|
cbSize |
指定 INPUT 结构的字节大小。如果 cbSize 不是 INPUT 结构的大小,则函数将调用失败 |
返回值:
1. 函数返回成功被插入到键盘或鼠标输入流中的事件数目。如果函数返回值为 0,则表示输入流已经被另一线程所阻塞。获取更多错误有关信息,请调用 GetLastError 函数。
2. 当函数被 UIPI 阻塞时函数调用失败。
注意:GetLastError 函数和返回值将都不能表明函数调用失败是由于 UIPI 阻塞造成的。
备注:
1. 该函数隶属于 UIPI。只允许应用程序注入输入到与该应用程序同等或较小完整性级别的应用程序。
2. SendInput 函数将 INPUT 结构中的事件连续的插入到键盘或鼠标输入流。这些事件中不会夹杂着由用户(使用键盘或鼠标)或者通过调用 keybd_event 函数,mouse_event 函数或者其他 SendInput 函数调用插入的其他键盘或鼠标输入事件。
3. 该函数并不会重置键盘当前状态。任何在该函数被调用之前的按键输入可能会干涉该函数产生的事件。为了避免出现这个问题,使用 GetAsyncKeyState 函数来检测键盘状态并在必要时改正。
4. 因为触碰键盘使用的是定义在 winnls.h 中的替代宏来发送输入到系统,键盘事件钩子上的监听器必须对从触摸键盘发来的输入进行解码。更多信息,请参见 Surrogates and Supplementary Characters。
5. 辅助功能应用程序可以使用 SendInput 函数来注入与应用程序启动快捷键相应的按键。该启动快捷键由 shell 处理。此功能不保证对其他类型的应用程序有效。
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Winuser.h(包含于 Windows.h) |
|
Library |
User32.lib |
|
DLL |
User32.dll |




