問題タブ [keyhook]

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 投票する
3 に答える
2295 参照

c# - 低レベルのキーフック

特定のホットキーを検出するために、C#の別のスレッドで低レベルのキーフックを実行したいと思います。どうすればいいですか?

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

c# - C# でシステム全体に HotKey を設定する方法

AutoIt v3 にはHotKeySetという関数があります。押されたときにユーザー関数を呼び出すホットキーを設定します。これはシステム全体のホットキーです。つまり、ホットキーが設定されている場合、そのキーは他の目的には使用できません。

基本的に、キャッチしたい、または、 などEscの他のキーをユーザーが押すと、アプリケーションの外であっても、それを知らせる必要があります。$`

たとえば、ループ内で HotKeySet({ESC}) を実行すると、プログラムはそのキーが押されるのを待ちます。

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

c# - C#キーフックの質問

次のコードをhttp://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspxからコピーしました。

正常に動作しますが、少し変更すると次のようになります。

CallNextHookEx(...)が返される直前でも、元のキーはメモ帳に表示されたままです。元。「a」を押すと、メモ帳の文字は「b」になると思いますが、それでも「a」です。「lParam」は変わらないようです。理由がわかりませんでしたか?

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

vb.net - Vb.netキャプチャCtrl+C

CtrlC焦点が合っていなくても、誰かが使用したときにキャプチャしたい。VisualBasic2010を使用しています。

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

c# - Windows メッセージを使用して Alt ボタンを押し続ける

Windows メッセージで、ALT ボタンを押したままにするにはどうすればよいですか?

WM_KEYHOLD などはありますか?

これはスクリーンショットのコードですが、何かが間違っていると思います。使用しているキー コードが悪いと思います。0x70 の場合は F1 を送信します。0x46 の場合、迷惑なウィンドウ サウンドを送信します。

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

java - jna を使用してキーフックして消費する

jnaを使用してキーボードとマウスからのグローバル入力をフックする自動クリッカーを作成しています。http://code.google.com/p/goldriver/source/browse/trunk/king/src/jnacontrib/w32keyhook/KeyHook.java?r=36を使用したキーボードフック im の場合。

他のアプリケーションが処理しないように、キー イベントを消費する方法があるかどうか疑問に思っていました。

return new LRESULT (1); で修正されました。

現在、残りのコードを続行しないという問題が発生しています。ソースは次のとおりです。私のプログラムはキーボード入力をリッスンし続け、GUI を表示し続けません。

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

c++ - 低レベルの Windows キー フックが機能しなくなるのはなぜですか?

これは私の最初の質問の続き です。DX11 ゲーム中に D3D10SDKLayers.dll が読み込まれるのはなぜですか? 私は DX11 ゲームを作成しており、低レベルの Windows キー フックを使用して Alt+Enter をキャプチャしているため、必然的に問題が発生する Windows に自動的に行わせるのではなく、独自の方法を使用してフルスクリーンを切り替えることができます。このプロセスの説明と詳細は、リンクされた質問で入手できます。私の問題は、なんらかの理由で 6 回目の Alt+Enter の後、キーフックが一貫して機能しなくなることです。私は自分で登録を解除していません。

キーフックのコードは次のとおりです。

さらに情報が必要な場合は、必要なものを教えてください。なぜこれが起こっているのかわからないので、どのような情報を提供する必要があるのか​​ わかりません. 私の知る限り、キーフックを明示的に登録解除する以外にキーフックを取り除く唯一の方法は、Windows がタイムアウトした場合です。すべての MyClassVar メソッドはインラインで可能な限り高速になり、Alt+Enter は別のスレッドから処理されます。

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

programming-languages - ホットキー ユーティリティのプログラミング

Windows OS全体でグローバルに機能するホットキーを使用する必要があるプロジェクトがあります。現在、私の知る限り、現在のフォームでキーイベントを読み取る方法しか知りません。ホットキー ユーティリティをプログラミングするにはどうすればよいですか? そして、それに最適な言語は何でしょうか?

ありがとう

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

c# - UI を使用したグローバル キー/MouseHook

画面上にキーボードとマウスがある C# アプリケーションを作成したいと考えています。
クリックされたすべてのキーまたはボタンは、たとえばキーの 1 つに色を付けることによって、このアプリケーションで表示される必要があります (私はその方法を知っています)。これは、アプリケーションがフォーカスされていない場合にも機能するはずです。
現在、私は正常に動作するグローバルキーとマウスフックを使用しています。
問題は、キーフックが一度に 1 つのキーしかインターセプトしないことです。つまり、一度に表示できるキーは 1 つだけです。一度に複数のキーを画面に表示できるようにしたい。KeyListeners は、アプリケーションの外部では機能しないため、残念ながらオプションではありません。これを可能にする方法を知っている人はいますか?

私が使用しているキーフックは次のとおりです。

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

c++ - 64ビットWindowsのグローバルキーフック

現在、Windows764ビットO/Sでグローバルキーフックを機能させるのに問題があります。Stackoverflowには、このトピックに関するスレッドがすでにたくさんあることがわかりましたが、どれも私が作業できる答えを与えてくれないか、これらのスレッドで問題がどのように解決されるかをよく理解していません。

ですから、私が苦労していることを説明し、誰かが私を助けてくれるか、正しい方向に向けてくれることを願っています。

基本的に私の目標は、一種のクリップボードマネージャーのCTRL+CおよびCTRL+Vキーボード入力をインターセプトすることです。このため、私の現在の試みはWH_KEYBOARD、傍受されたキーストロークを処理するシステム全体のフックを自分のニーズに合わせて登録することです。

私は64ビットのWindows7O / Sでフックを実行していますが、そこから問題が始まります。32ビットフックDLLが64ビットプロセスに問題を引き起こすことは私には明らかです。逆もまた同様です。このためSetWindowsHookEx()、ドキュメントが示すように、フックを含むライブラリのx86バージョンとx64バージョン、およびフックの呼び出し元(呼び出し元)の両方を異なるファイル名で生成しました。

しかし、今は何ですか?64ビットDLLをシステム全体のフックとして設定すると、フォーカスされたときにキーを押すとすぐに、すべての32ビットアプリケーションがハングし始めます。32ビットフックを適用した場合も同じですが、64ビットであるためWindowsは実際には使用できませexplorer.exeん。両方のフックを設定すると、システムは停止状態になり、グローバルな「ビットネス」の戦いが発生します。

ここで、この問題は、たとえば64ビットフックDLLが32ビットプロセスに注入されようとしていることなどから発生していると思いますが、これはもちろん意味がありません。ただし、この場合、のドキュメントにSetWindowsHookEx()は次のように記載されています。

フックはアプリケーションのコンテキストで実行されるため、アプリケーションの「ビットネス」と一致する必要があります。32ビットアプリケーションが64ビットWindowsにグローバルフックをインストールする場合、32ビットフックは各32ビットプロセスに挿入されます(通常のセキュリティ境界が適用されます)。64ビットプロセスでは、スレッドは引き続き「フック」としてマークされます。ただし、32ビットアプリケーションはフックコードを実行する必要があるため、システムはフックアプリのコンテキストでフックを実行します。具体的には、SetWindowsHookExを呼び出したスレッドで。これは、フックアプリケーションがメッセージを送り続ける必要があることを意味します。そうしないと、64ビットプロセスの通常の機能がブロックされる可能性があります。

テキストの太字部分はよくわかりませんが、フッキングターゲットの「ビットネス」がフックの「ビットネス」と異なる場合、実際にフックを設定したスレッドで実行されると解釈します。まったく実行できます。さらに、これは、このスレッドがまだアクティブであり、おそらく一種のメッセージループを実行している必要があることを意味します。これは正しいです?それとも私はこれを完全にやめていますか?ドキュメントには、私のシナリオで何をすべきかについての正確な指示も記載されているようです。

64ビットWindowsインストールのデスクトップにすべてのアプリケーションをフックするには、それぞれ適切なプロセスから32ビットグローバルフックと64ビットグローバルフックをインストールし、通常のブロックを回避するために、フックアプリケーションでメッセージをポンピングし続けるようにしてください機能しています。

しかし、それでも私は自分の実装で何をしなければならないかを理解できていません。最後にいくつかのコードを示すために、システム全体のキーフックを設定しようとするこの基本的な例を見てみましょう。スレッドのコードの作成は無関係である必要があると思います。

フック自体は非常に些細なものに保たれています-ビットネスを越えるときにハングアップの問題を引き起こすのに十分です:

今、頭に手をかざす人もいると思いますが、フックを使った作業はめったにないことがわかります;)

しかし、それがまさに私が尋ねている理由です:)

簡潔に言うと、64ビットWindowsでシステム全体のキーフックを機能させるために上記の例を変更する方法を誰かに教えてもらえれば幸いです。私の問題は、フック以外の「ビットネス」を持つ特定のアプリケーションがハングし始め、問題を解決する方法がわからないことです。

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

ありがとう、よろしく

PuerNoctis