問題タブ [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# - WPFアプリケーションのグローバルシェルフック
別のアプリケーションの指定されたウィンドウを作成/破棄するイベントをキャッチしようとしています。この目的のために私は設定しWM_SHELLHOOK
ました。
これが私のWPFアプリケーションからの簡略化されたコードです:
問題は、SetWindowsHookEx
常に0を返し、最後のエラーは
1428(ERROR_HOOK_NEEDS_HMOD)モジュールハンドルなしで非ローカルフックを設定することはできません。
私は別の関連する質問を見ました。マウスやキーボードなどにフックを設定すると、すべて問題ありません。
このエラーを修正する方法を教えてください。ありがとう。
c# - アプリケーションをフックする方法は?
C#アプリでウィンドウの作成をフックしようとしています。
問題は、(Dummy.exe内の)ボタンをクリックしたときに、フックに入ることがないということです。何が間違っているのでしょうか。
ありがとう。
編集
Program.cs
NativeMethods.cs
ダミーの場合は、次のコマンドを使用して新しいフォームを作成します。
delphi - Vista/Windows 7 で WH_JOURNALRECORD の SetWindowsHookEx が失敗する
スレッドにフックを設定してマクロを記録する Delphi モジュールを準備しています。
これは WinXP では問題なく動作しますが、Vista/Windows 7 では で失敗しERROR_ACCESS_DENIED
ます。Google ( this ) で ( that )を参照しているのを見つけました。引用:
権限の低いプロセスは、次のことができません。 … ジャーナル フックを使用して、権限の高いプロセスを監視します。
成功せずに試しました:
- アプリケーションを管理者として実行します。おそらくスレッドはメイン スレッドよりも低い権限で開始されます (100% 確実ではありませんが)。
- 管理者セキュリティ コンテキストでスレッドを偽装することも役に立ちません。
コードサンプル:
LogonUser
ImpersonateLoggedOnUser
エラーなしで実行します。
試す他の可能性:
- UAC を永久にオフにします。これは役に立ちますが、モジュールのユーザーに強制することはできません。
- モジュールの顧客はアプリケーションに署名し、信頼できる場所に置きます。試したことはありませんが、ユーザーにとってモジュールの使用が根本的に複雑になります。
- モジュールを署名付きアプリケーションに入れ、EXE を配布します。これにより、一部のコア機能が壊れます。
Visa/Windows 7 でフックを設定しているコードを表示するか、有効な解決策を提案していただけますか?
winapi - システム全体の WH_CBT フックよりもキーストロークを監視する良い方法はありますか?
私は現在、コンピューター上でのユーザー アクションを記録する信頼できる優れた方法を研究しています。WH_CBT
イベントをグローバルにフックするシンプルなアプリを作成しましたが、今のところ問題なく動作しているようです。WH_CBT
アプリケーションが独自のイベント ハンドラーを持ち、CallNextHookEx()
それを処理した後に関数を呼び出さない状況について読んだことがあります。そのシナリオでは、システム全体のフックを使用して、そのアプリケーションのイベントを自分で処理できなくなると思います。
アプリケーションでキーストローク イベントをハイジャックする他の (おそらくもっと良い) 方法はありますか? 次のようなプロセスに DLL を手動で挿入することに関連する可能性があります。
- プロセスを選択します。
- を使用して DLL を注入します
CreateRemoteThreadEx()
。 - DLL はいくつかの winapi 関数をフック (迂回) し、それらからキーストロークやその他のイベントに関する情報を収集します。
その場合、フックGetMessage()
またはTranslateMessage()
関数で十分でしょうか? メッセージ ループを使用するプロセスは、作成されたウィンドウのイベントを処理するためにこれらの関数を使用する必要があるというのは正しいですか?
c# - WH_JOURNALRECORD を使用してキャンセルすると、WM_CANCELJOURNAL が返されるようです
私は C# を使用しており、 with を使用SetWindowsHookEx
してジャーナル メッセージを正常に記録するプログラムを取得しましたWH_JOURNALRECORD
。
私の問題は、やめる時が来たときです。ドキュメントは、ユーザーが CTRL-ESC または CTRL-ALT-DELETE を押すとWM_CANCELJOURNAL
メッセージが投稿され、いつ停止するかを知ることができることを示しています。私のアプリケーションはアンフックされますが、WM_CANCELJOURNAL
.
私は2つのフックをセットアップしています。ジャーナル レコードを実行するための 1 つのフックと、キャンセル メッセージを確認するための 1 つのフック:
winapi - サード パーティの DLL によって作成されたメッセージ ボックスの検出
サード パーティの DLL を読み込んでいるときに、アプリケーションのフローを停止する MessageBox ウィンドウを開くことがあります。そのようなことがいつ発生したかを検出できるようにしたいと考えています。
SetWindowsHookEx
withを使用しようとしてWH_CBT
いますが、コールバックが呼び出されません。
私はそれをこのように呼んでみました:
しかし、うまくいきませんでした。
この関数の正しい呼び出しは何ですか?
c - キャッチオールWindowsフック受信者関数を書く方法は?
動的で安全なフックを可能にするために、汎用のキャッチオールWindows API(およびアプリケーション関数)フック受信者を作成したいと思います。
アイデアは次のとおりです。
- 実行時にユーザーが決定するターゲット関数にフックを作成して設定します。
- 次に、インターセプトされたら、値をLuaランタイムに渡して、ユーザーが安全かつ動的に値を検査したり、編集したりできるようにします。
- 元の関数に制御を渡します。
関数の引数を意味のある値にデコードすることは、Luaスクリプトに任せることができます。
ヒント、ヒントを歓迎します。
PS私はmhook2.3を使用することを考えています
delphi - SetWindowsHookEx は、ローカル フックを作成します。グローバル化するには?
Delphi XE アプリケーションで、フォーカスの変更を監視するグローバル フックを設定しようとしています。フックは dll で作成されます。
同じ dll に、ホスト アプリ ウィンドウにメッセージをポストするフック プロシージャがあります。
これは機能しますが、ホストはアプリケーション自体内のフォーカス変更に関する通知のみを受け取ります。メイン フォームにはメモといくつかの TButton があり、それらの間でフォーカスを切り替えると、期待されるメッセージが生成されます。ただし、アプリケーション自体の外部にあるフォーカスの変更は報告されません。
DLL の複数のインスタンスが他のプロセスに挿入されることに関係があると思います。受け入れられた回答がここにある同様の質問がありますが、それはC用であり、Delphi dllで同じことを行う方法がよくわかりません(たとえば、共有メモリを設定するプラグマステートメント)。
(これは主に概念実証ですが、それでも機能させたいと思っています。クリック、alt + tab、アクティブ化ホットキーなどによってアプリがアクティブ化される直前に、どのウィンドウがアクティブだったかを知る必要があります。問題マウスまたは alt+tab が使用されている場合、GetForegroundWindow は、アプリケーションのメイン メッセージ キューをフックするなど、どれだけ早く配置しても、常に自分のアプリのウィンドウ ハンドルを返します。私はその考えがあまり好きではありません。)
winapi - SetWindowsHookEx HCBT_CREATEWND GetWindowText
作成されたウィンドウのテキストを取得する方法を知っている人はいますか? フックを on に設定しましたが、空の文字列CreateWindow
が返されます。GetWindowText