C++ SendInput鼠标输入是否仅单击?

C++ SendInput鼠标输入是否仅单击?,c++,winapi,C++,Winapi,如何使用SendInput()进行鼠标输入?我完全糊涂了,我不明白它在微软网站上说什么。这是我目前的代码: if(切换&&(GetKeyState(VK_LBUTTON)&0x100)) { 发送输入(UINT、MOUSEINPUT、WM_LBUTTONUP、NULL); 睡眠((rand()%1000/cps)); } 您需要填写包含所需鼠标详细信息的结构(数组),然后将该数组传递给SendInput()。这在以下章节中得到了非常清楚的解释: 参数 cinput 类型:UINT pinput数

如何使用SendInput()进行鼠标输入?我完全糊涂了,我不明白它在微软网站上说什么。这是我目前的代码:

if(切换&&(GetKeyState(VK_LBUTTON)&0x100))
{
发送输入(UINT、MOUSEINPUT、WM_LBUTTONUP、NULL);
睡眠((rand()%1000/cps));
}
您需要填写包含所需鼠标详细信息的结构(数组),然后将该数组传递给
SendInput()
。这在以下章节中得到了非常清楚的解释:

参数

cinput

类型:
UINT

pinput
数组中的结构数

pinput

类型:
LPINPUT

输入
结构的数组。每个结构表示要插入键盘或鼠标输入流的事件

cbSize

类型:
int

输入
结构的大小,以字节为单位。如果
cbSize
不是
输入结构的大小,则函数失败

另外,对
GetKeyState()
的调用是错误的,因为它永远不会返回第9位设置为1的
SHORT
值。根据,只有低位(第1位)或高位(第16位)将被设置为1:

返回值指定指定虚拟密钥的状态,如下所示:

  • 如果高阶位为1,则按键向下;否则,它就完了
  • 如果低阶位为1,则切换键。如果钥匙(如CAPS LOCK钥匙)处于启用状态,则会切换该钥匙。如果低阶位为0,则钥匙关闭且未切换。切换键时,键盘上的切换键指示灯(如果有)将点亮,未切换键时,指示灯将熄灭

这样,如果您的目标是检查鼠标左键当前是否被按下,则需要使用<代码>和0x8000 < /代码>(或<代码> < 0代码>代码>而不是<代码>和0x100(更优选地,考虑使用<代码> GATASYNCKESTATE())<代码> >。看

请尝试以下方法:

if(切换&(GetKeyState(VK_LBUTTON)<0/*&0x8000*/)
{
输入={};
input.type=输入\鼠标;
input.mi.dwFlags=MOUSEEVENTF_LEFTUP;
SendInput(1,&input,sizeof(input));
睡眠((rand()%1000/cps));
}

我不明白sendinput中的参数是什么。