0

我有以下代码,虽然它在arg = 2或时有效arg = 3,但在arg = 1. 我真的看不出我做错了什么。在我切换到 Windows 11 后,它开始无法正常工作。任何帮助都值得赞赏。

#include <Windows.h>

int main(int argc, char** argv)

{
    //int arg = argv[1][0] - 48;
    int arg = 1;

    KEYBDINPUT kbi;
    kbi.wScan = 0;
    kbi.dwFlags = 0; 
    kbi.time = 0;
    kbi.dwExtraInfo = (ULONG_PTR)GetMessageExtraInfo();

    switch (arg)
    {
    case 1:
        kbi.wVk = VK_MEDIA_PLAY_PAUSE; // PAUSE
        break;
    case 2:
        kbi.wVk = VK_VOLUME_UP; // VOLUP
        break;
    case 3:
        kbi.wVk = VK_VOLUME_DOWN; // VOLDOWN
        break;
    case 4:
        kbi.wVk = VK_MEDIA_NEXT_TRACK; // FORWARD
        break;
    case 5:
        kbi.wVk = VK_MEDIA_PREV_TRACK; // BACKWARD
        break;
    default:
        return 2;
    }

    INPUT input;
    input.type = INPUT_KEYBOARD;
    input.ki = kbi;

    input.ki.dwFlags = 0; // 0 for key press
    auto x = SendInput(1, &input, sizeof(INPUT));

    input.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
    x = SendInput(1, &input, sizeof(INPUT));

    return 0;
}
4

0 回答 0