問題タブ [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.

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

c# - SetWindowsHookExWH_KEYBOARD_LLがイベントを取得していません

SetWindowsHookEx()を使用してキーボードフックを作成しています。作成は成功したようですが、登録されているプロシージャが呼び出されることはありません。私が間違っていることはありますか?

=

=

=

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

visual-c++ - 送信方法、キーボード メッセージ ミラーを edit1 コントロールに送信

gMsgHook = SetWindowsHookEx(WH_KEYBOARD_LL, GetMsgHookProc, ghInstDll, 0);

.......

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

c++ - WH_KEYBOARDとWH_KEYBOARD_LLの違いは?

2つの動作の違いは何ですか?についてWH_KEYBOARD_LLは、低レベルのキーボード入力イベントを監視するフックプロシージャをインストールすることを読みました。低レベルのキーボードイベントとはどういう意味ですか?

0 投票する
0 に答える
923 参照

winapi - Win32 グローバル キー フック / SetWindowsHook / GetAsyncKeyState が機能しないことがある

仮想キーのフックについて質問があります。アプリケーションのグローバル ショートカットを定義したいと思います (RegisterHotkey では十分ではありません)。ただし、ショートカットを実装する 2 つの方法を試しました。

  1. WH_KEYBOARD_LL フックを登録しました。すべてのフック コードを DLL に入れると、正常に動作します。ただし: 特別なアプリケーション ( CCleaner など) にフォーカスがある場合、フックは機能しなくなります。私のアプリケーションには何も届きません。32ビットと64ビットのDLLで試してみました。

  2. フックを使用する代わりに GetAsyncKeyState を頻繁に呼び出すことで問題を解決しようとしました。また、このバージョンは、特別なアプリケーション (再び CCleaner ) が注目されるまではうまく機能します。この時点で、キーが押された場合でも、GetAsyncKeyState はすべてのキーに対して 0 を返します。

この問題を修正する方法を知っている人はいますか?

ところで、私のフックを無効にするアプリケーションは Delphi で書かれているようです。これらの「悪意のある」アプリケーションはさらに、どの入力にも反応しません。つまり、これらのアプリケーションのウィンドウで ShowWindow を呼び出しても効果がありません。SetWindowLong などについても同様です。

ご回答ありがとうございます。

0 投票する
0 に答える
506 参照

winapi - WH_KEYBOARD_LL フックは、自身のプロセスで入力をキャプチャしません

低レベルのキーボード フック (WH_KEYBOARD_LL) を使用して、Alt-Tab などの特定の入力を無効にしています。メッセージ ポンプを使用してスレッドにフックを作成し、通知を適切に処理できるようにします。

フックのコールバック関数は、フックを作成したウィンドウ (つまり、メイン ウィンドウ) にフォーカスしていないときはいつでもキーボード イベントを処理できますが、そのウィンドウをアクティブにするとすぐに、フックを非アクティブにするまでフックにイベントが表示されません。ウィンドウを再度開き、代わりに入力がウィンドウの WindowProc に伝達されます。

ここで何が起こっているのか、誰にも手がかりがありますか?

更新:したがって、この動作は、同じプロセスで生の入力も登録することによって引き起こされることがわかりました。どうやら、生の入力を使用すると、プロセスのウィンドウがフォーカスされるたびに、低レベルのキーボード フックが無効になります。これを回避する理由と方法を知っている人はいますか?

0 投票する
0 に答える
551 参照

c++ - SetWindowsHookEx MS-Windows API 関数を使用した低レベルのキーボード フック アプリケーション

私は現在、フック用のアプリケーションを開発中です。私はそれを達成するために C++ を使用しており、MS-Windows フック ライブラリの関数を使用しています。私のアプリケーションは、.DLL ファイルを介してグローバル フックを作成し、複数のキーストロークをすべてのプロセス (メイン ウィンドウ) に送信できます。SetWindowsHookEx MS-Windows API 関数を使用しており、「フック タイプ」は WH_KEYBOARD_LL です。期待どおりに動作しますが、場合によっては (たとえば、一部のゲーム)、「偽の」キーストロークを送信しているにもかかわらず、ゲームがそのキーストロークを「理解」していないようです。似たような問題や提案はありますか? どうもありがとう。

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

.net - SetWindowsHookEx / WH_KEYBOARD_LL を解釈する正しいロジック

メッセージをSetWindowsHookExwithからWH_KEYBOARD_LL押されたキーの有用な表現に変換する正しい方法は何ですか?

これには、ローカル キーボードのマッピングを理解することが必要になる可能性が高いことは承知しています。(注:簡単にするために、キーが離されたときではなく、キーが押されたときのみを考慮しています)

大まかに言えば、次の 3 つのシナリオがあるようです。

  • 特殊キーが押された (Ctrl/Escape/Shift/Alt)
  • 標準キーが押された ( A-Z0-9など...aA両方とも として読み取られることに注意してくださいA)
  • テンキーやF1-F12

特殊キーは必要に応じて処理でき、便利なルックアップがいくつかあります。System.Windows.Forms.Keys

しかし、(英国英語キーボードで)感嘆符を入力すると、次のように検出されますShift-Down1Shift up

キーボードの「変換」レイヤーを通過した後にコードを取得するには低すぎるレベルでフックしているため (私は信じています)、コードを正しく解釈する方法に興味があります。

なぜ私がこれをしているのかについて。これは、私が作成したメディア プレーヤーに便利なショートカットを提供する方法として始まりました。これは、ゲーム内であっても、どこでも機能します (一部のゲームでは、キー ストロークをインターセプトし、OS への伝播を防止するようです)。アプリを使用している限り(おそらくユーザーのみ)、実際に必要なものは十分にありますが、必要に応じてこれをさらに進める方法について好奇心をそそられます.