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 Button)
{
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 LPP_CLEANDETAIL,LPP_GENCODE,LPP_LABELMATAIN,LPP_SAVEDETAIL,LPP_COLLECTSTRATEGY,LPP_ALLCOLLECT from labelprintpower left join employee on em_code = lpp_emcode where lpp_emcode = '" + User.UserCode + "'";
DataTable dt = (DataTable)dh.ExecuteSql(sql, "select");
if (dt.Rows.Count > 0)
{
switch (c.Text)
{
case "采集策略设置":
if (dt.Rows[0]["LPP_COLLECTSTRATEGY"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
case "生成条码":
if (dt.Rows[0]["LPP_GENCODE"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
case "标签维护":
if (dt.Rows[0]["LPP_LABELMATAIN"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
case "保存明细":
if (dt.Rows[0]["LPP_SAVEDETAIL"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
case "清除明细":
if (dt.Rows[0]["LPP_CLEANDETAIL"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
case "全部已采":
if (dt.Rows[0]["LPP_ALLCOLLECT"].ToString() != "1")
{
MessageBox.Show("没有" + c.Text + "的权限");
return true;
}
break;
default:
break;
}
}
else {
MessageBox.Show("尚未配置权限,请与管理员联系");
return true;
}
}
}
return false;
}
}
}