WinForm C# アプリケーションで MouseEvents に問題があります。
アプリケーションですべてのマウス クリックを取得したいのですが、すべての子コンポーネントにリスナーを配置したり、Windows マウス フックを使用したりしたくありません。
Flash では、ステージにリスナーを配置して、ムービーのすべての MouseEvent を取得できます。
C# にそのようなものはありますか? グローバルな MouseListener?
編集:
IMessageFilter からこのクラスを作成し、Application.AddMessageFilter を使用します。
public class GlobalMouseHandler : IMessageFilter{
private const int WM_LBUTTONDOWN = 0x201;
public bool PreFilterMessage(ref Message m){
if (m.Msg == WM_LBUTTONDOWN) {
// Do stuffs
}
return false;
}
}
そして、グローバル クリックをリッスンする必要があるコントロールにこのコードを配置します。
GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);