sendinput是一款函式合成鍵盤事件和滑鼠事件,用來模擬滑鼠或者鍵盤操作,事件將被插入在滑鼠或者鍵盤處理佇列裡面,sendinput中包括的參數有cInputs、pInputs、cbSize。
sendinput返回值是成功插入操作事件的個數。如果插入出錯可以利用GetLastError來查看錯誤類型。
基本介紹
- 外文名:sendinput
- 適用平台:頭檔案 winuser.h
- 返回值:成功插入了多少個操作事件
- 實例:/*模擬滑鼠單擊100,200實例*/
函式原型,函式說明,參數說明,適用平台,注意事項,實例,
函式原型
UINT SendInput( UINT nInput, LPINPUT pInput, INT cbSize)
函式說明
該函式合成鍵盤事件和滑鼠事件,用來模擬滑鼠或者鍵盤操作。事件將被插入在滑鼠或者鍵盤處理佇列裡面。
參數說明
nInput 指定ninput 數組中元素的個數。就是插入事件的個數。
pInput 指向一個類型為INPUT的數組變數,該數組中的每個元素代表一個將要插入到執行緒事件中去的鍵盤或滑鼠事件。
cbSize 指定INPUT結構的大小。如果cbSize不是INPUT結構的大小,則函式將失敗返回。
適用平台
頭檔案 winuser.h
程式庫 user32.dll
使用INPUT等結構體時,需要#include <winable.h>
注意事項
注意到插入的是INPUT結構的事件。故應該繼續查看INPUT的相關內容。
typedef struct tagINPUT {
DWORD type; union {
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi; };
} INPUT, *PINPUT, FAR* LPINPUT;
現在應該比較明確了吧。
實例
/*模擬滑鼠單擊100,200實例*/
INPUT input;
input.type = INPUT_MOUSE;
input.mi.dx = static_cast<long>(65535.0f / (GetSystemMetrics(SM_CXSCREEN) - 1) * 100);
input.mi.dy = static_cast<long>(65535.0f / (GetSystemMetrics(SM_CYSCREEN) - 1) * 200);
input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
SendInput(1, &input, sizeof(INPUT));