опросный джойстик C # - PullRequest
       11

опросный джойстик C #

0 голосов
/ 09 апреля 2009

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

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

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

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

Мои вопросы

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

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

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

спасибо

Alex

Ответы [ 3 ]

2 голосов
/ 09 апреля 2009

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

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

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

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

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

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

1 голос
/ 09 апреля 2009

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

Также на IRC-канале и форумах всегда есть люди, желающие помочь в случае необходимости.

1 голос
/ 09 апреля 2009

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

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

...