我有以下代码,虽然它在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;
}