using System.Data; using System.Windows.Forms; using UAS_LabelMachine; using UAS_LabelMachine.Entity; using UAS_LabelMachine.PublicMethod; namespace UAS_Labeling.PublicMethod { /// /// Author zhangz 2016/12/30 /// 全局事件处理,通过句柄获取触发事件的控件 /// 结合捕获的全局的键盘事件来验证用户进行的操作 /// class GlobalEventsHandler : IMessageFilter { DataHelper dh; //鼠标左键点击 public const int WM_LBUTTONDOWN = 0x0201; //键盘敲击事件 public const int WM_KEYDOWN = 0x100; public bool PreFilterMessage(ref Message m) { //通过句柄去获取具体触发事件的控件 Control c = Control.FromHandle(m.HWnd); //可进行数据操作的控件需要进行权限的判断,结合WM_LBUTTONDOWN对按钮进行判断 if (c != null && m.Msg == WM_LBUTTONDOWN && c is RadioButton) { LogManager.DoLog("点击【" + c.Text + "】"); return CheckPower(c); } else return false; } /// /// 返回True表示消息已处理,不再往后传递 /// 返回False表示消息未处理,后续程序处理此事件 /// /// /// private bool CheckPower(Control c) { dh = new DataHelper(); if (User.UserAccountType != "admin") { if (dh.getRowCount("labelprintpower") > 0) { string sql = " select * from labelprintpower where lpp_emcode = '" + User.UserCode + "' and lpp_manual=1"; DataTable dt = (DataTable)dh.ExecuteSql(sql, "select"); if (dt.Rows.Count > 0) { switch (c.Name) { case "ManualCollection": break; default: break; } } else { MessageBox.Show("尚未配置权限,请与管理员联系", "提示"); return true; } } } return false; } } }