問題タブ [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 に答える
2361 参照

c# - 「DropDownList」モードで.NetComboBoxプロパティSelectionStartおよびSelectionLengthを使用することによって発生する奇妙な動作

「DropDownList」モードのコンボボックス用のこのようなハンドラーを備えたサンプルアプリケーションがあります。

上記のコードは、アプリケーションにCALLWNDPROCフックがロードされているかどうかによって動作が異なります。アプリケーションにCALLWNDPROCフックが含まれている場合、上記のコードは、コンボボックスがフォーカスを失うたびに例外をスローします。フックがなければ、そのコードはスローされません。

これらは例外の説明からの数行です:

問題は、フックを取り付けた場合のさまざまな動作の原因は何でしょうか。

PS1:私はC#開発者ではありませんが、テキスト選択の概念はDropDownListコンボボックスには適用できないようです(テキストボックスがないため)、正しいですか?

PS2:フックとフックDLLをインストールするアプリケーションはC++で書かれています。フック機能は次のように簡単です。

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

winapi - フック時にオーバーレイ ウィンドウが正しく描画されない

要件は、自分の情報を別のアプリケーションのウィンドウの横に描画することです。Z オーダーなどを処理するには、WH_GETMESSAGE をフックして WM_PAINT を描画するのが良さそうです。

ただし、一部の WM_PAINT は関心のあるウィンドウ領域を対象としていますが、他の WM_PAINT はコンテキスト メニューやボタンなど、まったく異なるものを対象としています。

例 メモ帳は、メモ帳画面に「Hello」と書き込むオーバーレイでフックされます。これはうまくいきます。ただし、メモ帳を右クリックすると、コンテキスト メニューに Hello が表示されます。基本的にコンテキスト メニューは破棄されます。

コンテキスト メニューである WM_PAINT を特定するエレガントな方法はありますか?

描画更新領域をテストするだけでは十分ではありません。なぜなら、コンテキスト メニューはどこにでもあり、関心のある領域を含んでいる可能性があるからです。

0 投票する
4 に答える
757 参照

c++ - 私の C プログラムは、フック用のコールバック関数を提供します。どうすればそれを無頓着に生き続けることができますか?

現在、OS ライブラリ関数 (Windows.h) を使用してメッセージ ボックスを生成しています。これにより、魔法のようにプログラムが生き続け、コールバック関数の呼び出しに応答します。

プログラムを無言で永久に実行させるには、どのような代替アプローチを使用できますか?

「Ctrl-c」または SIGINT をトラップし、続いて RemoveHook() を呼び出してクリーンな終了を行うと便利ですが、必須ではありません。

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

c# - ウィンドウが作成/アクティブ化されていることを通知されるように、システム「ウィンドウフック」を追加する方法は?

たくさんのことを試しましたが、タスクバーが非表示になったり、デスクトップ UI に他の超自然的な効果が表示されたりする中で、一貫して動作させることができません。

最初にオープン ライブラリhttp://mwinapi.sourceforge.net/を使用してみました。ウィンドウなどを列挙するためのOOレイヤーとしてはうまく機能しましたが。フックを適切に実行できませんでした

次の目的地は、.Net フレームワークの Windows フックに関する Dino E. の投稿でした。テキストを理解し、これを機能させようとしていたので、私は自分のタイプを書くことになりました。

私の意図は、このアプリを実行し、実行中に作成されたすべてのウィンドウをログに記録できるようにすることです。すべての目玉を呼んでいます...

更新:どうやら.Net / マネージ コードでグローバル ウィンドウ フックを記述できないため、切り捨てました(一部の低レベルのマウスまたはキーボード フックを除く) 。

そこで、C++ に切り替えました。それでも、すべての WinAPI 呼び出しは有効なハンドルを返しますが、フィルター関数が呼び出されていません。通知を受け取っていないようです。それでもうまくいきません...誰かが間違いを見つけることができますか。

クライアント exe は次のように Hook_DLL を呼び出します

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

winapi - ダイアログへのキーストロークを抑制

制御できないダイアログ用のキーボードフックを追加しました(クローズドソースのライブラリで独自のDialogProc関数を実行します)。キーストロークをキャプチャすることはできますが、キーストロークは常にダイアログに送信されます。これにより、エラービープ音といくつかの奇妙な動作が発生します。

フックの取り付け:

フック機能:

フックを解放する:

ダイアログでフォーカスがあるコントロールにキーストロークが送信されないようにする方法はありますか?

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

c# - アプリへのフックを作成しますか?

これが私が必要なものです。

別のアプリケーションを引き継ぎ、そこで発生する特定のことを傍受するアプリケーションを作成しようとしています。アイデアは、アプリケーションを監視し、何かが起こったときにアクションを実行することです。

いくつかの調査の結果、MsResearchのDetours2.1が役立つことがわかりましたが、それを使用してプログラミングのドメインである.NETに統合する方法を見つけるのに苦労しています。

c \ c ++の本を掘り下げることなく、これをどのように行うことができるか、誰かが知っていますか。

皆さんありがとう

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

c++ - SetWindowsHookEx - Dll インジェクションが最初の数回の呼​​び出しを逃す

SetWindowsHookEx を使用して、java.dll の API への呼び出しをキャプチャしようとしています。

だから私は別のdllを作成し、setwindowsHookExを使用して他のすべてのプロセスに注入しました

g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, JLoadSetFunc, g_hHookDll, 0)

問題は次のとおりです。

プロセスからの呼び出しをキャプチャしようとしているときに、フックされた関数へのいくつかの呼び出しが既に実行された後に、dll がそのプロセスにアタッチされていることに気付きました。

したがって、問題は、私のフック メカニズムが、フックされた API の最初の数回の呼​​び出しを見逃していることです。

私を導くために、この問題について提案またはコメントしてください。私はこれにひどく立ち往生しています。

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

c++ - SetWindowsHookEx ランタイムで作成されたフックを無効にすることは可能ですか?

アプリケーション (たとえば、私のもの、または外部プロセス内) が SetWindowsHookEx を呼び出した場合、フックを解除することは可能でしょうか? フックを最初に作成したのは私ではないので、元のフックへの変数やポインターは一切ありません。

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

c - WH_MOUSE フックがグローバルでなくなったのはなぜですか?

マウス ジェスチャを監視する DLL で、このグローバル マウス フックを設定しています。

すべてが完全に機能しますが、WH_MOUSE_LL のフック セットは低レベルのフックであり、外部の注入可能な DLL にある必要はありません。

より適切なものに切り替えると、WH_MOUSEマウスフックに切り替えると、すべてが崩壊します。メイン アプリケーション (フックをインストールするアプリケーション) の外側をクリックすると、フックが破損します - ::UnhookWindowsHookEx が失敗します。

私はこの男が専門家の交換で言っているのを見つけただけです:

「少なくとも Windows XP + SVP2 では、WH_MOUSE はグローバルにはなりません。代わりに WH_MOUSE_LL を使用する必要があります。」

フックを正しくセットアップします。共有データ セクションを使用する DLL で、フック プロシージャからメッセージを投稿し、送信しません。

なぜこれが変わったのですか?そして、なぜ文書化されていないのですか?誰もこれに遭遇しましたか?ありがとう!

ところで: 私は人気のあるStrokeItアプリケーションを少しリバース エンジニアリングしました。このアプリケーションは、WH_GETMESSAGE フックと WH_MOUSE フックの組み合わせを使用し、XP/Vista でも動作します...