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); }
/// <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); }
public static void AddListener(string name, MsgDelegate msg) { if (!dic.ContainsKey(name)) { dic.Add(name, null); } dic[name] = (MsgDelegate)dic[name] + msg; }
/// <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); }
/// <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); } }
/// <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); }
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); } } }
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(); } }
public static void Involve(string name) { Delegate _callback; if (dic.TryGetValue(name, out _callback)) { MsgDelegate callback = (MsgDelegate)_callback; if (callback != null) { callback(); } } }
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); }
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); }
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); }
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); }
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; } }); }
/// <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); }
/// <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; }
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("登录失败"); } } }
public static void SetDebugTo(MsgDelegate DebugFunction) { Debug = DebugFunction; }
/// <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; }
/// <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; }