WinForm通过句柄进行权限的控制
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());
}