問題タブ [directinput]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
565 参照

windows - キーボード入力の非同期読み取りと DirectInput の使用の違いは何ですか?

DirectInput では、キーボード入力を検出するために多くの初期化関数やその他の機能が必要ですが、GetAsyncKeyState() 関数ではなく DirectInput を使用する利点は何ですか?

0 投票する
1 に答える
4343 参照

.net - 低レベルのマウスフックと DirectX

システム全体でいくつかのマウス クリックをフィルタリングする必要があるアプリケーションを構築しています。つまり、特別な場合にシステムがマウス ボタンのクリックを無視するようにする必要があります。

低レベルのマウスフックを使用SetWindowsHookExして、これらのクリックを除外します。アプリケーションを除いて、比較的うまく機能しWPFます。DirectXこれは、これらのアプリケーションが入力処理にとを使用しているからだと思いDirectInputます。これらのアプリケーションでは、ドライバから直接入力を取得するため、クリックを除外できません。

WPF/DirectXアプリケーションでクリックをフィルタリングする方法はありますか?

クリックをグローバルにフィルタリングすることは一般的には良い考えではありませんが、私のアプリケーションにとっては重要であり、ゲームや他のプログラムでフィルタリングされないようにします. ただし、WPFアプリケーションには通常GUIの があるため、それらのクリックもフィルタリングする必要があります。

アップデート

この問題は、フィルタリング ドライバを自作することで解決できると思いますが、ドライバを書いた経験がないので、他に解決策があれば教えてください。

API フック リソース

API フックに関する役立つリンクをいくつか見つけました。これを参考にしてください。

Windows APIの
フックAPI フックの解明
API フックの解明 パート 2
メモ帳からの Textout 呼び出しのハイジャック
madCodeHook
IAT 関数のフック

最終的解決

WPF は DirectInput を使用しませんが、入力処理に標準の Win32 メッセージを使用します (開発にスタイラスを使用し、WPF アプリがスタイラス対応であることを知らなかったので、すべての問題の原因であるスタイラスを除きます)。ただし、DirectInput を使用するアプリでクリックをフィルタリングするには、受け入れられた回答で説明されているように、API をフックする必要があります。

0 投票する
1 に答える
3258 参照

c# - C#DirectInput-ゲームパッドコントローラータイプの決定

DirectInput APIを使用して、アプリケーションでさまざまなゲームパッドコントローラーを使用しようとしています。私の知る限り、軸はデバイス間で異なってマッピングされています。

DeviceInformation.ProductName / InstanceNameを使用してコントローラーを区別し、異なる軸制御の割り当てを可能にする以外に、コントローラーのタイプを決定するための一般的な方法はありますか?

0 投票する
2 に答える
42610 参照

c# - DirectInputアプリケーションでのSendInputAPIを使用したキーボードのシミュレーション

カスタムゲームコントローラーアプリケーションのキーボードコマンドをシミュレートしようとしています。DirectInput環境でコマンドをシミュレートする必要があるため、通常のメソッドのほとんどは機能しません。フックを使用すると100%動作することはわかっていますが、もっと簡単な実装を見つけようとしています。

かなりの検索を行ったところ、仮想キーの代わりにスキャンコードでSendInput APIを使用することで機能するはずですが、キーが「固定」されているように動作するようです。KEYDOWNイベントとKEYUPイベントの両方を送信しましたが、DirectInput環境でメッセージを送信しようとすると、ゲームはキーが押されているかのように動作します。

たとえば、「W」キーの押下をシミュレートし、そのキーをファーストパーソンシューティングゲームで「前進」アクションにマッピングすると、ゲームに参加すると、以下の機能によってキャラクターが前進します。ただし、コマンドを1回発行するだけで、キャラクターが無期限に前進します。

これが、私が呼び出しているSendInput関数のコードスニペット(C#)です。

この方法が失われた原因なのか、それとも何か馬鹿げたものがあるのか​​、私にはわかりません。フックを使用する必要がない場合は、コードを過度に複雑にするのは嫌いですが、これは私にとっても新しい領域です。

誰もが与えることができるどんな助けも大いに感謝されます。

ありがとう!

0 投票する
1 に答える
1455 参照

c++ - C++のUSBジョイスティックを使用する

私のプロジェクトでは、PCに接続されたジョイスティックを管理するためにdirectinputを使用しており、それは機能しますが、IMHOdirectimputは完全に理解して管理するのはひどいです...

よりきれいなモードでC++のジョイスティックを管理するための他のライブラリ/メソッドはありますか?

0 投票する
1 に答える
991 参照

c# - 直接入力dllの問題

DirectInput を使用する C# でアプリを開発しています...私の開発 PC では、directx sdk がインストールされているため、すべて正常に動作します...しかし、directx クライアントのみがインストールされている別の PC では、アプリは機能しませんでした.. dllをフォルダーに追加しました:

  • Microsoft.DirectX.DirectInput.dll

プレイするために誰かを追加する必要がありますか???

前もって感謝します!エラーはこれです: 代替テキスト

WIn32 が有効なアプリケーションではありません (HRESULT からの例外: 0x800700C1)

これはここで起こります:

0 投票する
1 に答える
689 参照

windows - 2 つのマウス、Windows (DirectInput、DDK、Linux など) で 1 つのマウスのみをキャプチャ

2 台のマウスを PC に接続しましたが、1 台のマウスを通常のマウスとして機能させ、2 台目のマウスのみをキャプチャするようにしたいと考えています。

最初に DirectInput を試していました。InstanceName に単語 mouse が含まれる 2 つのデバイスが表示されました。しかし、DeviceType.Mouse を持つデバイスは 1 つだけであり、実際に動作するデバイスでした。私が取得していたとき、それは両方のマウスをブロックしていました。

次に、ドライバーを作成することにしました。WinDDK をダウンロードしました。マウス フィルター ドライバーのサンプルがあります。コンパイルできました。しかし、私はドライバー プログラマーではありません。理解するのは複雑ですが、PS/2 マウスに関連するコードが含まれています。私のマウスはすべてUSBです。

.INF ファイルと共にインストールする必要があります。動的にロードされることを好みます。

それが正しい方向であるかどうかはよくわかりません。私は趣味のロボット プロジェクトのためにそれを行います。PCがマウスからセンサーとして何らかの情報を取得することを望みます。似たようなプロジェクトやソリューションが存在するに違いないと思います。

私のテーブルにもLinux PCがあります。マウスをLinuxに接続して解析する方が良いかもしれません

sudo cat /dev/input/mouse1 のように見えます - いくつかのデータを提供しますが、クリックや動きからデバイスをブロックしません。

簡単な解決策がすでに存在することを願っています

乾杯マックス

0 投票する
2 に答える
1020 参照

c# - DirectInputを使用してC#でキーボードの状態を取得しますか?

特定のフォームでキーが押されたときにキーボードの状態を取得する必要があります。Windows フォームの標準の KeyUp/KeyDown イベントでは十分な速さではありません。DirectInput を試してみるように言われたのですが、ライブラリを操作した経験もスレッドの経験もないので、どうやって始めればよいかまったくわかりません。

DirectInput がキーボードの状態の変化を検出するたびにフォームの関数を呼び出すスレッドを設定するにはどうすればよいですか? 私はデバイスを初期化する方法を知っており、SetEventNotification はほとんど必要なものですが、使用方法がわかりません。

どんな助けでも大歓迎です!

0 投票する
2 に答える
1218 参照

c++ - Windows 上の C++: ウィンドウなしで DirectInput を使用しますか?

短縮版:

HWND/HINSTANCE にアクセスできない場合、DirectInput を初期化して使用するにはどうすればよいですか?

背景情報:

現在、プログラムのほとんどの部分で SFML を使用しており、特にウィンドウの作成に使用しています。魅力のように機能します。しかし、私は SFML の入力システムに完全に満足しておらず (たとえば、XBox 360 ゲームパッド用の XInput が必要です)、自分で書きたいと思っています。

XInput の部分は既に書きましたが、他のゲームパッド/ジョイスティック/... には DirectInput も必要です。SFML は Windows 関連のコードをユーザーから隠しているため (当然のことながら)、hwnd または hinstance にアクセスすることはできません。それなしで DirectInput を使用するにはどうすればよいですか? ウィンドウがアクティブなときだけでなく、常に入力をキャッチしているのではないでしょうか? (その後、ウィンドウの(非)アクティブ化イベントに基づいてフィルタリングできます。)

ありがとう、

ウォンコさん

0 投票する
1 に答える
1624 参照

c++ - DirectInput デバイスが XInput をサポートしているかどうかを調べる (mingw/gcc を使用)

DirectInput と XInput をラップする入力システムに取り組んでいます。現在、XInput デバイスは 2 回列挙されています。1 回は XInput として、もう 1 回は DirectInput として (両方をサポートしているため)。

特定の DirectInput デバイスが XInput もサポートしているかどうかを確認するにはどうすればよいですか? トピックに関するこの MSDN ページがありますが、mingw/gcc では利用できない wbemidl.h と wmsstd.h が必要です (何らかの理由で msvc を避けたい - おそらく習慣による)。

デバイス名/GUID をブラックリストに登録することは良い解決策ではないと思いますが、より良い解決策はありますか?

ありがとう。