2009-04-09 2 views
0

スペースバーを押したときに日付/時刻を記録するアプリケーションがある 残念ながら、さまざまな理由から残念ながら、ウィンドウには常にフォーカスがあるわけではありません。ウイルスチェッカーのポップアップ、iTunesのアップデート、WindowsのアップデートなどポーリングジョイスティックC#

だから私はクールなアイデアは、ジョイスティックのボタンを使用することですどのようなウィンドウに関係なく、私はいつもボタンのプレスイベントとレコードを検出することができます押された日時。

私はいくつかのゲームチュートリアルを見ていましたが、ゲームではコンピュータが遅くて画面が頻繁に更新されないと思われるため、ジョイスティックポーリングを画面の更新イベントに関連付けているようです。とにかくジョイスティックのボタンを押しても差は出ません。しょっちゅうジョイスティックをポーリングします本当に私のニーズに合わせていないので、私はスレッドを実行しているで探しています

私の質問は

  1. ているが、背景には最適なソリューションをスレッドです
  2. ジョイスティックをポーリングする頻度はどれくらいですか?
  3. ポーリング頻度の決定にどのタイマーを使用する必要がありますか?

回答はキーボードと少なくとも同等であることを希望します。また、トリガーが押されていると自動リピートしないようにする必要があります。

任意のサンプル・コード(C#が)

アレックス

+0

基本的には、キーロガーアプリケーションの作成方法を教えてください。真剣に、このアプリの使用は何ですか? –

+0

ジョイスティックをキーロッグすると、どのような用途になりますか?私はタイミングイベントです。ボタンを押すと時刻が記録されます。後で私は光学センサーにボタンを変える、あなたはレーストラックの周りを回っているスロットカーを知っている – bumperbox

答えて

1

感謝を感謝あなたの最善の策は、フォーム上のTimerオブジェクトを作成すること、およびTickイベントにジョイスティックチェックを結ぶでしょう。

私はまた、このような単純なものを100msごとに(10回/秒)実行すると、CPU使用率にはほとんど影響しないことも発見しました。

2

キーボードイベントをキャプチャできないという理由だけでジョイスティックをポーリングする場合は、戦略をやり直す必要があると思います。

フォームにフォーカスがない場合でも、キーボードの状態を確認できる方法があります。

  1. SetWindowsHookEx API呼び出しを使用してC#で実行できるシステム全体のキーボードフックを設定できます。

これは管理されていないコードとWindows APIで少し掘り下げていますが、ジョイスティックをポーリングするよりも優れたアイデアだと思います。スペースバーを押す。

CでキーボードフックをGoogleで少し検索してください。それは多くの人々が信じるよりも簡単です。

これを行うにはタイマーオブジェクトを使用することはまったく良い考えではないと思います。あなたは鍵の押下でそれをする必要があると言いました。

1

AHK (Auto HotKey)のようなものを使用してください。これはEXEにコンパイルできる簡単な言語で、キーボードとマウスを自動化するために設計されています。ジョイスティックでどれくらいうまく動作するかわかりませんが、彼らはWiiリモコンのためのいくつかのものを書くことができた可能性があります。

また、IRCチャンネルとフォーラムには、必要に応じて助けてくれる人が常にいます。