#c #windows #windows-11
Вопрос:
У меня есть следующий код, и хотя он работает, когда 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, amp;input, sizeof(INPUT));
input.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
x = SendInput(1, amp;input, sizeof(INPUT));
return 0;
}
Комментарии:
1. Попробуйте
INPUT input = { 0 };
инициализировать.2. @BarmakShemirani нет, тоже не сработало. Мне интересно, изменился ли Windows API в W11 или нет?
3.
VK_VOLUME_UP/DOWN
Работает ли это? У меня нет Windows 11, может быть, она просто не настроена для работы с каким-то приложением.4. @BarmakShemirani да, это единственные работающие. NEXT_TRACK или PREVIOUS_TRACK тоже не работают. Ну, я запускаю spotify, и когда я нажимаю Fn F4, что является настоящей клавишей паузы в мультимедиа, музыка на самом деле приостанавливается. Поэтому я не знаю, соответствует ли это приложению или нет, но мне так не кажется.