問題タブ [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.
c++ - DirectInput8 フックの問題
Directx/directinput の開発を始めたばかりで、オンラインで見つけたコード サンプルを使用していくつかのテストを実行しています。とにかく、dinput8 を使用して独自のカスタム入力をフォアウィンドウに送信するアプリケーションをフックしたいので、このベースを使用してそれを実行しています。
このコードの唯一の問題は、入力を送信しようとしたときに送信されないことです。私は助けを得て、これに対する解決策を絞り込みました。私は少し調べてみましたが、このソリューションを実装する方法についてこれ以上見つけることができず、困惑しています。親切な方で、この情報を使用してこのベースを修正する方法を教えていただけませんか? 私は非常に感謝しています、ありがとう。
c# - MonoGame で C# の DirectInput を使用しますか?
以前のゲーム開発言語から移行しようとしていますが、古い言語では当然のことと思っていた問題に遭遇しました。C# を主要なゲーム開発言語として使用することに慣れているので、MonoGame を使用して C# で DirectInput をサポートしようとしています。
問題は、DirectInput コントローラーとダンスパッドをサポートする方法がわからないことです。それは私の快適ゾーンの外です。Coding Groups と Google で答えを探すのに時間がかかりすぎて、答えが見つからず、頭痛の種になりました。
C# x MonoGame で DirectInput コントローラー/ダンスパッドをサポートすることは可能ですか? これについて何か助けていただければ幸いです。
windows - RawInput RAWKEYBOARD 構造体を DirectInput DIK_ 定数に変換するにはどうすればよいですか?
現在 DirectInput を使用しているアプリケーションを、代わりに RawInput を使用するように変換しています。(DirectInput は、ほとんど非推奨の API です。)
残念ながら、RawInput は DirectInput の後継として推奨されていますが、DirectInput とまったく同じ方法でキーボード データを提供しているようには見えません。
DirectInput はDIK_*
定数 ( DIK_A
、DIK_RETURN
など) を使用して、キーボード上の特定の物理キーを定義します。これらのキーは、キーボード ハードウェア全体で一貫していますが、キーボード レイアウトによって変わることはありません。(たとえばDIK_Q
、標準の US-English QWERTY キーボードの Q キーがある物理的な位置にあるキーを指します。) 私の場合、これは望ましい動作です。
RawInput のRAWKEYBOARD
構造は、 aMakeCode
と a の両方を提供しますVKey
。VKey
キーボードの配列によって変わるので使えません。
しかし、は定数MakeCode
と 1:1 で対応していません。DIK_*
特に、左右の ctrl キーと alt キー、またはほとんどのテンキー キーを他のキーと区別しません。
私の質問は次のとおりです。RAWKEYBOARD
構造体の内容を使用して、同等のDIK_*
定数を計算することは可能ですか? そして、それがそれを理解することの一部であると仮定すると、定数と同じように、キーボードハードウェア全体で定数であるMakeCode
ことを信頼できますか?MakeCode
DIK_*
c++ - マウスが DirectInput ゲームに入力を送信しないようにするにはどうすればよいですか?
この質問はもともと、C++ で SetWindowsHookEx を使用して多くの調査を行った結果、マウス イベントをトラップする方法に関するものでした。問題は、Windows では機能するのですが、アプリケーションでは機能しますが、ゲームでは機能しません。一部のゲームでマウス フックが機能しない理由を理解できる人はいますか? 私が試したすべてのゲームがRaw Inputを使用する可能性はありますか? :S (Ibb&Obb、Fallout 4、Metro Last Light などのタイトルを試しました)
基本的には、マウスフックを使用して、実行中のすべてのアプリケーションでグローバルにトラップする方法を教えてください。
ヘルパーに感謝します。
編集:私がプレイするほとんどのゲームがDirectInputを使用していることがわかりました。より良い質問だと思います: DirectInput でマウス メッセージをインターセプトし、ゲームによって登録されないようにするにはどうすればよいですか? マウスをドラッグできるようにしたいのですが、ゲームには影響しません。
c# - error 保護されたメモリを読み書きしようとしました。どこを見ればよいですか?
dx 2006 マネージ参照を使用して、.net 2.0 のアンマネージ コードで次のエラーが発生します (マネージ コード フォルダを持つ新しいものは見つかりません)。
タイプ 'System.AccessViolationException' の未処理の例外が Microsoft.DirectX.DirectInput.dll で発生しました
追加情報: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。
これはサンプルコードからほぼ1対1であるため、破損した可能性のあるメモリを特定する方法を考えていました。確かにここに失敗するコードがあります。
他のコードが関連するかどうかはわかりませんが、必要に応じて投稿してください。エフェクト オブジェクト コンストラクターを変更してエフェクトを使用しないようにすると (eo = new EffectObject(ei.EffectGuid, joystick);)、エラーは発生しませんが、SetParameters を介してエフェクトを追加するとエラーがスローされます。このエラーについて私が読んだことから、難しい部分はエラーの原因となっている DLL を追跡することですが、この場合、それが直接入力であることはわかっています。ここから、メモリ リークや破損を特定するにはどうすればよいでしょうか。
この場合、コールスタックが役立つかどうかはわかりませんが、次のとおりです。
c++ - 管理者として実行されている DirectX ゲームにマウス クリックを送信する
シミュレートされた入力をゲームに送信する必要があるゲーム関連のプログラムを構築しています (これは画面の一番上のウィンドウで、フルスクリーン モードで実行されます)。苦労の末、ようやくマウスの動き (カーソルのドラッグ) とキーボード入力が機能するようになりましたが、何らかの理由で、ゲームがシミュレートされたマウス クリックに反応しません。
私は次のことを試しました:
私が直面した最初のジレンマは、一般的にメッセージを送信することでしたが、この問題はゲーム プロセスの権限 > アプリケーションの権限を送信することが原因であることに気付きました。この後、キープレスが特定のゲーム ウィンドウ/画面にしか登録されないという別の問題に遭遇しましたが、いくつかの検索の後、スキャンコードを使用してこれを克服することができました。例えば:
以下のように INPUT を使用してマウスの移動を行うこともできました。
ここでの大きな問題は、ゲームがシミュレートされたマウス クリックの登録を拒否することです。できれば、フックに飛び込むことなくマウス入力を送信する方法が欲しいです。(ゲームには複数のクライアント側アンチチート メカニズムがあるため、あらゆる種類の外部プロセス フックまたは DLL インジェクションによって保護がトリガーされると思い込んでいます)。入力がカーネル レベルで行われるように、シミュレートされたハードウェア マウス。好ましいオプションではありませんが、必要に応じてsobeit
. (そして、必要に応じて、誰かがこれに役立つ情報を提供できますか?私はドライバーの作成をいじったことはありませんが、私が推測するすべてのことについて初めてです。)
TL;DR : ハードウェア以外の入力を無視しているように見えるゲームで、シミュレートされたマウス クリックを登録するにはどうすればよいですか? KEYEVENTF_SCANCODE
(つまり、キーボード入力をシミュレートするときに使用するのと同様に、マウス クリックが正当であるとゲームに認識させるにはどうすればよいでしょうか?)