c#全应用程序鼠标左键单击事件
本文关键字:单击 事件 鼠标 应用程序 | 更新日期: 2023-09-27 18:12:38
我想在窗体中的任何地方单击鼠标左键时播放声音,而不必在窗体中的每个控件上放置鼠标单击事件。有办法做到这一点吗?
您可以在使用IMessageFilter接口将Windows通知分派给具有焦点的控件之前检测它。让它看起来像这样:
public partial class Form1 : Form, IMessageFilter {
public Form1() {
InitializeComponent();
Application.AddMessageFilter(this);
this.FormClosed += delegate { Application.RemoveMessageFilter(this); };
}
public bool PreFilterMessage(ref Message m) {
// Trap WM_LBUTTONDOWN
if (m.Msg == 0x201) {
System.Diagnostics.Debug.WriteLine("BEEP!");
}
return false;
}
}
应该可以了
const int WM_PARENTNOTIFY = 0x210;
const int WM_LBUTTONDOWN = 0x201;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_LBUTTONDOWN || (m.Msg == WM_PARENTNOTIFY && (int)m.WParam == WM_LBUTTONDOWN))
DoIt();
base.WndProc(ref m);
}
这个项目对于您的需求来说可能是多余的(因为它钩子全局鼠标事件,而不仅仅是窗体上的事件),但我认为它显示了您需要的基本内容。
Case WM_PARENTNOTIFY选择Case Wparam案例513 ' wm_lbuttdownPlaySoundASelect
使用Vb或Vba