問題タブ [mouse-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.
.net - キーストローク、マウスクリック、マウスの動き、その他の入力を送信するための.NETライブラリはありますか?AutoHotKeyに似ていますが、.NETライブラリで使用しますか?
AutoHotKeyでできることと基本的に同じようなコードを、.NETとC#でのみ記述したいと考えています。これは、はるかに堅牢な環境だからです。この種のフックに使用できるラッパーライブラリがあるかどうかはわかりませんでした。
.NET用にこれを行うライブラリを知っている人はいますか?
c++ - WindowsAPIを使用してマウスフックを作成する際の問題
WindowsAPIを使用してマウスフックを作成しようとしています。現在、私は次のコードを持っていますが、それを機能させるのに苦労しています。おそらく、いくつかのサンプルコードは、概念をよりよく理解するのに役立つでしょう。
マウスの左ボタンをクリックしているときに、上記のコードWM_LBUTTONDOWN
が30回以上ケースに入った。私のコードに何か問題がありますか?もしそうなら、どうすればそれを修正できますか?
.net - マウスとキーボードの入力をキャプチャするためにWPFは何を使用しますか?
SetWindowsHookEx
およびを使用して、特定のマウス クリックをグローバルに (システム全体で) フィルタリングしますWH_MOUSE_LL
。問題は、WPF アプリケーションでは機能しないことです (システムにこれらのクリックを無視するように指示したかどうかに関係なく、すべての WPF アプリケーションがマウス クリックを検出します)。私はすでに同様の質問をここDirectInput
で行っていますが、入力を検出するために標準の Windows メッセージの代わりにWPF が使用することを前提としています。しかし、そうですか?
を使用してマウス クリックを WPF アプリケーションに挿入SendMessage
できるコードを見つけることができました。それが可能であれば、それはどういうわけか、WPFがDirectInput
マウス入力に使用しないことを意味すると思います。しかし、WPF アプリケーションがマウス クリックを検出するのを防ぐことができないのはなぜSetWindowsHookEx
でしょうか。
この質問は主にマウス入力に関するものですが、キーボード入力でもどのように機能するかを知りたいです。
例
奇妙な WPF の動作を再現するために、次のソリューションをすぐに作成しました。3 つのプロジェクトで構成されています。
HookTester
StartUp プロジェクトは、他の 2 つのプロジェクトを自動的に起動するため、主にこの 1 つに注意する必要があります。起動時にマウス フックをインストールし、フォームを閉じるときにフックをアンインストールします。WinFormsTest
は、マウスの右ボタンをテストできるデフォルトのコンテキスト メニューを備えた TextBox を含みます。HookTester の実行中は、マウスの右ボタンを使用してコンテキスト メニューを呼び出すことはできません。WpfTest
には TextBox も含まれており、カスタム コンテキスト メニュー (デフォルト メニューも使用できます) を備えているため、ここでもマウスの右ボタンをテストする場所になります。HookTester が実行されている限り、(マウスの右ボタンを使用して) コンテキスト メニューを呼び出すことはできないはずですが、何らかの理由で、とにかくメニューが表示されます (なぜ???)。
警告:ソリューションを実行すると、HookTester プロジェクトが開始され、すぐにフックがインストールされ、マウスの右ボタン クリックが (システム全体で) 拒否されます。HookTester フォームを閉じるだけで、簡単にフックをアンインストールできます。注意してテストしてください。
windows - 2 つのフック プロシージャを同時にアンフックする方法は?
私のアプリケーションでは、フォーカス イベントを処理する callbackwnd プロシージャとマウス クリック イベントを処理するマウス プロシージャの 2 つのプロシージャを作成しました。
また、フック解除機能を最初に使用する手順を知りたいですか?
よろしく、 カーシック
c# - 3番目のX-マウスボタンをフックしますか?
XBUTTONイベントをキャプチャする低レベルのマウスフックをC#で作成しました。1番目と2番目のxButtonの場合は問題なく動作しますが、マウスの3番目のxButtonに対するメッセージはありません。そのボタンのイベントをキャプチャする方法はないようです。
私はゲーミングマウスを持っていて、最初の2つのxButtonの間に3番目のxButtonがあります。クリックしても何も起こらないので、カスタムC#マウスフックアプリを作成して、そのボタンのカスタム動作をプログラムしたいと思いました...
c++ - グローバルフックなしでマウス/キーボードのアクティビティを通知する方法は?
一番上に透明なウィンドウ (WS_EX_TRANSPARENT) が浮かんでいます。
マウスの移動 (画面上の任意の場所) またはキーボード ストロークがある場合は常に、関連情報 (マウスの位置など) を表示する必要があります。
グローバルフックを使用せずにマウス/キーボードのアクティビティをキャプチャすることは可能ですか? ウイルス対策ソフトウェアは、ほとんどの場合、グローバル フックの使用に対して誤ったアラームをトリガーします。
どんなアイデアでも大歓迎です。
c# - WW_MOUSE_LL フックが呼び出されない
現在、アプリケーション用の AFKChecker を作成しています。問題は、低レベルのマウス フックが呼び出されないことです。返さない0を返すかどうかを確認しました。そのため、キーボード フックは機能しますが、マウス フックは機能しません。私はグーグルで検索しましたが、私の問題の解決策はまだ見つかりません。
よろしくお願いします
c# - C# の低レベルのマウス フックとフォーム イベントの処理
VS 2010 で生成された、開始と停止の 2 つのボタンを含む単純なフォームを使用しています。Start は SetWindowsHookEx を使用して WH_MOUSE_LL をトリガーし、stop はフックを停止します。フックは正常に機能し、マウスの中ボタンのクリックをダブルクリックに「置き換える」ことができます。唯一の問題は、フォームの最小化/最大化/閉じるボタンをクリックすることです.上記のボタンによって呼び出されるフックとイベント。これらのボタンのいずれかを押すと、アクションが完了する前にしばらくの間「押された」ままになるという事実を反映しています(フォームの最小化など)。フォームを右クリックしてこれらのアクションのいずれかを選択すると、すぐに応答します。フックを停止して上記のボタンのいずれかを押すと、同じことが起こります。誰かがそのような行動に遭遇しましたか?
windows - 低レベルのマウスフック:キャプチャを妨げるアプリケーションの処理
EAのOriginストアとやり取りするときに、マウスフックコードが機能しないことに気づきました。SetWindowsHookEx
基本的に、ウィンドウ内をクリックしても、(関数を使用して)ウィンドウに登録したコールバックは呼び出されません。Steamで試してみましたが、問題ありません。
これは、不正なマルウェアがコンピュータを制御してアカウント情報にアクセスするのを防ぐためのメカニズムの一部であると確信しています。それがどのように行われるのか興味があります。私の推測では、ハードウェアに近いレイヤーからこれを回避するために、ドライバーの魔法を設定する必要がありますか?
免責事項:もちろん、私は悪意のあるソフトウェアを作成しようとはしていません。ソフトウェアの自動化を目的とした強力なツールを作成しているだけです。明らかに、大きな力には大きな責任が伴います。
c# - 低レベルのマウスフックC#から返された誤ったマウス座標
同じレンダリングレイヤーにフォーム要素を埋め込むために、いくつかのハッカーを使用してWPFアプリケーションを構築しています。基本的に、私が行うことは、フォームを画面外にレンダリングし、WPFイメージにフォームのモックアップを作成することです。また、フォームモックアップ宛ての場合にWPFアプリケーションからイベントを盗み、代わりにPostMessage(...)を使用してイベントを非表示のフォーム要素に送信する低レベルのマウスフックもあります。
イベントを食べることを示すゼロ以外の値をフックプロシージャから返すと(キュー内のすべてのマウスフックを呼び出したとしても)、カーソルが1つの位置に留まります。これは、イベントが到達していないある種のWPFアプリケーション層でカーソル位置が処理されるためだと思います。
カーソルの位置を自分で設定するだけでよいので、WPFアプリケーションがイベントをまったく認識しないようにするのは問題ないと思いました。結局のところ、マウスイベントには座標が付加されています。残念ながら、これらのマウスの座標はひどく間違っているようです。実際、カーソルがどこにあっても、常に同じ座標を受け取ります。
これが私のコードです:
}
次に、user.SystemMouseHookProc(...)で、正しいカーソル位置に続いてマウスフックで引っ張られた座標を出力します。出力は、常に次のようになります。
カーソル:523,578
{X = 1985777551、Y =1985777602}//この座標は変更されません
その出力は明らかに間違っています。マウスフックから正しいマウス座標を取得するにはどうすればよいですか?
ありがとうございました。
PSこのソリューションは、オンラインで人気のあるソリューションから派生しています。残念ながら、そのソリューションは私のニーズを満たしていないため、この形式に変更する必要がありました。