我正在尝试使用SendInput,但我无法弄明白

时间:2017-05-02 22:40:20

标签: c++ windows winapi

#include <iostream>
#include <Windows.h>
#include <winable.h>

int main()
{
    INPUT input;
    int a;
    while (1) {
        while (GetAsyncKeyState(0x5A)) {
            input.type = INPUT_MOUSE;
            input.ki.wScan = MapVirtualKey(0x01, MAPVK_VK_TO_VSC);
            input.ki.time = 0;
            input.ki.dwExtraInfo = 0;
            input.ki.wVk = 0x01;
            input.ki.dwFlags = 0;

            SendInput(1, &input, sizeof(INPUT));
        }
    }
}

错误:

  

MAPVK_VK_TO_VSC未在此范围内声明

我重新输入它以查看我的IDE(代码块)是否在下拉菜单中弹出了任何小提示并且它没有显示任何内容,因此我认为它不存在。我认为这样做是因为我在某个网站上的一个示例程序中看到了它(不记得哪个,但它并不是真的有必要)。

我应该在wScan行添加什么?

1 个答案:

答案 0 :(得分:-1)

以下是使用发送输入发送鼠标的方法:

PS C:\WINDOWS\system32> Import-Module SQLPS
Set-Location : Cannot find drive. A drive with the name 'SQLSERVER' does not exist.
At C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\SQLPS\SqlPsPostScript.ps1:1 char:1
+ Set-Location SQLSERVER:
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (SQLSERVER:String) [Set-Location], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

你只需要enum sendInputs { MOUSE_DOWN, MOUSE_UP, NUM_INPUTS }; INPUT inputs[NUM_INPUTS]; //left down inputs[MOUSE_DOWN].type = INPUT_MOUSE; inputs[MOUSE_DOWN].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; //left up inputs[MOUSE_UP].type = INPUT_MOUSE; inputs[MOUSE_UP].mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(NUM_INPUTS, &inputs, sizeof(inputs)); 标题,除了iostream之外别无其他。