問題タブ [keyboard-hook]

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 に答える
1369 参照

dll - 32 ビット キーボード フックが 64 ビット アプリで予期せず動作するが、Outlook がハングする

これについて多くのことを読んできましたが、写真がぼやけてしまいます。グローバル ホットキーを待機してウェイクアップするために KeyboardHook をインストールする 32 ビット アプリがあります。Win 7 x64 エディションで実行すると、ホットキーを押すと Outlook x64 エディションがハングすることがわかりました。

そこで、調査を行ったところ、32 ビット キーボード フックは 64 ビット アプリでは動作しないようです。さらにテストする時間...

ホットキーは、64 ビットのメモ帳、ワードパッド、および付箋で正常に機能します。タスク マネージャーで横に「*32」がないため、これらが 64 ビット アプリであることを確認しました。アプリはハングせず、本来の機能を果たします。しかし、ちょっと待ってください... 32 ビットのフック DLL を 64 ビット アプリにロードすることはできませんよね?

Process Explorer を見ると、フック dll がメモ帳プロセスにロードされていないことがわかります。(WOW64 ディレクトリから 32 ビットの notepad.exe を実行すると、dll がプロセスに読み込まれていることがわかるので、ツールを正しく使用していることがわかります)。

Outlook のハングアップの問題は関連している場合もあれば、関連していない場合もありますが、64 ビットのメモ帳でもフックが機能するのはなぜですか?

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

.net - Global Hooks と Raw Input を同時に使用できますか?

SetWindowsHookExすべてのキーストロークを取得するためにGlobal Hooks を使用してみました。

問題は、グローバル フックと Raw Input を同時に使用できないことです。

Raw Inputs を有効にすると Global Hooks が自動的に無効になるため、ここに何らかの問題があるに違いないと考えています。

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

c# - タイマーの低レベルキーボードフック

キーを傍受してランダムな文字を出力するキーボードフックがあります。私がやりたいことは、タイマーを設定し、1 分後にキーボードをフック解除し、別の分でフック自体を元に戻すことです。したがって、最初の部分は機能し、開始時に接続され、1分後にフックが解除されますが、再び接続されることはありません. フックを外した後に再度フックするにはどうすればよいですか?

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

アプリケーションへのエントリ ポイントは次のとおりです。

編集:だから私はJonathan.Peppersのアドバイスを受けて、キーダウンイベントにisActiveのチェックを入れました。それは、オンとオフのように偽造する限り機能しました。今、私は新しい問題に遭遇しました。しばらく入力した後、「Queue Empty」という理由で InvalidOperationException が発生し、入力中に問題なく実行されているのになぜ空になるのかわかりません。キーボード フック コードはそのままにして、アプリケーション エントリ ポイント コードを次のように更新しました。

編集: しばらく入力した後、上記のコードから取得したスタック トレース。

System.Collections.Queue.Dequeue() で System.Windows.Forms.SendKeys.SendInput(Byte[] oldKeyboardState, Queue previousEvents) で System.Windows.Forms.SendKeys.Send(文字列キー、コントロール コントロール、ブール待機) でSystem.Windows.Forms.SendKeys.Send(文字列キー) at KeyRemapWindowsForm.Program.gkh_KeyDown(Object sender, KeyEventArgs e) in C:\Demos\KeyRemapWindowsForm\Program.cs:line 79

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

c# - キーボード フックがすべてのキーをキャッチしない

グローバル キーボード フックに問題があります。

ほとんどの場合、それは機能します。ただし、以下のセクションでは、Enter キーがフォーカスされたプログラムに渡されないようにする必要があります。約半分の時間しか機能しません。

Enterキーを時々ブロックし、他のキーをブロックしない理由についてのアイデアはありますか?

関連するコードは次のとおりです。

と:

と:

0 投票する
3 に答える
7137 参照

objective-c - NSEventを変更して、押されたキーとは異なるキーを送信します

支援技術の目的でOSXキーボードフックを作成しようとしています(つまり、キーロガーではなく、心配しないでください)。

ユーザーがキーを押したときに、実際のキーが押されるのを防ぎ、代わりに偽のキーを押す(自分で選択した文字)を送信したいと思います。

私は次のコードを持っています:

これらの目標のいずれかを達成するための助けはありますか?基本的に、NSEvent「keyboardEvent」を変更して別の文字を送信します。ありがとう。

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

objective-c - ユーザーがタップしたキーボードイベントと生成されたキーボードイベントを区別するにはどうすればよいですか?

キーボードフックを取り付けました:

CGEventRef myCGEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) {

基本的に、私はユーザーのキーボードタップを取り、入力を食べて、代わりに自分の入力を投稿したいと思います。

したがって、彼が「g」をタップした場合、テキストフィールドに「foo」を投稿したいと思うかもしれません。

私はここで見つけたようにテキストフィールドに書いていCGEventPostますCGEventSetUnicodeString:http: //www.mail-archive.com/cocoa-dev@lists.apple.com/msg23343.html

問題は、プログラムで入力した各文字がキーボードフックに当たっているということです。したがってreturn NULL、キーボードフックを使用してユーザー入力をブロックすることはできません...これにより、プログラムのすべての入力もブロックされます。

C#のWindows側で「注入された」フラグを使用してそれらを区別しました。1年前の質問を参照してください:条件として低レベルの8ビットフラグを使用するにはどうすればよいですか?

Objective-Cで似たようなものを探しています。

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

.net - keybd_event、特殊文字、キーボードレイアウト?

私は、ユーザーがテキストを挿入してアプリケーションに自動的に入力させることができるC#.netアプリケーションを開発しています。このテキストのすべての文字を解析し、すべてのキーストロークを個別に送信します。

しかし、実際に出力がどうなるかを知る方法があるのだろうかと思います。例えば、

ただし、特殊文字やキーボードのレイアウトが少し心配です。

参考までに、キーコードが記載されたこのページを見つけました:http://msdn.microsoft.com/en-us/library/ms927178.aspx

このページには次の行があります。

ここで、テキストに「\」が含まれている場合、VK_OEM_5またはVK_OEM_102のどちらを送信する必要があるかをどのように知ることができますか?

ありがとう!

0 投票する
3 に答える
1178 参照

c# - Windows Mobile 6.1/6.5でのグローバルホットキーを使用したアプリケーションの切り替え

私は、Windows Mobile 6.1 / 6.5でC#とC/++の間の境界線にまたがるアプリケーションの作成に取り組んでいます。現在、デバイスでキオスクアプリケーションを実行しており、2番目のキオスクアプリケーションに切り替える機能を追加したいと考えています。

私たちの目標は、プロセスウィンドウが押されるたびにプロセスウィンドウを切り替えるグローバルホットキーを確立することです(alt + tabの動作と同様)。すでに両方のアプリケーションがあり、プロセスを切り替えるコードをいくつか作成しましたが、プロジェクトのグローバルホットキー部分を機能させるのに苦労しています。

私が行ったすべての読みから、グローバルキーの押下を監視する最良の方法は、coredll.dllのSetWindowsHookEx関数を使用してシステムメッセージポンプにリンクすることであると理解しています。残念ながら、この機能はプラットフォームで技術的にサポートされていないことも読みました。

また、MFCフレームワークでON_WM_KEYUP / ON_WM_KEYDOWNマクロを使用してメッセージマップを使用することを提案するチュートリアルをいくつか見つけましたが、WindowsMo​​bileに固有のドキュメントは見つかりませんでした。ここのドキュメントを使おうとすると、デバイスがクラッシュし続けました。

プラットフォームにある種のグローバルキーフックを設定するための受け入れられたベストプラクティスはありますか?そうでない場合、少なくとも技術的にサポートされているものはありますか?

前もって感謝します。

ReplyQuote

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

c++ - DLL を使用してグローバル フックを作成する場合、DLL に何を入れればよいですか?

グローバルフックを作成していますが、DLL が必要ですが、DLL について何も知りません。では、dll ファイルに何を含める必要がありますか?

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

jquery - キーストロークをjQueryに置き換えるにはどうすればよいですか?

キーストロークを jQuery に置き換えることができる必要があります。右矢印が押されたときに、代わりにタブキーを押してほしい。これまでのところ、私は持っています:

39 は右矢印、9 はタブ ボタンです。また、simulate keydown はイベント ハンドラーを再帰的に呼び出しますが、これは明らかに悪いことですが、その行がなくても、これはまだ機能しません。

(http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/simulate/jquery.simulate.js?r=6063) にある jquery.simulate.js を使用しています。 jQueryだけでキープレスをシミュレートする方法を見つけられません。

キープレスは、実際のキープレスをシミュレートしません。