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

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

c# - フォアグラウンドウィンドウがいつ変更されたかを知る方法

私はc#でアプリケーションを書いていますが、グラウンドウィンドウのがいつ変更されたかを知る必要があります。SetWindowsHookExを使用しましたが、ウィンドウを切り替えてもコールバックがありません。

私のコード:

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

c# - c# - Outlook リボン コントロールのキーボードフック

特定のコントロール (コンボボックス) をフックし、そのコントロールに入力されたすべてのキーを受け取りたいです。Combobox は Outlook リボンの一部であり、キープレスなどのイベントはありません (本当に奇妙な動作をする onChange だけです)。

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

私が持っているハンドルと取得した ThreadID は正しい (Spy++ で検証) が、キーがキャプチャされていません。SetWindowsHookEx 関数の最後のパラメーターとして「0」を使用しても問題なく動作しますが、もちろんグローバル フックになります。

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

c++ - SetWindowsHookEx()を呼び出すアプリケーションは、オートコンプリートURLとパスワードをキャプチャできますか?

SetWindowsHookEx()を使用して、キーストロークログ用のキーボードフックを設定するアプリケーションがあります。これは正常に機能しますが、WebブラウザーがURLまたはパスワードを自動入力している状況では、もちろん、アプリはユーザーが実際に入力していない文字をキャプチャしません。

上司は、「SetWindowsHookEx()を呼び出すアプリケーションは、オートコンプリートパスワードもキャプチャできる」という記事を見つけました。この文書はどこにも見つかりません。フックを介してオートコンプリートテキストを取得することは実際に可能ですか?もしそうなら、どのようにですか?

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

delphi - WH_KEYBOARD (グローバル) の SetWindowsHookEx DLL を使用せずに?

hModdwTIDを 0に設定すると、_LL (LowLevel) を使用してフックをグローバルに動作させようとしています。

.dll なしで動作させる方法はありますか?

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

winapi - SetWindowsHookEx()WM_KEYBOARD_LLがフルスクリーンRDCで実行されない

私はSkypeのようなアウェイタイマースタイルのことをやろうとしています。ユーザーが一定期間「不在」の場合、何かをトリガーします。正常に動作するWM_KEYBOARD_LLでSetWindowsHookEx()を使用しています。これは、RDC接続を開いて全画面表示にするまでです。その後、キーボードイベントを取得することはありません。

誰かこれに出くわしますか?または、これを達成するためのより良い方法を知っていますか?私は実際にSkypeをテストしましたが、フルスクリーンRDCを使用すると、RDCを入力すると、AwayからOnlineに正しく移行します。

ありがとう

編集:レイモンド・チェンのコメントの後、私はいくつかのテストを行いました、そして彼は正しいです。調べてみたら、この方法が見つからなかったなんて信じられません。また、WPFアプリでLL_Mouse/KEYBOARDイベントがトリガーされないという問題も解決しました。

再度、感謝します。これに基づいて私の受け入れた答えを更新します。LL_MOUSE / KWYBOARDを実行する必要がある場合は、他の答えも適切です。

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

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

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

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

c++ - SetWindowsHookExが注入に失敗する

別のプロセスで実行されているウィンドウに送信されたメッセージを傍受して、それらのいくつかに反応できるようにしようとしています。

注入アプリケーションは、p/invokeを介してこのメ​​ソッドを呼び出すx86WPFアプリケーションです。別のx86プロセスでウィンドウにハンドルを渡します。

結果が正しい値であるため、メッセージが送信されていることがわかります。ただし、DLLが他のプロセスによってロードされることはなく、フックがメッセージをインターセプトせずにメッセージが呼び出されます。

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

mfc - SetWindowHookEx は、ネストされたウィンドウで WM_ERASEBKGND をブロックします

次の MFC アプリケーション UI 構造があります。

CMFCTabCtrl は、CWnd 派生クラスなどを順番に保持できます...

これをウィンドウのツリーと考える場合は、上記を深さ 0 に定義してみましょう。

この問題は、ツリーの深さが 1 の場合に発生します。つまり、次の場合です。

アプリケーションに次のコードを追加しました。

次に、アプリケーションを実行してメイン フレームのサイズを変更したところ、次のことがわかりました。

  1. ツリーの深さが 0 の場合、WM_ERASEBKGNDメッセージはダイアログで受信されます。
  2. ツリーの深さが 1 の場合、WM_ERASEBKGNDメッセージはダイアログで受信されません。

私の説明が十分に明確であることを願っています。

フックを設定すると、動作が劇的に変化するのは奇妙に思えます。

以前にこの種の問題に遭遇した人はいますか?

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

windows - SetWindowsHookEx は複数のイベントを送信します

私は C# で SetWindowsHookEx を使用して、(テキスト ボックスの) キーボード入力をバッファリングできるようにしています。

現在の基本的な設定は、新しいテキスト ボックスを作成するたびに、テキスト ボックスが内部的に新しい「KeyboardBuffer」オブジェクトを作成し、それがキーボード フックを設定することです。

(完全なコードはここで見ることができます)

問題は、N 個のテキスト ボックスがある場合、1 つのテキスト ボックスに入力すると、同じ文字が N 回表示されることです。これは、SetWindowsHookEx が .NET インスタンスを区別しないという事実に起因します。

すべてのテキストボックスがアクセスする静的な KeyboardBuffer オブジェクトを作成することで一時的にこれを修正しましたが、これは他の多くの問題を引き起こしました。

より良い解決策はありますか?

前もって感謝します。

編集:私はこれについてもっと考えました.バッファを無効/有効にすると、フックを削除/リセットできることに気付きました. フックの設定に顕著なオーバーヘッドはありますか?

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

keyboard-hook - グローバルキーボードフック

グローバルキーボードメッセージをキャプチャする必要があるため、WH_KEYBOARD_LLでSetWindowsHookEx()を使用します。ただし、アプリケーションにフォーカスがある場合にのみ機能し、コールバックをグローバルにトリガーしません。ほぼ同じコードがmouse_LL(別の構造など)でうまく機能します。助けてください!