SendInput错误的参数

时间:2018-06-15 11:29:58

标签: c++ windows winapi

我想改进我的SendInput()功能,但遇到了错误。

  

ERROR_INVALID_PARAMETER

87 (0x57)

The parameter is incorrect.
     

https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

我有点困惑哪个参数不正确。

如果我忘记了什么,请不要犹豫。

INPUT in[6] = {0};

//Press Enter Key
in[0].type = INPUT_KEYBOARD;
in[0].ki.wScan = 0;
in[0].ki.dwFlags = 0;
in[0].ki.time = 0;
in[0].ki.dwExtraInfo = 0;
in[0].ki.wVk = VK_RETURN;

//release enter key
in[1] = in[0];
in[1].ki.dwFlags = KEYEVENTF_KEYUP;

//Hold Shift key and press key 7
in[2].type = INPUT_KEYBOARD;
in[2].ki.wScan = 0;
in[2].ki.dwFlags = 0;
in[2].ki.time = 0;
in[2].ki.dwExtraInfo = 0;
in[2].ki.wVk = VK_SHIFT;

in[3].type = INPUT_KEYBOARD;
in[3].ki.wScan = 0;
in[3].ki.dwFlags = 0;
in[3].ki.time = 0;
in[3].ki.dwExtraInfo = 0;
in[3].ki.wVk = 0x37;

//release key 7
in[4] = in[3];
in[4].ki.dwFlags = KEYEVENTF_KEYUP;

//release key shift
in[5] = in[2];
in[5].ki.dwFlags = KEYEVENTF_KEYUP;

if (SendInput(6, in, sizeof(in)) == 0)
{
std::cout << "Uppps some error in SendInput: " << GetLastError() << std::endl;
}

2 个答案:

答案 0 :(得分:4)

INPUT结构的大小(以字节为单位)。如果cbSize不是INPUT结构的大小,则函数将失败。

 var grid;
  var columns = [
    {id: "Date", name: "Date", field: "Date"},
    {id: "tpn", name: "tpn", field: "tpn"},
  ];
  var options = {
    enableCellNavigation: true,
    enableColumnReorder: true,
    explicitInitialization: true
  };


$(function () {
    var data = [];
    for (var i = 0; i < 500; i++) {
      data[i] = {
        Date: "20180612",
SPN:Math.random(),
      };

var myGrid = $("<div id='MovementTracker' style='height: 399px; overflow: hidden; outline: 0px; position: relative;'></div>");

grid = new Slick.Grid(myGrid, data, columns, options);

 myGrid.appendTo($("#app > div > div > div > div > div.size--5.padding--horizontal--double > div.size--content > div > div > div"));
 grid.init();

... Oups

答案 1 :(得分:0)

documentationcbSize

  

INPUT结构的大小(以字节为单位)。如果cbSize不是INPUT结构的大小,则函数将失败。

您正在传递sizeof(in),即整个数组的大小。而是通过sizeof(INPUT)