1.首先需要定义一个类实现IMessageFilter接口,结合固定的操作变量来判断具体对那哪个控件进行了什么操作,结合自定义的控件拓展的权限的字段可进行权限的标识
class GlobalEventsHandler : IMessageFilter { //鼠标左键点击 public const int WM_LBUTTONDOWN = 0x0201; //键盘敲击事件 public const int WM_KEYDOWN = 0x100; public bool PreFilterMessage(ref Message m) { //此处可获取全局的控件操作 Control c = Control.FromHandle(m.HWnd); if(m.Msg == WM_LBUTTONDOWN){ //鼠标左键点击按钮 if(c is Button) { if(CheckPower(C)) { //表示事件到此未被处理,继续执行用户后序功能代码 return false; }else { //表示事件到此已被处理,不再执行后续代码 return true; } } } }
2.在应用程序的启动入口添加对程序的监听
static void Main() { Application.EnableVisualStyles(); GlobalEventsHandler g = new GlobalEventsHandler(); //添加全局事件的监听 Application.AddMessageFilter(g); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
时间: 2024-08-01 21:22:12