public FontForm() { InitializeComponent(); cloudJson = GetData.Get("https://download.3tme.cn/FontsInstall/data.json", true);//获取数据 if (cloudJson == "Error" || cloudJson == null) { FrmDialog.ShowDialog(this, "无法获取云端数据,下载链接与视频教程链接无法从云端获取\n\n已启用离线模式,链接均采用本地形式,如链接失效请访问:doc.3tme.cn\n\n", "Ares"); } else { fontsData = JsonConvert.DeserializeObject <FontsData>(cloudJson); } }
#pragma warning restore IDE0044 #region 登录窗口载入 /// <summary> /// 登录窗口载入 /// </summary> public LoginForm() { InitializeComponent(); //允许线程操作窗口控件 Control.CheckForIllegalCrossThreadCalls = false; //设置窗口的拖动 InitFormMove(this); InitFormMove(pictureBox); string cloudRoot = GetData.Get("https://download.3tme.cn/Ares/RootData.json", true);//获取WeiApi地址原始数据 //判断取回数据是否有错,有错则报错然后结束进程 if (cloudRoot == "Error" || cloudRoot == null) { this.Visible = false; this.Enabled = false; if (FrmDialog.ShowDialog(this, "Ares当前无法获取系统重要云端数据\n\n点击\"确定\"按钮为您打开相关解决方法的网页链接\n\n点击\"取消\"按钮退出Ares软件", "Ares - 致命错误", true) == DialogResult.OK) { System.Diagnostics.Process.Start("https://tz.3tme.cn/error-information/server-connection-failed.html"); } Environment.Exit(0); } Root = JsonConvert.DeserializeObject <RootData>(cloudRoot); //解析Json数据 webApiUrlData = Root.WebApiUrlData; //提取Root中的WebApi部分 Verify = new VerifyFunction(webApiUrlData); //实例化网络验证对象 //读取已保存卡密 var uKey = OperateIniFile.ReadIniData("Ares", "Key", "", "logindata.ini"); if (uKey.Length > 0) { ucTextBoxEx_Key.InputText = Decrypt.DES(uKey, "areskeys"); } //通过Lambda表达式创建线程获取云通知 Thread cloudNotificationThread = new Thread(() => { cloudNotificationData = Root.CloudNotificationData;//提取Root中的cloudNotificationData //判断信息框的操作 if (cloudNotificationData.MsgBox.Switch == "1") { switch (cloudNotificationData.MsgBox.Type) { case "1": { //仅弹窗提示 FrmDialog.ShowDialog(this, cloudNotificationData.MsgBox.Content.Replace("*", "\n"), cloudNotificationData.MsgBox.Title); break; } case "2": { //弹窗提示+是否打开链接 if (FrmDialog.ShowDialog(this, cloudNotificationData.MsgBox.Content.Replace("*", "\n"), cloudNotificationData.MsgBox.Title, true) == DialogResult.OK) { System.Diagnostics.Process.Start(cloudNotificationData.MsgBox.Link); } break; } case "3": { //直接打开链接 System.Diagnostics.Process.Start(cloudNotificationData.MsgBox.Link); break; } } } //判断按钮的操作,接下来的操作要写在按钮被点击的方法里 if (cloudNotificationData.Button.Switch == "1") { ucBtnExt_CloudNotification.Location = new Point(224, 485); //设置按钮位置正常 ucBtnExt_CloudNotification.BtnText = cloudNotificationData.Button.Text; } //判断标签的操作,接下来的操作要写在按钮被点击的方法里 if (cloudNotificationData.Label.Switch == "1") { label_CloudNotification.Location = new Point(-10, 494); //设置标签可视 label_CloudNotification.Text = cloudNotificationData.Label.Text; label_CloudNotification.ForeColor = Color.FromArgb(cloudNotificationData.Label.Color.R, cloudNotificationData.Label.Color.G, cloudNotificationData.Label.Color.B); } }); cloudNotificationThread.Start(); //通过Lambda表达式创建线程检测版本更新 Thread checkVersionThread = new Thread(() => { string result = Verify.VersionCheck(localVersion); //1为最新版,0为不是最新版,-1为出错 //1就直接跳出循环,0载入更新窗口,-1报错然后退出程序 //后期预想:0载入更新窗口,窗口中显示新版本更新内容,目前只要弹窗告诉不是最新版然后弹下载地址就好 switch (result) { case "1": { break; } case "0": { this.Visible = false; if (FrmDialog.ShowDialog(this, "检测到当前Ares版本不是最新版\n\n点击\"确定\"按钮为您打开最新版下载链接\n\n点击\"取消\"按钮退出Ares软件", "Ares - 版本更新", true) == DialogResult.OK) { System.Diagnostics.Process.Start("https://wp.3tme.cn/"); } Environment.Exit(0); break; } case "-1": { this.Visible = false; if (FrmDialog.ShowDialog(this, "Ares当前无法连接至验证服务器\n\n点击\"确定\"按钮为您打开相关解决方法的网页链接\n\n点击\"取消\"按钮退出Ares软件", "Ares - 致命错误", true) == DialogResult.OK) { System.Diagnostics.Process.Start("https://tz.3tme.cn/error-information/verify-server-connection-failed.html"); } Environment.Exit(0); break; } } }); checkVersionThread.Start(); }
public object _ToastLocker = new object(); //Toast通知锁 public MainForm(UserLoginData ud) { InitializeComponent(); userLoginData = ud; //允许线程操作窗口控件 Control.CheckForIllegalCrossThreadCalls = false; #region 设置窗口的拖动 //设置窗口的拖动 InitFormMove(this); InitFormMove(tabPage1); InitFormMove(tabPage2); InitFormMove(tabPage3); InitFormMove(tabPage4); InitFormMove(label_welcome); InitFormMove(label_leftTimelabel); InitFormMove(label_days); InitFormMove(label_leftTime); InitFormMove(ucPanelQuote_Bulletin); //InitFormMove(label_bulletin); #endregion List <KeyValuePair <string, string> > lstHL = new List <KeyValuePair <string, string> >(); lstHL.Add(new KeyValuePair <string, string>("1", " Ares ")); lstHL.Add(new KeyValuePair <string, string>("2", " 功能页面 ")); lstHL.Add(new KeyValuePair <string, string>("3", " 云端参数 ")); lstHL.Add(new KeyValuePair <string, string>("4", " 联系信息 ")); this.ucHorizontalList.DataSource = lstHL; //去除TagPage选项卡 this.tabControl.Region = new Region(new RectangleF(this.tabPage1.Left, this.tabPage1.Top, this.tabPage1.Width, this.tabPage1.Height)); //倒计时与判断到期线程 Thread countDownThread = new Thread(() => { TimeSpan ts = userLoginData.ExpiredTime.Subtract(Convert.ToDateTime(GetData.GetNetDateTime())); //VIP永久卡用户专属问候 if (ts.Days > 2) { label_days.Text = string.Format("{0} Days", ts.Days.ToString()); label_leftTime.Text = string.Format("{0} Hours,{1} Minutes,{2} Seconds", ts.Hours.ToString(), ts.Minutes.ToString(), ts.Seconds.ToString()); string sourceVIPData = GetData.Get("https://download.3tme.cn/Ares/VipData.json", true); VIPNotificationData vIPNotificationData = JsonConvert.DeserializeObject <VIPNotificationData>(sourceVIPData); if (vIPNotificationData.Switch == "1") { //替换{UserType} if (vIPNotificationData.Title.Contains("{UserType}")) { if (ts.Days > 365) { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{UserType}", "永久卡用户"); } else { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{UserType}", "VIP用户"); } } //替换{TimeGreeting} if (vIPNotificationData.Title.Contains("{TimeGreeting}")) { int hour = DateTime.Now.Hour; if (hour >= 0 && hour <= 6) { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{TimeGreeting}", vIPNotificationData.TimeGreeting.Midnight); } if (hour >= 7 && hour <= 12) { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{TimeGreeting}", vIPNotificationData.TimeGreeting.Noon); } if (hour >= 13 && hour <= 17) { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{TimeGreeting}", vIPNotificationData.TimeGreeting.AfterNoon); } if (hour >= 18 && hour <= 23) { vIPNotificationData.Title = vIPNotificationData.Title.Replace("{TimeGreeting}", vIPNotificationData.TimeGreeting.Evening); } } lock (_ToastLocker) { Toast.ShowNotifiy(vIPNotificationData.Title, vIPNotificationData.Text.Replace("*", Environment.NewLine), this.Icon, vIPNotificationData.Timeout); } } } //倒计时启动 label_days.Text = string.Format("{0} Days", ts.Days.ToString()); TimeSpan tss = new TimeSpan(0, 0, 0, 1); while (ts.TotalSeconds > 0) { ts = ts.Subtract(tss); label_days.Text = string.Format("{0} Days", ts.Days.ToString()); label_leftTime.Text = string.Format("{0} Hours,{1} Minutes,{2} Seconds", ts.Hours.ToString(), ts.Minutes.ToString(), ts.Seconds.ToString()); Thread.Sleep(1000); } //跳出了循环则说明到期了,结束CSGO进程并弹出到期网页 foreach (var csgoProcess in System.Diagnostics.Process.GetProcessesByName("notepad")) { try { // 杀掉这个进程 csgoProcess.Kill(); // 等待进程被杀掉 csgoProcess.WaitForExit(); } catch (InvalidOperationException) { // 进程已经退出或不存在 System.Diagnostics.Process.Start("https://tz.3tme.cn/error-information/expired.html"); this.Visible = false; Environment.Exit(0); } finally { System.Diagnostics.Process.Start("https://tz.3tme.cn/error-information/expired.html"); this.Visible = false; Environment.Exit(0); } } }); Thread bulletinThread = new Thread(() => { string sourceBulletin = LoginForm.Verify.GetBulletin(); bulletin = JsonConvert.DeserializeObject <CloudBulletin>(sourceBulletin); label_bulletin.Text = bulletin.Label.Content.Replace("*", Environment.NewLine); label_bulletin.ForeColor = Color.FromArgb(bulletin.Label.Color.R, bulletin.Label.Color.G, bulletin.Label.Color.B); if (bulletin.NotifyIcon.Switch == "1") { lock (_ToastLocker) { Toast.ShowNotifiy(bulletin.NotifyIcon.Title, bulletin.NotifyIcon.Text.Replace("*", Environment.NewLine), this.Icon, bulletin.NotifyIcon.Timeout); } } }); countDownThread.Start(); bulletinThread.Start(); }