問題タブ [setwindowshookex]
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# - フォアグラウンドウィンドウがいつ変更されたかを知る方法
私はc#でアプリケーションを書いていますが、グラウンドウィンドウのがいつ変更されたかを知る必要があります。SetWindowsHookExを使用しましたが、ウィンドウを切り替えてもコールバックがありません。
私のコード:
c# - c# - Outlook リボン コントロールのキーボードフック
特定のコントロール (コンボボックス) をフックし、そのコントロールに入力されたすべてのキーを受け取りたいです。Combobox は Outlook リボンの一部であり、キープレスなどのイベントはありません (本当に奇妙な動作をする onChange だけです)。
コードは次のとおりです。
私が持っているハンドルと取得した ThreadID は正しい (Spy++ で検証) が、キーがキャプチャされていません。SetWindowsHookEx 関数の最後のパラメーターとして「0」を使用しても問題なく動作しますが、もちろんグローバル フックになります。
c++ - SetWindowsHookEx()を呼び出すアプリケーションは、オートコンプリートURLとパスワードをキャプチャできますか?
SetWindowsHookEx()を使用して、キーストロークログ用のキーボードフックを設定するアプリケーションがあります。これは正常に機能しますが、WebブラウザーがURLまたはパスワードを自動入力している状況では、もちろん、アプリはユーザーが実際に入力していない文字をキャプチャしません。
上司は、「SetWindowsHookEx()を呼び出すアプリケーションは、オートコンプリートパスワードもキャプチャできる」という記事を見つけました。この文書はどこにも見つかりません。フックを介してオートコンプリートテキストを取得することは実際に可能ですか?もしそうなら、どのようにですか?
delphi - WH_KEYBOARD (グローバル) の SetWindowsHookEx DLL を使用せずに?
hModとdwTIDを 0に設定すると、_LL (LowLevel) を使用してフックをグローバルに動作させようとしています。
.dll なしで動作させる方法はありますか?
winapi - SetWindowsHookEx()WM_KEYBOARD_LLがフルスクリーンRDCで実行されない
私はSkypeのようなアウェイタイマースタイルのことをやろうとしています。ユーザーが一定期間「不在」の場合、何かをトリガーします。正常に動作するWM_KEYBOARD_LLでSetWindowsHookEx()を使用しています。これは、RDC接続を開いて全画面表示にするまでです。その後、キーボードイベントを取得することはありません。
誰かこれに出くわしますか?または、これを達成するためのより良い方法を知っていますか?私は実際にSkypeをテストしましたが、フルスクリーンRDCを使用すると、RDCを入力すると、AwayからOnlineに正しく移行します。
ありがとう
編集:レイモンド・チェンのコメントの後、私はいくつかのテストを行いました、そして彼は正しいです。調べてみたら、この方法が見つからなかったなんて信じられません。また、WPFアプリでLL_Mouse/KEYBOARDイベントがトリガーされないという問題も解決しました。
再度、感謝します。これに基づいて私の受け入れた答えを更新します。LL_MOUSE / KWYBOARDを実行する必要がある場合は、他の答えも適切です。
c++ - SetWindowsHookEx MS-Windows API 関数を使用した低レベルのキーボード フック アプリケーション
私は現在、フック用のアプリケーションを開発中です。私はそれを達成するために C++ を使用しており、MS-Windows フック ライブラリの関数を使用しています。私のアプリケーションは、.DLL ファイルを介してグローバル フックを作成し、複数のキーストロークをすべてのプロセス (メイン ウィンドウ) に送信できます。SetWindowsHookEx MS-Windows API 関数を使用しており、「フック タイプ」は WH_KEYBOARD_LL です。期待どおりに動作しますが、場合によっては (たとえば、一部のゲーム)、「偽の」キーストロークを送信しているにもかかわらず、ゲームがそのキーストロークを「理解」していないようです。似たような問題や提案はありますか? どうもありがとう。
c++ - SetWindowsHookExが注入に失敗する
別のプロセスで実行されているウィンドウに送信されたメッセージを傍受して、それらのいくつかに反応できるようにしようとしています。
注入アプリケーションは、p/invokeを介してこのメソッドを呼び出すx86WPFアプリケーションです。別のx86プロセスでウィンドウにハンドルを渡します。
結果が正しい値であるため、メッセージが送信されていることがわかります。ただし、DLLが他のプロセスによってロードされることはなく、フックがメッセージをインターセプトせずにメッセージが呼び出されます。
mfc - SetWindowHookEx は、ネストされたウィンドウで WM_ERASEBKGND をブロックします
次の MFC アプリケーション UI 構造があります。
CMFCTabCtrl は、CWnd 派生クラスなどを順番に保持できます...
これをウィンドウのツリーと考える場合は、上記を深さ 0 に定義してみましょう。
この問題は、ツリーの深さが 1 の場合に発生します。つまり、次の場合です。
アプリケーションに次のコードを追加しました。
次に、アプリケーションを実行してメイン フレームのサイズを変更したところ、次のことがわかりました。
- ツリーの深さが 0 の場合、
WM_ERASEBKGND
メッセージはダイアログで受信されます。 - ツリーの深さが 1 の場合、
WM_ERASEBKGND
メッセージはダイアログで受信されません。
私の説明が十分に明確であることを願っています。
フックを設定すると、動作が劇的に変化するのは奇妙に思えます。
以前にこの種の問題に遭遇した人はいますか?
windows - SetWindowsHookEx は複数のイベントを送信します
私は C# で SetWindowsHookEx を使用して、(テキスト ボックスの) キーボード入力をバッファリングできるようにしています。
現在の基本的な設定は、新しいテキスト ボックスを作成するたびに、テキスト ボックスが内部的に新しい「KeyboardBuffer」オブジェクトを作成し、それがキーボード フックを設定することです。
(完全なコードはここで見ることができます)
問題は、N 個のテキスト ボックスがある場合、1 つのテキスト ボックスに入力すると、同じ文字が N 回表示されることです。これは、SetWindowsHookEx が .NET インスタンスを区別しないという事実に起因します。
すべてのテキストボックスがアクセスする静的な KeyboardBuffer オブジェクトを作成することで一時的にこれを修正しましたが、これは他の多くの問題を引き起こしました。
より良い解決策はありますか?
前もって感謝します。
編集:私はこれについてもっと考えました.バッファを無効/有効にすると、フックを削除/リセットできることに気付きました. フックの設定に顕著なオーバーヘッドはありますか?
keyboard-hook - グローバルキーボードフック
グローバルキーボードメッセージをキャプチャする必要があるため、WH_KEYBOARD_LLでSetWindowsHookEx()を使用します。ただし、アプリケーションにフォーカスがある場合にのみ機能し、コールバックをグローバルにトリガーしません。ほぼ同じコードがmouse_LL(別の構造など)でうまく機能します。助けてください!