Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在系统范围内按SendInput键_C++_Keypress_Sendinput - Fatal编程技术网

C++ 在系统范围内按SendInput键

C++ 在系统范围内按SendInput键,c++,keypress,sendinput,C++,Keypress,Sendinput,我正在尝试制作一个程序,每按一次鼠标左键,就会发送两次额外的按键。这一切都很好,除了当我在另一个程序中(在我的情况下,这是一个游戏),然后它确实感觉到鼠标左键被按下,但它不会为我按下另外两个虚拟键。 整个代码: #include <Windows.h> #include <iostream> int main () { INPUT ip; bool press = false; int i = 0; while ( true ) { if ( GetKeyStat

我正在尝试制作一个程序,每按一次鼠标左键,就会发送两次额外的按键。这一切都很好,除了当我在另一个程序中(在我的情况下,这是一个游戏),然后它确实感觉到鼠标左键被按下,但它不会为我按下另外两个虚拟键。 整个代码:

#include <Windows.h>
#include <iostream>
int main ()
{
INPUT ip;
bool press = false;
int i = 0;
while ( true )
{
    if ( GetKeyState( VK_LBUTTON) < 0 & !press )
    {
        std::cout << "press" << i++ << "\n";
        // PRESS F8
        ip.type = INPUT_KEYBOARD;
        ip.ki.wScan = 0x42; // hardware scan code for key
        ip.ki.time = 0;
        ip.ki.dwExtraInfo = 0;
        ip.ki.wVk = 0x77; // virtual-key code 

        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
        if (GetKeyState( VK_F8) < 0) { std::cout << "press f8 \n";}
        ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
        SendInput(1, &ip, sizeof(INPUT));

        ip.ki.dwFlags = 0; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
        ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
        SendInput(1, &ip, sizeof(INPUT));

        press = true;
    }
    if ( GetKeyState( VK_LBUTTON) >= 0 )
    {
        press = false;
    }
}
return(0);
}
#包括
#包括
int main()
{
输入ip;
bool-press=false;
int i=0;
while(true)
{
如果(GetKeyState(VK_LBUTTON)<0&!按)
{

我发现了如何使用扫描码来制作虚拟按键

// PRESS F8
        ip.type = INPUT_KEYBOARD;
        ip.ki.wScan = MapVirtualKey(VK_F8, 0); // hardware scan code for key
        ip.ki.time = 0;
        ip.ki.dwExtraInfo = 0;
        ip.ki.wVk = 0;//0x77; // virtual-key code 

        ip.ki.dwFlags = KEYEVENTF_SCANCODE; // 0 for key press
        SendInput(1, &ip, sizeof(INPUT));
        if (GetKeyState( VK_F8) < 0) { std::cout << "press f8 \n";}
        ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
        SendInput(1, &ip, sizeof(INPUT));
//按F8键
ip.type=输入\键盘;
ip.ki.wScan=MapVirtualKey(VK_F8,0);//键的硬件扫描代码
ip.ki.time=0;
ip.ki.dwExtraInfo=0;
ip.ki.wVk=0;//0x77;//虚拟密钥代码
ip.ki.dwFlags=KEYEVENTF\u SCANCODE;//0表示按键
SendInput(1,&ip,sizeof(INPUT));
if(GetKeyState(VK_F8)<0){std::cout