Pergunta

Eu tenho um aplicativo que registra a data / hora quando a barra de espaço é pressionada Infelizmente, a janela nem sempre tem foco, por várias razões. eg vírus pop-up verificador, atualização itunes, windows update, etc

Então o que eu embora seria uma idéia legal é usar um botão de joystick, em seguida, independentemente de qual janela tem foco, eu sempre pode detectar o evento pressione o botão e gravar a data / hora em que foi pressionado.

Agora eu tinha um olhar para alguns tutoriais jogo, mas eles parecem ter o polling joystick amarrado em caso de actualização do ecrã, porque em um jogo que eu acho que se o computador está lento e a tela não atualizar frequentemente, tendo o botão joystick pressionado vai fazer nenhuma diferença de qualquer maneira.

Isso realmente não atender a minha necessidade, assim que eu estou olhando para executar um segmento que vai consultar o joystick cada tantas vezes

As minhas perguntas são

  1. é um fundo passe a melhor solução
  2. Quantas vezes tenho que consultar o joystick
  3. que tipo de temporizador que eu deveria usar para determinar a frequência de consulta.

Eu gostaria que as respostas para ser pelo menos equivalente a um teclado. também precisa ter certeza de que ele não repetição automática se o gatilho é premido.

qualquer código de amostra (C #) apreciado

graças

alex

Foi útil?

Solução

Sua melhor aposta seria a de criar um objeto Timer em sua forma, e amarrar o cheque joystick para o evento Tick.

Eu também descobri que a execução de coisas simples como isso a cada 100ms (10 vezes por segundo) tem um efeito negligenciável sobre o uso da CPU.

Outras dicas

Se você quer ir para a votação do joystick só porque você não é capaz de capturar o evento de teclado, eu acho que você precisa re-work sua estratégia.

Mesmo se o formulário não tem o foco existem maneiras que você pode ter certeza que você sabe do estado do teclado.

  1. Você pode configurar uma grande gancho de teclado sistema que pode ser feito em C # usando a chamada SetWindowsHookEx API.

Esta é aprofundar um pouco no código não gerenciado e Windows API, mas eu acho que é uma idéia melhor do que polling um joystick porque você não vai precisar adicionar um joystick para o seu computador, apenas porque você precisa para capturar datetime com o pressionar de a barra de espaço.

Faça uma pequena pesquisa no google para ganchos de teclado em C #. É mais fácil do que muitas pessoas acreditam.

Eu não acho que usando um objeto timer para fazer isso é uma boa idéia. Porque eu acredito que você disse que você precisa fazê-lo com o pressionar de uma tecla.

Use algo como AHK (Auto Tecla de Atalho) é uma linguagem simples que pode ser compilado para um EXE e é projetado para automatizar o teclado eo mouse, eu não estou 100% certo como ele funciona bem com um joystick, mas eu tenho certeza que é possível que conseguiu escrever algumas coisas para os wii remotes.

Além disso, o Canal e fóruns IRC sempre tem pessoas dispostas a ajudar se necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top