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

c# - WPFアプリケーションのグローバルシェルフック

別のアプリケーションの指定されたウィンドウを作成/破棄するイベントをキャッチしようとしています。この目的のために私は設定しWM_SHELLHOOKました。

これが私のWPFアプリケーションからの簡略化されたコードです:

問題は、SetWindowsHookEx常に0を返し、最後のエラーは

1428(ERROR_HOOK_NEEDS_HMOD)モジュールハンドルなしで非ローカルフックを設定することはできません。

私は別の関連する質問を見ました。マウスやキーボードなどにフックを設定すると、すべて問題ありません。

このエラーを修正する方法を教えてください。ありがとう。

0 投票する
5 に答える
19500 参照

c# - アプリケーションをフックする方法は?

C#アプリでウィンドウの作成をフックしようとしています。

問題は、(Dummy.exe内の)ボタンをクリックしたときに、フックに入ることがないということです。何が間違っているのでしょうか。

ありがとう。


編集

Program.cs

NativeMethods.cs

ダミーの場合は、次のコマンドを使用して新しいフォームを作成します。

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

delphi - Vista/Windows 7 で WH_JOURNALRECORD の SetWindowsHookEx が失敗する

スレッドにフックを設定してマクロを記録する Delphi モジュールを準備しています。

これは WinXP では問題なく動作しますが、Vista/Windows 7 では で失敗しERROR_ACCESS_DENIEDます。Google ( this ) で ( that )を参照しているのを見つけました。引用:

権限の低いプロセスは、次のことができません。 … ジャーナル フックを使用して、権限の高いプロセスを監視します。

成功せずに試しました:

  1. アプリケーションを管理者として実行します。おそらくスレッドはメイン スレッドよりも低い権限で開始されます (100% 確実ではありませんが)。
  2. 管理者セキュリティ コンテキストでスレッドを偽装することも役に立ちません。

コードサンプル:

LogonUserImpersonateLoggedOnUserエラーなしで実行します。

試す他の可能性:

  1. UAC を永久にオフにします。これは役に立ちますが、モジュールのユーザーに強制することはできません。
  2. モジュールの顧客はアプリケーションに署名し、信頼できる場所に置きます。試したことはありませんが、ユーザーにとってモジュールの使用が根本的に複雑になります。
  3. モジュールを署名付きアプリケーションに入れ、EXE を配布します。これにより、一部のコア機能が壊れます。

Visa/Windows 7 でフックを設定しているコードを表示するか、有効な解決策を提案していただけますか?

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

winapi - システム全体の WH_CBT フックよりもキーストロークを監視する良い方法はありますか?

私は現在、コンピューター上でのユーザー アクションを記録する信頼できる優れた方法を研究しています。WH_CBTイベントをグローバルにフックするシンプルなアプリを作成しましたが、今のところ問題なく動作しているようです。WH_CBTアプリケーションが独自のイベント ハンドラーを持ち、CallNextHookEx()それを処理した後に関数を呼び出さない状況について読んだことがあります。そのシナリオでは、システム全体のフックを使用して、そのアプリケーションのイベントを自分で処理できなくなると思います。

アプリケーションでキーストローク イベントをハイジャックする他の (おそらくもっと良い) 方法はありますか? 次のようなプロセスに DLL を手動で挿入することに関連する可能性があります。

  1. プロセスを選択します。
  2. を使用して DLL を注入しますCreateRemoteThreadEx()
  3. DLL はいくつかの winapi 関数をフック (迂回) し、それらからキーストロークやその他のイベントに関する情報を収集します。

その場合、フックGetMessage()またはTranslateMessage()関数で十分でしょうか? メッセージ ループを使用するプロセスは、作成されたウィンドウのイベントを処理するためにこれらの関数を使用する必要があるというのは正しいですか?

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

c# - WH_JOURNALRECORD を使用してキャンセルすると、WM_CANCELJOURNAL が返されるようです

私は C# を使用しており、 with を使用SetWindowsHookExしてジャーナル メッセージを正常に記録するプログラムを取得しましたWH_JOURNALRECORD

私の問題は、やめる時が来たときです。ドキュメントは、ユーザーが CTRL-ESC または CTRL-ALT-DELETE を押すとWM_CANCELJOURNALメッセージが投稿され、いつ停止するかを知ることができることを示しています。私のアプリケーションはアンフックされますが、WM_CANCELJOURNAL.

私は2つのフックをセットアップしています。ジャーナル レコードを実行するための 1 つのフックと、キャンセル メッセージを確認するための 1 つのフック:

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

winapi - サード パーティの DLL によって作成されたメッセージ ボックスの検出

サード パーティの DLL を読み込んでいるときに、アプリケーションのフローを停止する MessageBox ウィンドウを開くことがあります。そのようなことがいつ発生したかを検出できるようにしたいと考えています。

SetWindowsHookExwithを使用しようとしてWH_CBTいますが、コールバックが呼び出されません。

私はそれをこのように呼んでみました:

しかし、うまくいきませんでした。

この関数の正しい呼び出しは何ですか?

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

c - キャッチオールWindowsフック受信者関数を書く方法は?

動的で安全なフックを可能にするために、汎用のキャッチオールWindows API(およびアプリケーション関数)フック受信者を作成したいと思います。

アイデアは次のとおりです。

  • 実行時にユーザーが決定するターゲット関数にフックを作成して設定します。
  • 次に、インターセプトされたら、値をLuaランタイムに渡して、ユーザーが安全かつ動的に値を検査したり、編集したりできるようにします。
  • 元の関数に制御を渡します。

関数の引数を意味のある値にデコードすることは、Luaスクリプトに任せることができます。

ヒント、ヒントを歓迎します。

PS私はmhook2.3を使用することを考えています

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

delphi - SetWindowsHookEx は、ローカル フックを作成します。グローバル化するには?

Delphi XE アプリケーションで、フォーカスの変更を監視するグローバル フックを設定しようとしています。フックは dll で作成されます。

同じ dll に、ホスト アプリ ウィンドウにメッセージをポストするフック プロシージャがあります。

これは機能しますが、ホストはアプリケーション自体内のフォーカス変更に関する通知のみを受け取ります。メイン フォームにはメモといくつかの TButton があり、それらの間でフォーカスを切り替えると、期待されるメッセージが生成されます。ただし、アプリケーション自体の外部にあるフォーカスの変更は報告されません。

DLL の複数のインスタンスが他のプロセスに挿入されることに関係があると思います。受け入れられた回答がここにある同様の質問がありますが、それはC用であり、Delphi dllで同じことを行う方法がよくわかりません(たとえば、共有メモリを設定するプラグマステートメント)。

(これは主に概念実証ですが、それでも機能させたいと思っています。クリック、alt + tab、アクティブ化ホットキーなどによってアプリがアクティブ化される直前に、どのウィンドウがアクティブだったかを知る必要があります。問題マウスまたは alt+tab が使用されている場合、GetForegroundWindow は、アプリケーションのメイン メッセージ キューをフックするなど、どれだけ早く配置しても、常に自分のアプリのウィンドウ ハンドルを返します。私はその考えがあまり好きではありません。)

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

winapi - SetWindowsHookEx HCBT_CREATEWND GetWindowText

作成されたウィンドウのテキストを取得する方法を知っている人はいますか? フックを on に設定しましたが、空の文字列CreateWindowが返されます。GetWindowText