示例#1
0
文件: FrmMain.cs 项目: sczhaoyu/mh
 //委托实现
 public void CallBackHandle(LoadDll.MhMsg m)
 {
     //压入队列先进先出
     byte[] ret = StringUtil.GetPtrData((IntPtr)m.addr, m.len);
     m.body = ret;
     mhMsgQue.Add(m);
 }
示例#2
0
文件: FrmMain.cs 项目: sczhaoyu/mh
        /// <summary>
        /// 回复消息处理
        /// </summary>
        /// <param name="m"></param>
        public void recvMsgHandle(LoadDll.MhMsg m)
        {
            //来源窗口
            IntPtr formWind = (IntPtr)m.hwnd;
            //0收,1发
            int type = m.type;

            //取出数据长度大小
            int size = m.body.Length;

            byte[] data = m.body;

            //判断数据包是否显示
            bool ret = true;

            if (cbxFilert.Checked)
            {
                ret = FilertMsgData(data, type);
            }
            //处理回应的包
            mh_excute[formWind].switchExecute(type, data);

            model.MhxyLog ml = new model.MhxyLog(type, data);

            //判断是否入库保存
            if (saveDB)
            {
                //判断是否需要过滤
                if (cbx_db_filert.Checked == true && ret == false)
                {
                    return;
                }
                ml.Save(Global.save_table);
            }

            //判断已知分类是否开启,开启后指显示已知分类
            if (cbxShowType.Checked && type != 1)
            {
                if (mapFilert.ContainsKey(data[0]) == false)
                {
                    return;
                }
            }
            if (!ret)
            {
                return;
            }
            //判断是否只显示当前
            if (cbx_current.Checked == true)
            {
                if (formWind.ToInt32() != current_mh.ToInt32())
                {
                    return;
                }
            }
            //判断是否只显示发包
            if (cbx_recv.Checked && type == 0)
            {
                return;
            }
            if (revStatus)
            {
                ListViewItem lt = new ListViewItem();
                //将数据库数据转变成ListView类型的一行数据
                lt.Text = (lv_pkg.Items.Count + 1).ToString();
                lt.SubItems.Add(data.Length.ToString());
                if (type == 0)
                {
                    lt.SubItems.Add("收");
                }
                if (type == 1)
                {
                    lt.SubItems.Add("发");
                }
                if (type == 2)
                {
                    lt.SubItems.Add("替");
                }

                lt.SubItems.Add(mhxy.Common.GetMHName(formWind.ToInt32()));
                lt.SubItems.Add(StringUtil.FormatHexStyle(StringUtil.byteToHexStr(data)));
                //将lt数据添加到listView1控件中
                lv_pkg.Items.Add(lt);
                lv_pkg.EnsureVisible(lv_pkg.Items.Count - 1);
            }
        }