在C ++的窗口上用SendInput发送同时发生的键盘事件

我想模拟使用SendInput的 C ++键盘按下,而单个button的工作,试图同时发送键(快捷键)不起作用。

我尝试了一切,但没有任何工作,如果我单独发送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); } 

在此先感谢您的任何提示。

我愚蠢的,我应该已经使用VkKeyScan('R'),而不是VK_RBUTTON现在它的工作!