2
我想使用SendInput來模擬C++中的鍵盤按鍵,而單個按鈕同時工作,試圖同時發送鍵(快捷方式)不起作用。在C++的窗口上用SendInput發送同時發生的鍵盤事件
我嘗試了一切,但沒有任何工作,如果我單獨發送VK_LWIN它顯示,但不能同時組合鍵。
這裏是我的代碼:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
void setInput(INPUT * inp,uint index, WORD keycode,BOOL kUp);
void showRun();
int main(void)
{
showRun();
return 0;
}
void setInput(INPUT * inp,uint index, WORD keycode,BOOL kUp)
{
inp[index].type = INPUT_KEYBOARD;
inp[index].ki.wVk = keycode;
inp[index].ki.wScan = MapVirtualKey(keycode, 0);
inp[index].ki.time = 0;
inp[index].ki.dwExtraInfo = 0;
if (kUp == 1)
{
inp[index].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_EXTENDEDKEY;
}else
{
inp[index].ki.dwFlags = 0 | KEYEVENTF_EXTENDEDKEY;
}
}
//this doesn't do anything
void showRun()
{
INPUT *inp = (INPUT*) malloc(sizeof(INPUT) * 4);
memset(inp,0,sizeof(INPUT));
setInput(inp,0,VK_LWIN,0);
setInput(inp,1,VK_RBUTTON,0);
setInput(inp,2,VK_RBUTTON,1);
setInput(inp,3,VK_LWIN,1);
SendInput(4,inp,sizeof(INPUT));
free(inp);
}
而這工作得很好:
void showStart()
{
INPUT *inp = (INPUT*) malloc(sizeof(INPUT) * 2);
memset(inp,0,sizeof(INPUT));
setInput(inp,0,VK_LWIN,0);
setInput(inp,1,VK_LWIN,1);
SendInput(2,inp,sizeof(INPUT));
free(inp);
}
先感謝您的任何提示。
'VK_RBUTTON'是鼠標右鍵。 – chris
注意,由於您發送的是固定數量的密鑰,因此不需要動態分配輸入,只需將陣列設置爲本地。 –
@chris感謝你我發現我的錯誤! – Ammarz