問題タブ [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.
windows - 他の外部プロセスのウィンドウの移動/ドラッグを検出/フック
ウィンドウの移動/他のプロセスのドラッグを検出する最良の方法は何ですか? Windows7 64 ビットの場合
現在、C++ と C# を使用して DLL からグローバル フックを調査しています。うまくいきたくないので辛いです。キーボードとマウスのフックである程度成功しました。しかし、ウィンドウメッセージについては、何が悪いのかわかりません。
これは私の.dllファイルのコードです
自作のエアロスナップを作ろうと思っていました。これはただの楽しみです。
助けてくれてありがとう。
c# - C# アプリケーションで実行時に SetWindowHookEx が失敗する
私は1つのアプリケーション使用フックを構築しています。別のアプリケーションを開始したいのですが、アプリケーションを構築した後、アプリケーションは別のアプリケーションの自動化ウィンドウハンドルを取得し、windowhookを設定します。しかし、私はそれを行うことはできません。Plsは私を助けてください:( .私の英語のためのSr
変数 window は、すべてのアプリケーションを取得したときに hwnd であり、windowform が実行されています
winapi - メモ帳の Edit クラスのサブクラス化 (WINAPI)
メモ帳の Edit クラスに SetWindowsHookEx を設定しましたが、ここから続行する方法がわかりません。
Edit クラスを自分のプロシージャにサブクラス化し、テキストを操作するか、ファイルに保存するだけで、メモ帳コントロール/クラスに送り返す必要があります。
メモ帳からテキストを取得する簡単な方法がありますが、私は WINAPI とサブクラス化を学習しようとしているので、これは学習するのに適した方法です。
私の SetWindowsHookEx は次のようになります。
フック タイプ : WH_GETMESSAGEを使用してメモ帳の Edit クラスからテキストを取得し、それを GetMsgProc(I think) 関数に転送するにはどうすればよいですか?
それはまったく正しいフックタイプですか?
メッセージを送りますか?はいの場合、どうすればよいですか?
私のコードは次のようになります。
dllHeader.h:
dll.cpp:
exe.cpp
ここからの進め方が少しわかりません…何かヒントはありますか?リンク?チップ?
SetWindowsHookEx関数に関する MSDN のドキュメントを読みましたが、明確な答えが見つかりませんでした。
c - ERROR_ACCESS_DENIED を返す SetWindowLongPtr
私はまだフックに苦労しています。
私の目標は:
- notepad.exe にフックを設定する
- それをサブクラス化します(私の最終的な目標は、 Edit クラスをサブクラス化し、コンテンツを自分のウィンドウに表示することです)
免責事項:メモ帳からテキスト/コンテンツを取得する簡単な方法があることは知っていますが、これはC、winapi、サブクラス化、およびフックを学ぶための方法です.
私の問題は、SetWindowLongPtrが常に ERROR_ACCESS_DENIED エラー (コード 5) を返すことです。
2013 年 5 月 22 日: これは修正されました。問題は、SetWindowLongPtr が間違った場所にあることでした。GetMsgProc 関数内にある必要があります。
質問が少し長くて面倒になったので、質問を書き直しました(コードを更新して)
問題は、ターゲットが notepad.exeの場合に GetMsgProc が呼び出されないことです。ターゲットを simple.exe に変更すると、GetMsgProc が呼び出されて機能します。
(Simple.exe は単純な GUI です):
コードは次のようになります。
exe.cpp
dllHeader.h
dll.cpp:
ヒント、コメント、またはヒントは大歓迎です...
c# - SetWindowsHookEx がエラー 126 で失敗する
プロジェクトでGma.UserActivityMonitorライブラリを使用しようとしていますが、自分では解決できないエラーに直面しました。
ファイルには、次のコードでHookManager.Callbacks.cs
呼び出される静的メソッドがありEnsureSubscribedToGlobalMouseEvents
ます (多かれ少なかれ):
はSetWindowsHookEx
常に戻り、上記のコードは message とreturn codeの呼び出しで0
例外をスローし続けます。Gma.UserActivityMonitor の元のプロジェクトで提供されているデモを正常に実行できますが、私のプロジェクトは少し複雑すぎてここで説明できないため、私のプロジェクトとの違いを詳しく説明することはできません。誰かが問題を盲目的に推測できることを願っています。The specified module could not be found
Marshal.GetLastWin32Error
126
ところで、プロジェクトのFAQでは、プロジェクトがデバッグされているときにのみチェックされると、他の人が私のものに近い問題を抱えている(SetWindowsHookEx
エラーを返す)と言われています。Enable Visual Studio hosting process
そのため、私のボックスのチェックを外しましたが、デバッグモードだけでなく、Windowsエクスプローラーでリリースファイルをダブルクリックしたときも同じ問題が発生します(Visual Studioは関係ありません)。
詳細については、デモ プロジェクト (正常に動作します) でasm
変数が指している点{Gma.UserActivityMonitor.dll}
と、例外がスローされた私のプロジェクトでも同じです!
.net - SetWindowsHookEx / WH_KEYBOARD_LL を解釈する正しいロジック
メッセージをSetWindowsHookEx
withからWH_KEYBOARD_LL
押されたキーの有用な表現に変換する正しい方法は何ですか?
これには、ローカル キーボードのマッピングを理解することが必要になる可能性が高いことは承知しています。(注:簡単にするために、キーが離されたときではなく、キーが押されたときのみを考慮しています)
大まかに言えば、次の 3 つのシナリオがあるようです。
- 特殊キーが押された (Ctrl/Escape/Shift/Alt)
- 標準キーが押された (
A-Z
、0-9
など...a
とA
両方とも として読み取られることに注意してくださいA
) - テンキーやF1-F12
特殊キーは必要に応じて処理でき、便利なルックアップがいくつかあります。System.Windows.Forms.Keys
しかし、(英国英語キーボードで)感嘆符を入力すると、次のように検出されますShift-Down1Shift up
キーボードの「変換」レイヤーを通過した後にコードを取得するには低すぎるレベルでフックしているため (私は信じています)、コードを正しく解釈する方法に興味があります。
なぜ私がこれをしているのかについて。これは、私が作成したメディア プレーヤーに便利なショートカットを提供する方法として始まりました。これは、ゲーム内であっても、どこでも機能します (一部のゲームでは、キー ストロークをインターセプトし、OS への伝播を防止するようです)。アプリを使用している限り(おそらくユーザーのみ)、実際に必要なものは十分にありますが、必要に応じてこれをさらに進める方法について好奇心をそそられます.