Вопрос

у меня есть приложение, которое записывает дату / время при нажатии клавиши пробела к сожалению, окно не всегда имеет фокус по разным причинам.например, всплывающее окно проверки на вирусы, обновление itunes, центр обновления Windows и т. Д

итак, что, на мой взгляд, было бы классной идеей, так это использовать кнопку джойстика, тогда, независимо от того, какое окно находится в фокусе, я всегда могу определить событие нажатия кнопки и записать дату / время, когда оно было нажато.

теперь я просмотрел несколько руководств по игре, но в них, похоже, опрос джойстика привязан к событию обновления экрана, потому что в игре, я думаю, если компьютер работает медленно и экран обновляется нечасто, нажатие кнопки джойстика все равно ничего не изменит.

Это на самом деле не соответствует моим потребностям, поэтому я рассматриваю возможность запуска потока, который будет время от времени опрашивать джойстик

Мои вопросы таковы

  1. является ли фоновый поток лучшим решением
  2. как часто я должен опрашивать джойстик
  3. какой тип таймера я должен использовать для определения частоты опроса.

Я бы хотел, чтобы ответы были, по крайней мере, эквивалентны клавиатуре.также необходимо убедиться, что он не повторяется автоматически, если триггер удерживается нажатым.

приветствуется любой пример кода (C #)

Спасибо

алекс

Это было полезно?

Решение

Лучше всего было бы создать объект Timer в вашей форме и привязать проверку джойстиком к событию Tick .

Я также обнаружил, что запуск подобных простых вещей каждые 100 мс (10 раз в секунду) оказывает незначительное влияние на загрузку процессора.

Другие советы

Если вы хотите перейти к опросу джойстика только потому, что вы не в состоянии зафиксировать событие клавиатуры, я думаю, вам нужно пересмотреть свою стратегию.

Даже если ваша форма не имеет фокуса, есть способы убедиться, что вы знаете о состоянии клавиатуры.

  1. Вы могли бы настроить общесистемный хук клавиатуры, который можно выполнить на C #, используя вызов SetWindowsHookEx API.

Это немного углубляется в неуправляемый код и Windows API, но я думаю, что это идея получше, чем опрос джойстика, потому что вам не нужно будет добавлять джойстик на свой компьютер только потому, что вам нужно записать дату и время нажатием пробела.

Выполните небольшой поиск в Google по клавиатурным хукерам в C #.Это проще, чем многие люди думают.

Я не думаю, что использование объекта timer для этого вообще хорошая идея.Потому что, по-моему, ты сказал, что тебе нужно сделать это одним нажатием клавиши.

Используйте что-то вроде AHK (Автоматическая горячая клавиша) это простой язык, который может быть скомпилирован в EXE и предназначен для автоматизации клавиатуры и мыши, я не уверен на 100%, насколько хорошо он работает с джойстиком, но я уверен, что, возможно, им удалось написать кое-что для пультов wii.

Кроме того, на IRC-канале и Форумах всегда есть люди, готовые помочь, если потребуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top