джойстик опроса C#
-
06-09-2019 - |
Вопрос
у меня есть приложение, которое записывает дату / время при нажатии клавиши пробела к сожалению, окно не всегда имеет фокус по разным причинам.например, всплывающее окно проверки на вирусы, обновление itunes, центр обновления Windows и т. Д
итак, что, на мой взгляд, было бы классной идеей, так это использовать кнопку джойстика, тогда, независимо от того, какое окно находится в фокусе, я всегда могу определить событие нажатия кнопки и записать дату / время, когда оно было нажато.
теперь я просмотрел несколько руководств по игре, но в них, похоже, опрос джойстика привязан к событию обновления экрана, потому что в игре, я думаю, если компьютер работает медленно и экран обновляется нечасто, нажатие кнопки джойстика все равно ничего не изменит.
Это на самом деле не соответствует моим потребностям, поэтому я рассматриваю возможность запуска потока, который будет время от времени опрашивать джойстик
Мои вопросы таковы
- является ли фоновый поток лучшим решением
- как часто я должен опрашивать джойстик
- какой тип таймера я должен использовать для определения частоты опроса.
Я бы хотел, чтобы ответы были, по крайней мере, эквивалентны клавиатуре.также необходимо убедиться, что он не повторяется автоматически, если триггер удерживается нажатым.
приветствуется любой пример кода (C #)
Спасибо
алекс
Решение
Лучше всего было бы создать объект Timer в вашей форме и привязать проверку джойстиком к событию Tick .
Я также обнаружил, что запуск подобных простых вещей каждые 100 мс (10 раз в секунду) оказывает незначительное влияние на загрузку процессора.
Другие советы
Если вы хотите перейти к опросу джойстика только потому, что вы не в состоянии зафиксировать событие клавиатуры, я думаю, вам нужно пересмотреть свою стратегию.
Даже если ваша форма не имеет фокуса, есть способы убедиться, что вы знаете о состоянии клавиатуры.
- Вы могли бы настроить общесистемный хук клавиатуры, который можно выполнить на C #, используя вызов SetWindowsHookEx API.
Это немного углубляется в неуправляемый код и Windows API, но я думаю, что это идея получше, чем опрос джойстика, потому что вам не нужно будет добавлять джойстик на свой компьютер только потому, что вам нужно записать дату и время нажатием пробела.
Выполните небольшой поиск в Google по клавиатурным хукерам в C #.Это проще, чем многие люди думают.
Я не думаю, что использование объекта timer для этого вообще хорошая идея.Потому что, по-моему, ты сказал, что тебе нужно сделать это одним нажатием клавиши.
Используйте что-то вроде AHK (Автоматическая горячая клавиша) это простой язык, который может быть скомпилирован в EXE и предназначен для автоматизации клавиатуры и мыши, я не уверен на 100%, насколько хорошо он работает с джойстиком, но я уверен, что, возможно, им удалось написать кое-что для пультов wii.
Кроме того, на IRC-канале и Форумах всегда есть люди, готовые помочь, если потребуется.