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 || c is Button))
{
LogManager.DoLog("点击【" + c.Text + "】");
return CheckPower(c);
}
else
return false;
}
///
/// 返回True表示消息已处理,不再往后传递
/// 返回False表示消息未处理,后续程序处理此事件
///
///
///
private bool CheckPower(Control c)
{
dh = SystemInf.dh;
if (User.UserAccountType != "admin")
{
{
string sql = " select nvl(lpp_manual,0)lpp_manual,nvl(lpp_cleandetail,0)lpp_cleandetail from labelprintpower where lpp_emcode = '" + User.UserCode + "'";
DataTable dt = (DataTable)dh.ExecuteSql(sql, "select");
if (dt.Rows.Count > 0)
{
switch (c.Name)
{
case "ManualCollection":
if (dt.Rows[0]["lpp_manual"].ToString() == "0")
{
MessageBox.Show("您没有手动采集的权限,请与管理员联系", "提示");
return true;
}
break;
case "ResetBarcode":
if (dt.Rows[0]["lpp_cleandetail"].ToString() == "0")
{
MessageBox.Show("您没有重置条码的权限,请与管理员联系", "提示");
return true;
}
break;
default:
break;
}
}
else
{
MessageBox.Show("尚未配置权限,请与管理员联系", "提示");
return true;
}
}
}
return false;
}
}
}