Я пытаюсь обмануть контроллер PS3 и отправить аналоговый ввод направленного ввода в определенную программу, но я не могу понять, как работает структура INPUT.hi. Я могу послать нажатия клавиш более сC++ отправка джойстика направленный вход в программу
INPUT keys;
keys.type = INPUT_KEYBOARD;
keys.ki.dwFlags = KEYEVENTF_SCANCODE;
keys.ki.wScan = 0x11;//hex for 'w' key
SendInput(1, &keys, sizeof(INPUT));
Sleep(60);//delay to ensure game doesnt drop keypress
keys.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
SendInput(1, &keys, sizeof(INPUT));
и я считаю, что отправка через команды джойстика будет работать так же, что-то вроде
INPUT analogSticks;
analogSticks.type = INPUT_HARDWARE;
analogSticks.hi.uMsg = WM_INPUT;
analogSticks.hi.wParamL = //what are the values for these?
analogSticks.hi.wParamH = //what are the values for these?
SendInput(1, &analogSticks, sizeof(INPUT));
но пробуя различные значения для wParamL и wParamH не делает ничего. Я делаю что-то не так, и/или есть способ, которым я могу вводить определенные углы, скажем, если бы я был поставлен в 45, я мог бы генерировать сигнал джойстика, который соответствовал бы этому углу, как я могу делать с нажатиями клавиш?
Значения 'wParamL' и' wParamH' объединяются для формирования 'wParam' для указанного' uMsg'. К сожалению, для 'WM_INPUT' это либо' RIM_INPUT', либо 'RIM_INPUTSINK', с фактическими входными данными, отправленными в' lParam'. У меня такое чувство, что либо: a) 'WM_INPUT' не является правильным сообщением для' SendInput() ', или b) хуже, что вы не сможете подделать контроллер PS3 с помощью' SendInput() '. К сожалению, я не знаю точно; Я только основываю это на MSDN, и у меня нет опыта здесь, извините. Удачи. – andlabs