Сценарий: Я написал базовую управляющую программу для своего квадрокоптера. По сути, я использую ноутбук с подключенным к нему геймпадом для отправки команд на мой квадрокоптер, оба подключены друг к другу по радио. Эти настройки работают на удивление хорошо, но:
Вопрос: Как мое приложение Win32, которое запускается на моем ноутбуке, может получать изменения состояния геймпада, даже если окно не в фокусе? Я знаю, что некоторые программы, такие как AutoHotKey и AutoIt, предоставляют именно это, но я не смог найти никакой документации ни в официальной документации XInput, ни в Интернете.
Проблема в том, что я иногда также использую программное обеспечение ArduPilot Mission Planner одновременно на одном ноутбуке. Поэтому каждый раз, когда я хочу просмотреть некоторые данные телеметрии в Mission Planer, окно приложения, обрабатывающее содержимое геймпада, не в фокусе и перестает получать изменения состояния геймпада, что очень раздражает, и, честно говоря, также опасно потому что у меня всегда должен быть работающий радиоконтроль.
Итак, есть ли способ «привязать» геймпад XInput к определенному дескриптору окна? Приложение (Win32) написано на C ++ с Visual Studio.
РЕДАКТИРОВАТЬ: Я использую нативный API XInput, поэтому я использую XInputGetState (). Мой цикл сообщений предназначен для опроса XInputGetState () каждый раз, когда нет сообщения для Translate- / DispatchMessage (), а WinMessages опрашиваются с неблокирующим PeekMessage ().
Задача ещё не решена.
Других решений пока нет …