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

winapi - WH_GETMESSAGE を使用して setwindowshookex を呼び出しても、インジェクター以外のプロセスでは機能しません。

以前似たようなことで質問したことがありますが、今回は状況が違うと思います。

標準のフック、フック解除、および msgProc 関数を備えた DLL があります。この DLL をメイン アプリケーションにロードしてから、以下の「フック」を呼び出します。

問題は、threadID = 0 でグローバルにすると、msgHook のみが、ライブラリをロードしたプロセスのウィンドウによって受信されたメッセージのみをキャプチャし、それがグローバル フックであると想定されている場合でも、それ以外は何もキャプチャしないことです。

他のウィンドウのスレッド ID を指定すると、メッセージはまったく受信されません。

その理由は何でしょうか?

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

windows - 特定のプロセスのレジストリ アクセスをフックする簡単な方法

私のコードが実行するプロセスのレジストリ アクセスをフックする簡単な方法はありますか? 私は友人について知ってSetWindowsHookExいますが、それはあまりにも複雑です...私はまだLD_PRELOAD上のように簡単な方法があることを願っていUnixます...

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

windows - Windowsフックが特定のメッセージを受信しないのはなぜですか?

Microsoftは、キーボードおよびマウス入力にDirectInputを推奨していません。そのため、SetWindowsHookExを使用してWndProcとGetMsgにフックする入力マネージャークラスを作成しました。フックはいろいろな問題の原因になっているようですが、適切に設定されていると思います。

私のWndProcフックもGetMsgフックも、実際のWndProcが受信しているメッセージを受信しません。入力マネージャーは、必要なWM_INPUT、WM_ BUTTON、WM_MOUSEWHEEL、およびWM_KEY*メッセージを受信しません。

何が得られますか?

部分ヘッダー:

部分的なソース:

メッセージハンドラーのコードは149行で構成されており、そのほとんどがメッセージタイプのスイッチであるため、ここには含めません。WndProcで受信したメッセージ値は、私のコールバックのメッセージ値と同じではありません。

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

c# - C# のウィンドウ フック

csharp から他のウィンドウに接続しようとしています。を使用してSetWindowsHookExいますが、c++ tc# から変換できません。このスレッドはこちらで見つけました が、解決されませんでした。問題は、SetWindowsHookEx が 0 を返すことです。これには、私が見つけた最良のコード サンプルが含まれています。

ヘルプ、アドバイスはありますか?

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

c++ - 64 ビット オペレーティング システム用のシステム全体のフック

64 ビット オペレーティング システムでシステム全体のフック (SetWindowHook を使用) を実行したいと考えています。

64 ビット プロセス (= proc64) は 64 ビット dll (= dll64) のみをロードでき、32 ビット プロセス (= proc32) は 32 ビット dll (= dll32) のみをロードできることがわかっています。

現在、私は SetWindowHook を 2 回呼び出すことを計画しています。1 回は dll32 で、もう 1 回は dll64 で、proc64s が dll64 をロードし、proc32s が dll32 をロードすることを期待しています (proc64s の dll32 と proc32s の dll64 は失敗します)。

それは正しい方法ですか、それとも「より正しい」方法はありますか?

ありがとう!:-)

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

c - KeyboardProc / SetWindowsHookExを使用して、挿入されたDLLからキーボードをフックします

注:私はプレーンCで作業しています。C++ではなく、C#ではありません。

私はmodに取り組んでいます。動作するDLLインジェクターと、インジェクションされるDLLを既に作成しました。ユーザー入力を除いて、すべてが順調に進んでいます。

ホットキーを使用できるようにしたいので、SetWindowsHookExを使用してキーボードフックを設定しようとしました。以下は私のコールバック関数です:

そして、これは私がそれを設定する方法です:

私が知る限り、フックはうまくセットアップされます(以前は無効なパラメーターで問題がありましたが、GetCurrentThreadIDを使用して修正しました)。NULLではないハンドルを返します。

しかし、キーを押すたびに出力がありません。

さらに明確にするために:上記のコードは、挿入されたDLLからのものです。したがって、それは事実上ゲームプロセスに「属します」。AllocConsoleを使用して、デバッグメッセージを出力するコンソールを割り当てました。

私は何が間違っているのですか?

編集:(さらに)明確にするために:リストされたコードは挿入されたDLLからのものです。これは、DLLを挿入するために使用するアプローチではありません。これを行うために、別の(動作する!)プログラムを作成しました。

ホストプロセス内から呼び出すことを考えると、printf()が表示されないので、printf()を使用していることに驚かされます。はい、ホストプロセス内から呼び出しますが、動作中のコンソールをすでに割り当てているため、これは問題ではありません。ここで説明したものと非常によく似たアプローチを使用しました

EDIT2:printf()が機能しない理由(機能しているため)を尋ねているのではなく、このキーボードフックが機能していない理由を尋ねています。

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

c++ - Win32 ウィンドウの作成/サイズ変更/サイズのクエリのフック

既存のアプリケーションを「拡張」しようとしています。

目標は、アプリケーションのコードを変更せずに既存のアプリケーションを大きくすることです。
そのため、アプリケーションが作成されたウィンドウ サイズを照会すると、サイズ変更されたサイズではなく、元のサイズが表示されます。

次を使用してウィンドウのサイズを変更できましたSetWindowsHookEx

と:

私が直面している問題は、引き伸ばされたアプリケーションに元のサイズを表示させることができないことです。

たとえば、.NET フォームが作成された場合:

その後、サイズが照会されます。

サイズ変更された値ではなく、ありたいと思いwidthますheight。既存のウィンドウのサイズを照会する適切なフックが見つかりませんでした。100200

ウィンドウサイズのクエリをフックする正しい方法は何ですか?

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

winapi - CapsLockの押下を傍受するための最良の方法

Launchyのようなプログラムを作成するために、WindowsのCaps Lockボタンを傍受するための最良の方法は何ですか?

現在、 SetWindowsHookExで低レベルのフックを設定していますが、低レベルでアクティブにしようとしている他のプログラムを傍受したくないので、それは私には少し低レベルです。Caps Lock自体をオンにするのを防ぐことができる最高レベルの傍受を探しています...もっと良い提案はありますか?

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

winapi - SetWindowsHookEx フックがまだ機能しているかどうかを確認する方法は? (Win7 バグ回避)

MS VisualC++ でプログラムを書いています。でキーボードフックをセットhHook = SetWindowsHookEx(13,MyProc,GetModuleHandle(NULL),0);

Win7 にはフックを無効にするバグがあり、これを再現できます。このバグが発生すると、hHookはそのままですがTRUE、 がUnhookWindowsHookEx(hHook)返されますFALSE

ただ、フックが無効になった時だけ再起動したいので、使えませんUnhookWindowsHookEx

フックがまだ機能しているかどうかを確認するにはどうすればよいですか? のようなものGetHookStatus(hHook)

この Win7 のバグは、何らかのタイムアウトまたは「ガベージ コレクション」が原因であることがわかりましたが、フックの状態を確認し、必要に応じて再起動する方が簡単です。私はプロではなく、主に個人的なニーズのために趣味としてコーディングしています。

ありがとうございました。

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

visual-c++ - SetWindowsHookEx を使用した WM_PAINT フック

ヒア・ゴーズ・マイ・コード

WM_PAINT イベントを取得しようとしています... 現時点では、すべてのイベントをトラップしようとしています。どこに行方不明ですか?