Beispiel #1
0
        public WxIpad()
        {
            this.dllIP   = ConfigHelper.Get("DllPort", "ip");
            this.dllPort = int.Parse(ConfigHelper.Get("DllPort", "port"));

            outputDelegate += MessageCall;

            Task.Factory.StartNew(() =>
            {
                try
                {
                    this.Init();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    MsgDelegate.Show($"error:{e.Message}");
                    throw;
                }
            });

            _tmpHeartBeatTimer = new System.Threading.Timer(HeartBeatCallBack, null, mHeartBeatInterval, mHeartBeatInterval);

            _tmpReConnectionTimer = new System.Threading.Timer(ReConnectionCallBack, null, mReConnectionInterval, mReConnectionInterval);
        }
Beispiel #2
0
        /// <summary>
        /// 訂閱
        /// </summary>
        /// <param name="MsgDelegate"></param>
        /// <param name="msgName"></param>
        public void AddObserver(MsgDelegate MsgDelegate, string MsgName)
        {
            if (String.IsNullOrEmpty(MsgName))
            {
                throw new ArgumentNullException(@"Null Msg Name");
            }
            if (MsgDelegate == null)
            {
                throw new ArgumentNullException(@"Null Msg Delegate");
            }


            //var delegatesCollection = (List<MsgDelegate>)m_Hashtable[MsgName];
            //if (delegatesCollection == null)
            //{
            //    delegatesCollection = new List<MsgDelegate>();
            //    m_Hashtable.Add(MsgName, delegatesCollection);
            //}
            //delegatesCollection.Add(MsgDelegate);
            if (!m_Hashtable.ContainsKey(MsgName))
            {
                m_Hashtable.Add(MsgName, new List <MsgDelegate>());
            }
            m_Hashtable[MsgName].Add(MsgDelegate);
        }
Beispiel #3
0
    public static void AddListener(string name, MsgDelegate msg)
    {
        if (!dic.ContainsKey(name))
        {
            dic.Add(name, null);
        }

        dic[name] = (MsgDelegate)dic[name] + msg;
    }
Beispiel #4
0
 /// <summary>
 /// 消息回调
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 private int MessageCall(int a, int b)
 {
     if (b == -1)
     {
         MsgDelegate.Show($"用户已退出");
         return(0);
     }
     MsgDelegate.Show($"消息:a={a}, b={b}");
     return(0);
 }
Beispiel #5
0
 /// <summary>
 /// 发消息 -文字
 /// </summary>
 /// <param name="wxid"></param>
 /// <param name="content"></param>
 public unsafe void Sendmsg(string wxid, string content)
 {
     MsgDelegate.Show(string.Format("发送文字 {0}", content));
     content = content.Replace(" ", "\r\n");
     fixed(int *WxUser = &wxUser, Msgptr = &msgptr)
     {
         IpadDll.WXSendMsg(wxUser, wxid, content, null, (int)Msgptr);
         //var datas = MarshalNativeToManaged((IntPtr)msgptr);
         //var str = datas.ToString();
         WXReleaseEX(ref msgptr);
     }
 }
Beispiel #6
0
        /// <summary>
        /// Konstruktor, legt neue KnxNet Connection an, diese wird aber noch nicht geöffnet
        /// </summary>
        public KnxNetConnection()
        {
            QueueEnable = false;
            Err         = LogIntern;
            Debug       = LogIntern;
            Info        = LogIntern;

            InitUdp();
            timerHeartbeat = new System.Timers.Timer(10000);
            Debug("Heartbeat auf " + timerHeartbeat.Interval / 1000 + " sbyte gesetzt");
            timerHeartbeat.Elapsed += new ElapsedEventHandler(OnTimedEventHeartbeat);
        }
Beispiel #7
0
    public static void RemoveListener(string name, MsgDelegate msg)
    {
        if (dic.ContainsKey(name))
        {
            dic[name] = (MsgDelegate)dic[name] - msg;

            if (dic[name] == null)
            {
                dic.Remove(name);
            }
        }
    }
Beispiel #8
0
 public void AddMessage(string message)
 {
     if (richTextBox1.InvokeRequired)//不能访问就创建委托
     {
         MsgDelegate d = new MsgDelegate(AddMessage);
         richTextBox1.Invoke(d, new object[] { message });
     }
     else
     {
         richTextBox1.AppendText(message + Environment.NewLine);
         richTextBox1.ScrollToCaret();
     }
 }
Beispiel #9
0
    public static void Involve(string name)
    {
        Delegate _callback;

        if (dic.TryGetValue(name, out _callback))
        {
            MsgDelegate callback = (MsgDelegate)_callback;

            if (callback != null)
            {
                callback();
            }
        }
    }
Beispiel #10
0
        public void SendMsg(string msg)
        {
            //bind the method china
            MsgDelegate msgdel = new MsgDelegate(china.MsgToChina);

            msgdel += new MsgDelegate(Pak.MsgToPak);
            //invoke china method
            msgdel(msg);
            msgdel += new MsgDelegate(delegate(string m){
                Console.WriteLine(m);
            });
            //bind to pak
            //msgdel= new MsgDelegate(Pak.MsgToPak);
            //invoke pak method
            //msgdel(msg);
        }
Beispiel #11
0
        public void RemoveErrObserver(MsgDelegate MsgDelegate)
        {
            if (MsgDelegate == null)
            {
                throw new ArgumentNullException(@"Null Notification Delegate");
            }

            //var delegatesCollection = (List<MsgDelegate>)m_Hashtable[ERR];
            //if (delegatesCollection != null)
            //{
            //    delegatesCollection.Remove(MsgDelegate);
            //}
            if (m_Hashtable.ContainsKey(ERR))
            {
                m_Hashtable[ERR].Remove(MsgDelegate);
            }
            //m_Hashtable?[ERR]?.Remove(MsgDelegate);
        }
Beispiel #12
0
        public void AddErrObserver(MsgDelegate MsgDelegate)
        {
            if (MsgDelegate == null)
            {
                throw new ArgumentNullException(@"Null Msg Delegate");
            }

            //var delegatesCollection = (List<MsgDelegate>)m_Hashtable[ERR];
            //if (delegatesCollection == null)
            //{
            //    delegatesCollection = new List<MsgDelegate>();
            //    m_Hashtable.Add(ERR, delegatesCollection);
            //}
            //delegatesCollection.Add(MsgDelegate);
            if (!m_Hashtable.ContainsKey(ERR))
            {
                m_Hashtable.Add(ERR, new List <MsgDelegate>());
            }
            m_Hashtable[ERR].Add(MsgDelegate);
        }
Beispiel #13
0
        private Bitmap Base64StringToImage(string basestr)
        {
            Bitmap bitmap = null;

            try
            {
                String       inputStr = basestr;
                byte[]       arr      = Convert.FromBase64String(inputStr);
                MemoryStream ms       = new MemoryStream(arr);
                Bitmap       bmp      = new Bitmap(ms);
                ms.Close();
                bitmap = bmp;
            }
            catch (Exception ex)
            {
                MsgDelegate.Show("图片转换失败:" + ex.Message);
            }

            return(bitmap);
        }
Beispiel #14
0
        public WxIpad()
        {
            this.dllIP   = ConfigHelper.Get("DllPort", "ip");
            this.dllPort = int.Parse(ConfigHelper.Get("DllPort", "port"));

            outputDelegate += MessageCall;

            Task.Factory.StartNew(() =>
            {
                try
                {
                    this.Init();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    MsgDelegate.Show($"error:{e.Message}");
                    throw;
                }
            });
        }
Beispiel #15
0
        /// <summary>
        /// 取消
        /// </summary>
        /// <param name="MsgDelegate"></param>
        /// <param name="MsgName"></param>
        public void RemoveObserver(MsgDelegate MsgDelegate, string MsgName)
        {
            if (String.IsNullOrEmpty(MsgName))
            {
                throw new ArgumentNullException(@"Null Msg Name");
            }
            if (MsgDelegate == null)
            {
                throw new ArgumentNullException(@"Null Msg Delegate");
            }

            //var delegatesCollection = (List<MsgDelegate>)m_Hashtable[MsgName];
            //if (delegatesCollection != null)
            //{
            //    delegatesCollection.Remove(MsgDelegate);
            //}
            if (m_Hashtable.ContainsKey(MsgName))
            {
                m_Hashtable[MsgName].Remove(MsgDelegate);
            }
            //m_Hashtable?[MsgName]?.Remove(MsgDelegate);
        }
Beispiel #16
0
 /// <summary>
 /// Setzt die Funktion, an die Logausgaben übergeben werden sollen
 /// wird keine angegeben so wird LogIntern verwendet
 /// </summary>
 /// <param name="ErrFunction"></param>
 public void SetErrFunction(MsgDelegate ErrFunction)
 {
     Err = ErrFunction;
 }
Beispiel #17
0
        unsafe void Init()
        {
            this._userStatus = WechatUserStatus.Initing;
            fixed(int *WxUser = &wxUser, PushStr = &pushStr)
            {
                string uuid = IpadDll.FakeUuId();
                var    mac  = IpadDll.FakeMac();

                //var ret = IpadDll.WXSetNetworkVerifyInfo("116.62.17.77", 9000);//ipadtest
                var ret = IpadDll.WXSetNetworkVerifyInfo(this.dllIP, this.dllPort);

                if (ret != 1)
                {
                    MsgDelegate.Show("授权失败:" + ret);
                    return;
                }
                var key = string.Format(@"<softtype><k3>9.0.2</k3><k9>iPad</k9><k10>2</k10><k19>58BF17B5-2D8E-4BFB-A97E-38F1226F13F8</k19><k20>{0}</k20><k21>neihe_5GHz</k21><k22>(null)</k22><k24>{1}</k24><k33>\345\276\256\344\277\241</k33><k47>1</k47><k50>1</k50><k51>com.tencent.xin</k51><k54>iPad4,4</k54></softtype>", uuid, mac);

                IpadDll.WXInitialize((int)WxUser, "鎴戠殑IPAD", key, uuid);
                IpadDll.WXSetRecvMsgCallBack(wxUser, outputDelegate);

                IpadDll.WXGetQRCode(wxUser, (int)PushStr);

                var         msg    = Marshal.PtrToStringAnsi(new IntPtr(Convert.ToInt32(pushStr)));
                WxQrCodeDto qrcode = Newtonsoft.Json.JsonConvert.DeserializeObject <WxQrCodeDto>(msg);//反序列化

                //var img = Base64StringToImage(qrcode.QrCode);
                MsgDelegate.QrLogin(qrcode.QrCode);

                WXReleaseEX(ref pushStr);
                WxQrResultDto qrCoderesult = null;

                while (true)
                {
                    if (!(this._userStatus == WechatUserStatus.Initing || this._userStatus == WechatUserStatus.Scaning))
                    {
                        break;
                    }
                    this._userStatus = WechatUserStatus.Scaning;
                    IpadDll.WXCheckQRCode(wxUser, (int)PushStr);
                    var datas = MarshalNativeToManaged((IntPtr)pushStr);
                    if (datas == null)
                    {
                        continue;
                    }
                    string sstr = datas.ToString();
                    qrCoderesult = Newtonsoft.Json.JsonConvert.DeserializeObject <WxQrResultDto>(sstr);
                    WXReleaseEX(ref pushStr);
                    bool breakok = false;
                    switch (qrCoderesult.Status)
                    {
                    case 0: MsgDelegate.Show("请扫描二维码"); break;

                    case 1: MsgDelegate.Show("请点在手机上点确认"); break;

                    case 2: MsgDelegate.Show("正在登录中.."); breakok = true; break;

                    case 3: MsgDelegate.Show("已过期"); break;

                    case 4: MsgDelegate.Show("取消操作了"); breakok = true; break;
                    }
                    if (breakok)
                    {
                        break;
                    }
                }

                if (qrCoderesult.Status == 2)
                {
                    var username = qrCoderesult.UserName;
                    this.user.wxid = qrCoderesult.UserName;
                    this.user.name = qrCoderesult.NickName;
                    var pass = qrCoderesult.Password;
                    IpadDll.WXQRCodeLogin(wxUser, username, pass, (int)PushStr);
                    var    datas = MarshalNativeToManaged((IntPtr)pushStr);
                    string sstr  = datas.ToString();
                    WXReleaseEX(ref pushStr);
                    WxUserDataDto userdata = Newtonsoft.Json.JsonConvert.DeserializeObject <WxUserDataDto>(sstr);//反序列化
                    if (userdata.Status == -301)
                    {
                        Thread.Sleep(1000);
                        IpadDll.WXQRCodeLogin(wxUser, username, pass, (int)PushStr);
                        datas = MarshalNativeToManaged((IntPtr)pushStr);
                        sstr  = datas.ToString();
                        WXReleaseEX(ref pushStr);
                        MsgDelegate.Show("微信重定向");
                        userdata = Newtonsoft.Json.JsonConvert.DeserializeObject <WxUserDataDto>(sstr);//反序列化

                        if (userdata.Status == 0)
                        {
                            this._userStatus = WechatUserStatus.Logined;
                            MsgDelegate.Show("登录成功");
                            IpadDll.WXHeartBeat(wxUser, (int)PushStr);
                            datas = MarshalNativeToManaged((IntPtr)pushStr);
                            sstr  = datas.ToString();
                            WXReleaseEX(ref pushStr);

                            MsgDelegate.UserLogin(userdata);
                            Task.Run(new Action(this.SyncList));
                            return;
                        }
                        else
                        {
                            this._userStatus = WechatUserStatus.Failed;
                            MsgDelegate.UserLogin(null);
                            MsgDelegate.Show("登录失败");
                        }
                    }

                    if (userdata.Status == 0)
                    {
                        this._userStatus = WechatUserStatus.Logined;
                        MsgDelegate.Show("登录成功");
                        IpadDll.WXHeartBeat(wxUser, (int)PushStr);
                        datas = MarshalNativeToManaged((IntPtr)pushStr);
                        sstr  = datas.ToString();
                        WXReleaseEX(ref pushStr);

                        MsgDelegate.UserLogin(userdata);
                        Task.Run(new Action(this.SyncList));
                        return;
                    }
                    else
                    {
                        this._userStatus = WechatUserStatus.Failed;
                        MsgDelegate.UserLogin(null);
                        MsgDelegate.Show("登录失败");
                    }
                }
                else
                {
                    this._userStatus = WechatUserStatus.Failed;
                    MsgDelegate.UserLogin(null);
                    MsgDelegate.Show("登录失败");
                }
            }
        }
Beispiel #18
0
 public static void SetDebugTo(MsgDelegate DebugFunction)
 {
     Debug = DebugFunction;
 }
Beispiel #19
0
 /// <summary>
 /// Setzt die Funktion, an die Logausgaben übergeben werden sollen
 /// wird keine angegeben so wird LogIntern verwendet
 /// </summary>
 /// <param name="LogFunction"></param>
 public void SetInfoFunction(MsgDelegate InfoFunction)
 {
     Info = InfoFunction;
 }
Beispiel #20
0
 /// <summary>
 /// Setzt die Funktion, an die Debugausgaben übergeben werden sollen
 /// wird keine angegeben so wird LogIntern verwendet
 /// </summary>
 /// <param name="LogFunction"></param>
 public void SetDebugFunction(MsgDelegate DebugFunction)
 {
     Debug = DebugFunction;
 }