問題タブ [wh-keyboard-ll]
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# - SetWindowsHookExWH_KEYBOARD_LLがイベントを取得していません
SetWindowsHookEx()を使用してキーボードフックを作成しています。作成は成功したようですが、登録されているプロシージャが呼び出されることはありません。私が間違っていることはありますか?
=
=
=
visual-c++ - 送信方法、キーボード メッセージ ミラーを edit1 コントロールに送信
gMsgHook = SetWindowsHookEx(WH_KEYBOARD_LL, GetMsgHookProc, ghInstDll, 0);
.......
c++ - WH_KEYBOARDとWH_KEYBOARD_LLの違いは?
2つの動作の違いは何ですか?についてWH_KEYBOARD_LL
は、低レベルのキーボード入力イベントを監視するフックプロシージャをインストールすることを読みました。低レベルのキーボードイベントとはどういう意味ですか?
winapi - Win32 グローバル キー フック / SetWindowsHook / GetAsyncKeyState が機能しないことがある
仮想キーのフックについて質問があります。アプリケーションのグローバル ショートカットを定義したいと思います (RegisterHotkey では十分ではありません)。ただし、ショートカットを実装する 2 つの方法を試しました。
WH_KEYBOARD_LL フックを登録しました。すべてのフック コードを DLL に入れると、正常に動作します。ただし: 特別なアプリケーション ( CCleaner など) にフォーカスがある場合、フックは機能しなくなります。私のアプリケーションには何も届きません。32ビットと64ビットのDLLで試してみました。
フックを使用する代わりに GetAsyncKeyState を頻繁に呼び出すことで問題を解決しようとしました。また、このバージョンは、特別なアプリケーション (再び CCleaner ) が注目されるまではうまく機能します。この時点で、キーが押された場合でも、GetAsyncKeyState はすべてのキーに対して 0 を返します。
この問題を修正する方法を知っている人はいますか?
ところで、私のフックを無効にするアプリケーションは Delphi で書かれているようです。これらの「悪意のある」アプリケーションはさらに、どの入力にも反応しません。つまり、これらのアプリケーションのウィンドウで ShowWindow を呼び出しても効果がありません。SetWindowLong などについても同様です。
ご回答ありがとうございます。
winapi - WH_KEYBOARD_LL フックは、自身のプロセスで入力をキャプチャしません
低レベルのキーボード フック (WH_KEYBOARD_LL) を使用して、Alt-Tab などの特定の入力を無効にしています。メッセージ ポンプを使用してスレッドにフックを作成し、通知を適切に処理できるようにします。
フックのコールバック関数は、フックを作成したウィンドウ (つまり、メイン ウィンドウ) にフォーカスしていないときはいつでもキーボード イベントを処理できますが、そのウィンドウをアクティブにするとすぐに、フックを非アクティブにするまでフックにイベントが表示されません。ウィンドウを再度開き、代わりに入力がウィンドウの WindowProc に伝達されます。
ここで何が起こっているのか、誰にも手がかりがありますか?
更新:したがって、この動作は、同じプロセスで生の入力も登録することによって引き起こされることがわかりました。どうやら、生の入力を使用すると、プロセスのウィンドウがフォーカスされるたびに、低レベルのキーボード フックが無効になります。これを回避する理由と方法を知っている人はいますか?
c++ - SetWindowsHookEx MS-Windows API 関数を使用した低レベルのキーボード フック アプリケーション
私は現在、フック用のアプリケーションを開発中です。私はそれを達成するために C++ を使用しており、MS-Windows フック ライブラリの関数を使用しています。私のアプリケーションは、.DLL ファイルを介してグローバル フックを作成し、複数のキーストロークをすべてのプロセス (メイン ウィンドウ) に送信できます。SetWindowsHookEx MS-Windows API 関数を使用しており、「フック タイプ」は WH_KEYBOARD_LL です。期待どおりに動作しますが、場合によっては (たとえば、一部のゲーム)、「偽の」キーストロークを送信しているにもかかわらず、ゲームがそのキーストロークを「理解」していないようです。似たような問題や提案はありますか? どうもありがとう。
.net - SetWindowsHookEx / WH_KEYBOARD_LL を解釈する正しいロジック
メッセージをSetWindowsHookEx
withからWH_KEYBOARD_LL
押されたキーの有用な表現に変換する正しい方法は何ですか?
これには、ローカル キーボードのマッピングを理解することが必要になる可能性が高いことは承知しています。(注:簡単にするために、キーが離されたときではなく、キーが押されたときのみを考慮しています)
大まかに言えば、次の 3 つのシナリオがあるようです。
- 特殊キーが押された (Ctrl/Escape/Shift/Alt)
- 標準キーが押された (
A-Z
、0-9
など...a
とA
両方とも として読み取られることに注意してくださいA
) - テンキーやF1-F12
特殊キーは必要に応じて処理でき、便利なルックアップがいくつかあります。System.Windows.Forms.Keys
しかし、(英国英語キーボードで)感嘆符を入力すると、次のように検出されますShift-Down1Shift up
キーボードの「変換」レイヤーを通過した後にコードを取得するには低すぎるレベルでフックしているため (私は信じています)、コードを正しく解釈する方法に興味があります。
なぜ私がこれをしているのかについて。これは、私が作成したメディア プレーヤーに便利なショートカットを提供する方法として始まりました。これは、ゲーム内であっても、どこでも機能します (一部のゲームでは、キー ストロークをインターセプトし、OS への伝播を防止するようです)。アプリを使用している限り(おそらくユーザーのみ)、実際に必要なものは十分にありますが、必要に応じてこれをさらに進める方法について好奇心をそそられます.