old_flsystem/PCRobot/PCRobotForm.cs

1284 lines
53 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using CsharpHttpHelper;
using PCRobot.Pack;
using PCRobot.PCWechat;
using PCRobot.Utils;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using PCRobot.PCWechat.Enterprise;
using PCRobot.PCWechat.Routine;
using WechatHelper;
2022-09-20 03:10:29 +00:00
namespace PCRobot
{
public partial class PCRobotForm : Form
{
/// <summary>
/// 微信关闭事件触发的委托,实现主窗体弹窗
/// </summary>
public static Action<string> ErrorMessAction;
public PCRobotForm()
{
InitializeComponent();
}
/// <summary>
/// 允许上传的接口
/// </summary>
public static List<string> AnalysisTypes = new List<string>();
public static bool IsHaveRead = false;
private void PCRobotForm_Load(object sender, EventArgs e)
{
2023-02-05 08:53:12 +00:00
try
{
2023-04-06 01:07:55 +00:00
//Common.MainExeHandle = this.Handle;
2022-09-20 03:10:29 +00:00
try
{
List<string> files = new List<string>();
files.Add(HttpExtend.MapFile(@"7l_0W.exe"));
files.Add(HttpExtend.MapFile(@"OnlineUpdate.exe"));
files.Add(HttpExtend.MapFile(@"OnlineUpdate.xml"));
files.Add(HttpExtend.MapFile(@"VersionUpdate.exe"));
2022-11-12 08:55:55 +00:00
files.Add(HttpExtend.MapFile(@"VersionUpdate.xml"));
2022-09-20 03:10:29 +00:00
files.Add(HttpExtend.MapFile(@"OnlineUpdate.exe"));
//files.Add(Util.MapFile(@"WeiQ.Framework.dll", @"Assembly\apifile"));
//files.Add(Util.MapFile(@"Browser.dll", @"Assembly\apifile\Library"));
2022-09-20 03:10:29 +00:00
foreach (var item in files)
{
try
{
File.Delete(item);
}
catch (Exception ex)
{
}
2022-09-20 03:10:29 +00:00
}
}
catch (Exception)
{ }
2022-12-17 04:53:10 +00:00
//try
//{
// //删除缓存目录
// Common.DeleteDir(HttpExtend.MapPath(@"Cache"));
// LogHelper.GetSingleObj().Info("删除缓存目录", $"定时删除缓存目录执行完毕");
//}
//catch (Exception)
//{
// LogHelper.GetSingleObj().Info("删除缓存目录", $"定时删除缓存目录执行失败");
//}
2022-09-20 03:10:29 +00:00
Wechat_Xiaoxie.ClickEvent += SystemLoginWechat;
IniData();
2022-09-20 03:10:29 +00:00
this.label5.Text = "版本:" + Common.CurVersion;
if (string.IsNullOrWhiteSpace(Config.GetValue("设置", "静态")))
{
Config.SetValue("设置", "静态", "FALSE");
}
checkBox1.Checked = Config.GetValue("设置", "静态").ToUpper() != "TRUE";
2022-09-29 09:31:57 +00:00
2022-09-20 03:10:29 +00:00
if (Config.GetValue("设置", "内部").ToUpper() == "TRUE")
{
#region
var temp =
"MT_USER_LOGIN,MT_USER_LOGOUT,MT_DATA_CHATROOM_MEMBERS_MSG,MT_DATA_CHATROOMS_MSG,MT_DATA_FRIENDS_MSG,MT_DATA_WXID_MSG";
2022-09-20 03:10:29 +00:00
if (Common.AppConfig_ExistItem("AnalysisTypes"))
temp = Common.AppConfig_Get("AnalysisTypes");
else
Common.AppConfig_Add("AnalysisTypes", temp);
AnalysisTypes = temp.Replace("", ",")
.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Select(f => f.Trim().ToUpper()).ToList();
2022-09-20 03:10:29 +00:00
richTextBox1.Text = Common.AppConfig_Get("AnalysisTypes");
2022-09-20 03:10:29 +00:00
#endregion
#region
2022-09-20 03:10:29 +00:00
var temp2 = "0";
if (Common.AppConfig_ExistItem("IsHaveRead"))
temp2 = Common.AppConfig_Get("IsHaveRead");
else
Common.AppConfig_Add("IsHaveRead", "0");
IsHaveRead = checkBox2.Checked = temp2 == "1";
2022-09-20 03:10:29 +00:00
#endregion
try
{
if (!Common.AppConfig_ExistItem("RunAppName"))
Common.AppConfig_Add("RunAppName", "易转发");
}
catch (Exception exception)
{ }
2022-09-20 03:10:29 +00:00
}
else
tabPage3.Parent = null;
ErrorMessAction = ErrorMess;
//设置标题
var title = Regex.Replace(Process.GetCurrentProcess().MainModule.ModuleName, ".exe", "",
RegexOptions.IgnoreCase);
2022-09-20 03:10:29 +00:00
if (string.IsNullOrWhiteSpace(title) || title.Contains("易转发"))
title = Util.GetRandomString(5);
this.Text = title;
//this.Text = Guid.NewGuid().ToString("N");
}
catch (Exception ex)
{
MessageBox.Show("异常 = " + ex.Message + " --- " + ex.StackTrace);
}
2022-09-20 03:10:29 +00:00
2023-04-06 01:07:55 +00:00
try
{
//WeChatActivateHelperV2.Init(2);
//注册自动激活微信窗口,防延迟
WeChatHelper.Init(2);
WeChatHelper.RestoreWeChat();
}
catch (Exception exception)
{ }
//try
//{
// //自动切换聊天对象
// var th = new Thread(OnHandle);
// th.IsBackground = true;
// th.Start();
// //切换窗口
// var th1 = new Thread(OnActivationHandle);
// th1.IsBackground = true;
// th1.Start();
// //发送消息
// var th2 = new Thread(OnSendHandle);
// th2.IsBackground = true;
// th2.Start();
//}
//catch
//{ }
2022-09-20 03:10:29 +00:00
}
2022-10-03 07:36:59 +00:00
List<string> userNameList = new List<string>() { "gh_3dfda90e39d6"/*, "gh_7aac992b0363"*/ };
private Dictionary<string, bool> PublicUserCache = new Dictionary<string, bool>();
2022-09-29 09:31:57 +00:00
private Dictionary<string, DateTime> SendCache = new Dictionary<string, DateTime>();
private void OnSendHandle()
{
while (true)
{
2022-10-03 07:36:59 +00:00
Thread.Sleep(1000 * 60 * new Random(Guid.NewGuid().GetHashCode()).Next(5, 10));
StringBuilder sb = new StringBuilder();
try
{
if (Config.GetValue("设置", "静态").ToUpper() == "TRUE")
{
continue;
}
sb.Append("开启激活;");
var users = WechatClient.Users.Values.ToList();
if (users.Count <= 0)
{
continue;
}
sb.Append($"{users.Count}个微信;");
foreach (var user in users)
{
try
{
var client = WechatClient.GetApi(user);
if (client != null)
{
if (client.User.Type == WechatType.Xiaoxie_QY)
{
continue;
}
var robot = client as Wechat_Xiaoxie;
if (robot != null)
{
2022-10-03 07:36:59 +00:00
//var index = new Random(Guid.NewGuid().GetHashCode()).Next(0, userNameList.Count);
//var index = new Random(Guid.NewGuid().GetHashCode()).Next(0, userNameList.Count);
var index = 0;
var username = userNameList[index];
if (username.StartsWith("gh_", StringComparison.CurrentCultureIgnoreCase))
{
if (!PublicUserCache.ContainsKey(username))
{
PublicUserCache[username] = true;
robot.AddPublicUser(username);
Thread.Sleep(1000);
}
}
2022-09-29 09:31:57 +00:00
var mess = string.Empty;
var time = DateTime.Now.AddSeconds(-1);
if (SendCache.ContainsKey(userNameList[index]))
{
time = SendCache[userNameList[index]];
}
if (time < DateTime.Now)
{
SendCache[userNameList[index]] = DateTime.Now.AddDays(1);
mess = "正在测试消息速度,不用紧张哦!";
}
else
{
mess = DateTime.Now.AddSeconds(-new Random(Guid.NewGuid().GetHashCode()).Next(1000000, 9000000)).ToString("HHmmssffffdd");
}
sb.Append($"{robot.User.Nickname}({robot.User.Wxid})执行发送");
2022-09-29 09:31:57 +00:00
robot.SendMessage(userNameList[index], mess);
//robot.SendMessage(userNameList[index], DateTime.Now.AddSeconds(-new Random(Guid.NewGuid().GetHashCode()).Next(1000000, 9000000)).ToString("HHmmssffffdd"));
}
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("激活", ex.Message);
}
finally
{
LogHelper.GetSingleObj().Info("定时消息", sb.ToString());
}
Thread.Sleep(500);
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("激活", ex.Message);
}
}
}
private void OnActivationHandle()
{
return;
while (true)
{
Thread.Sleep(1000 * 60);
try
{
if (Config.GetValue("设置", "静态").ToUpper() != "TRUE")
{
Common.ActivateWindow();
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("EnableError", $"{ex.Message} - {ex.StackTrace}");
}
}
}
2022-09-20 03:10:29 +00:00
/// <summary>
/// 切换聊天对象
/// </summary>
private void OnHandle()
{
return;
List<string> userNameList = new List<string>() { "newsapp", "weixin", "notifymessage" };
while (true)
{
try
{
Thread.Sleep(1000 * (new Random(Guid.NewGuid().GetHashCode()).Next(120, 300)));
var users = WechatClient.Users.Values.ToList();
if (users.Count <= 0)
{
continue;
}
if (Config.GetValue("设置", "静态").ToUpper() == "TRUE")
{
continue;
}
foreach (var user in users)
{
try
{
var client = WechatClient.GetApi(user);
if (client != null)
{
if (client.User.Type == WechatType.Xiaoxie_QY)
{
continue;
}
var robot = client as Wechat_Xiaoxie;
if (robot != null)
{
var index = new Random(Guid.NewGuid().GetHashCode()).Next(0, userNameList.Count - 1);
robot.ToChatWindow(userNameList[index]);
}
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("激活", ex.Message);
}
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("激活", ex.Message);
}
}
}
private void SystemLoginWechat(string TagName, string TagMsg)
{
this.Invoke(new Action(delegate
{
if (TagName == "开始登录")
{
this.label7.Text = TagMsg;
this.label7.Visible = true;
}
else this.label7.Visible = false;
}));
}
private void ErrorMess(string mess)
{
try
{
MessageBox.Show(mess);
}
catch (Exception ex)
{ }
}
//易转发,被双击
private void _DoubleClick(object sender, EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
}
//窗体发生改变
private void PCRobotForm_SizeChanged(object sender, EventArgs e)
{
//判断是否选择的是最小化按钮
if (WindowState == FormWindowState.Minimized)
{
//托盘显示图标等于托盘图标对象
//注意notifyIcon1是控件的名字而不是对象的名字
this..Visible = true;
//隐藏任务栏区图标
this.ShowInTaskbar = false;
}
else this..Visible = false;
}
IniHelper Config = null;
//初始化界面
private void IniData()
{
try
{
var fileName = HttpExtend.MapFile("服务器配置.ini", "Config");
Config = new IniHelper(fileName);
textBox1.Text = Config.GetValue("服务器信息", "IP");
textBox2.Text = Config.GetValue("服务器信息", "Port");
textBox3.Text = Config.GetValue("秘钥", "SecretKey");
2022-10-03 07:50:37 +00:00
//WechatClient.IsDebug = Config.GetValue("设置", "调试").ToUpper() == "TRUE";
WechatClient.IsDebug = true;
2022-09-20 03:10:29 +00:00
try
{
var typeStr = Config.GetValue("设置", "备用").ToLower();
if (!string.IsNullOrWhiteSpace(typeStr))
{
BeiyongType type;
if (!Enum.TryParse<BeiyongType>(typeStr, out type))
WechatClient.BeiYongT = BeiyongType.;
else
WechatClient.BeiYongT = type;
}
}
catch (Exception)
{ }
WechatClient.IsGzh = Config.GetValue("设置", "公众号").ToUpper() == "TRUE";
WechatClient.IsLog = Config.GetValue("设置", "日志").ToUpper() == "TRUE";
WechatClient.RefUserEvent = RefUserMethod;
WechatClient.Install();//安装微信,初始化注入
EasySoc.GetSocket().Connection(Config.GetValue("服务器信息", "IP"), Convert.ToInt32(string.IsNullOrWhiteSpace(Config.GetValue("服务器信息", "Port")) ? "443" : Config.GetValue("服务器信息", "Port")), RcvServerSuccess, RcvServerError, Config.GetValue("秘钥", "SecretKey"), RcvServerState);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("加载窗体 ERROR:", $"{ex.Message} - {ex.StackTrace}");
}
}
//更新状态信息
private void RcvServerState(string str)
{
if (!string.IsNullOrEmpty(str))
{
try
{
if (!str.EndsWith("连接成功."))
LogHelper.GetSingleObj().Info("系统日志", $"{str}");
this.Invoke(new Action(() =>
{
status.Text = str;
if (str.Contains("成功"))
{
this.groupBox1.Enabled = false;
this.button1.Text = "断开服务器";
}
else
{
this.groupBox1.Enabled = true;
this.button1.Text = "连接服务器";
}
}));
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Info("系统日志", $"{str}");
LogHelper.GetSingleObj().Error("sc ERROR:", $"{ex.Message} - {ex.StackTrace}");
}
}
}
//服务器连接失败
private void RcvServerError(Exception obj)
{
try
{
LogHelper.GetSingleObj().Info("连接异常1", $"{obj.Message}");
RcvServerState("连接异常:" + obj.Message);
EasySoc.GetSocket().Close();
}
catch (Exception)
{
}
}
/// <summary>
/// 处理服务器消息
/// </summary>
/// <param name="_str"></param>
private void RcvServerSuccess(string _key, string _str)
{
var str = _str;
var key = _key;
//var method = new Action(delegate ()
//{
ThreadPool.QueueUserWorkItem(z =>
{
try
{
var socketClient = EasySoc.GetSocket();
try
{
//head = head.Replace("HeartBreak", "heartBreak");
var cmd = (PCRobotCMD)Enum.Parse(typeof(PCRobotCMD), key);
#region
if (cmd == PCRobotCMD.updateApp)
{
try
{
var LastData = UpdateClient.GetCloudFileHist();
if (!string.IsNullOrWhiteSpace(LastData))
{
Process.Start("检查更新.exe", "易转发.exe");
LogHelper.GetSingleObj().Info("远程更新退出", $"收到远程更新请求,退出程序");
Thread.Sleep(500);
Program.Exit();
}
}
catch (Exception ex)
{ }
}
#endregion
var text = PackTool.DecompressString(str);
//if (WechatClient.IsDebug) LogHelper.GetSingleObj().Debug("调试", $"服务器响应 -> {text}");
var data = Util.JsonToObject<ServerWechatMsg>(text) as ServerWechatMsg;
if (data.Cmd == PCRobotCMD.getlogincode)
{
var getLCdata = Util.JsonToObject<LoginCodeMsg>(text) as LoginCodeMsg;
if (getLCdata != null)
{
try
{
if (getLCdata.Data == "-1")
{
if (getLCdata.RobotType == RobotType.)
Wechat_Xiaoxie.LoginQrcode(getLCdata.RobotUsername, getLCdata.MsgId);
else if (getLCdata.RobotType == RobotType.)
Wechat_Xiaoxie_QY.LoginQrcode(getLCdata.MsgId);
}
else
{
if (getLCdata.RobotType == RobotType.)
Wechat_Xiaoxie.WaitLoginResult.Add(getLCdata.Data, getLCdata.MsgId);
else if (getLCdata.RobotType == RobotType.)
Wechat_Xiaoxie_QY.WaitLoginResult.Add(getLCdata.Data, getLCdata.MsgId);
}
}
catch (Exception)
{ }
}
return;
}
if (data.Key != socketClient.key) return;
var wechatUser = WechatClient.Users.FirstOrDefault(f => f.Key == data.RobotUsername.ToString()).Value;
if (wechatUser == null) return;
//data.MsgId;
//通过用户,获取对应的API,执行相应的函数
var api = WechatClient.GetApi(wechatUser);
api.ServerMsgID = data.MsgId;
switch (cmd)
{
case PCRobotCMD.sendVideo:
api.SendVideo(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.sendTxt:
api.SendMessage(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.sendProgramMessage:
api.SendProgramMessage(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.sendFile:
api.SendFile(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.sendImg:
api.SendImage(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.agreeFriend:
api.AcceptFriend(data.ToMessage);
break;
case PCRobotCMD.sendCard:
case PCRobotCMD.sendInviteGroup:
api.SendCard(data.ToUsername, data.ToMessage);
break;
2022-11-12 08:55:55 +00:00
case PCRobotCMD.sendCardXml:
(api as Wechat_Xiaoxie)?.SendCardXml(data.ToUsername, data.ToMessage);
break;
2022-09-20 03:10:29 +00:00
case PCRobotCMD.getContact:
api.GetContact(true);
break;
case PCRobotCMD.getGroupsNotInMember:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie)?.GetGroupsNotInMember();
break;
case PCRobotCMD.getZombie:
{
if (api.GetType() == typeof(Wechat_Xiaoxie))
{
var qy = api as Wechat_Xiaoxie;
qy.CheckZombiz();
}
}
break;
case PCRobotCMD.getGroupMember:
api.GetGroupMemberInfo(data.ToMessage);
break;
case PCRobotCMD.getPay:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).AcceptFriendTransfer(data.ToMessage);
break;
case PCRobotCMD.deleteFriend:
api.DeleteFriend(data.ToMessage);
break;
case PCRobotCMD.editContacts:
api.ModifyFriendRemark(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.stateOpt:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).ModifyChatTop(data.ToUsername, int.Parse(data.ToMessage) == 1);
break;
case PCRobotCMD.getWxidInfo:
api.Ser_GetContact(data.ToMessage);
break;
case PCRobotCMD.getGroupWxidInfo://类型:图片表示不刷新,文件表示刷新
api.GetFriendInfo(data.ToMessage, data.ToUsername, data.ToMessageType == WechatMsgType.);
break;
case PCRobotCMD.closeWechat:
api.OutLogin(data.ToMessage);
break;
case PCRobotCMD.inviteIntoGroup:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).InviteMemberToGroup_40Up(data.ToMessage, new string[] { data.ToUsername });
else
(api as Wechat_Xiaoxie_QY).InviteMemberToGroup(data.ToMessage, new string[] { data.ToUsername });
break;
case PCRobotCMD.inviteIntoGroup_40Down:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).InviteMemberToGroup_40Down(data.ToMessage, new string[] { data.ToUsername });
else
(api as Wechat_Xiaoxie_QY).InviteMemberToGroup(data.ToMessage, new string[] { data.ToUsername });
break;
case PCRobotCMD.createRoom:
if (string.IsNullOrWhiteSpace(data.ToMessage)) return;
var wxids = data.ToMessage.Trim().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
api.Ser_CreateGroup(wxids);
break;
case PCRobotCMD.checkUrl:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).CheckUrlStatus(data.ToMessage);
break;
case PCRobotCMD.openUrl:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).OpenBrowser(data.ToMessage);
break;
case PCRobotCMD.clearChatHistoryMsg:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).ClearChatHistoryMsg();
break;
case PCRobotCMD.deleteGroupMember:
api.DeleteGroupMember(data.ToUsername, new string[] { data.ToMessage });
break;
case PCRobotCMD.setSessionReadedMsg:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).SetMsgReaded(data.ToMessage);
break;
case PCRobotCMD.modRoomName:
case PCRobotCMD.setRoomName:
api.ModifyGroupName(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.setRoomNotice:
api.ModifyGroupNotice(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.modRoomMyName:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).ModifyGroupMyNick(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.setRoomShowMemeberName:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).ModifyGroupShowNick(data.ToUsername, bool.Parse(data.ToMessage));
break;
case PCRobotCMD.setRecvNotify:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).ModifyRecvNotify(data.ToUsername, bool.Parse(data.ToMessage));
break;
case PCRobotCMD.addPublicUser:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).AddPublicUser(data.ToUsername);
break;
case PCRobotCMD.setDisableRevoke:
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).DisableRevoke(bool.Parse(data.ToMessage));
break;
case PCRobotCMD.findCircles://获取朋友圈
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).Ser_GetCircles(data.ToMessage, data.ToUsername);
break;
case PCRobotCMD.autoAuthMiniAPPLogin://小程序自动授权登录
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).AutoAuthMiniAPPLogin(data.ToMessage);
break;
case PCRobotCMD.sendCircle://发送朋友圈
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).SendCircle(data.ToMessage);
break;
case PCRobotCMD.sendCircleComment://发送朋友圈评语
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).CircleComment(data.ToUsername, data.ToMessage);
break;
case PCRobotCMD.sendCirclePraise://朋友圈点赞
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).CircleLink(data.ToMessage);
break;
case PCRobotCMD.uploadCiecleImage://上传朋友圈图片
if (wechatUser.Type == WechatType.Xiaoxie)
(api as Wechat_Xiaoxie).CircleUpLoadImage(data.ToMessage);
break;
default:
break;
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("RcvServerSuccess", ex.Message + $"key = {key} :: str = {str}");
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("RcvServerSuccess:", ex.Message + $"key = {key} :: str = {str}");
}
});
}
public bool DownloadFile(string URL, string filename)
{
try
{
float percent = 0;
if (File.Exists(filename)) File.Delete(filename);
Stream st = null;
Stream so = null;
System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
long totalBytes = myrp.ContentLength;
st = myrp.GetResponseStream();
so = new System.IO.FileStream(filename, System.IO.FileMode.Create);
try
{
long totalDownloadedByte = 0;
byte[] by = new byte[1024];
int osize = st.Read(by, 0, (int)by.Length);
while (osize > 0)
{
totalDownloadedByte = osize + totalDownloadedByte;
Application.DoEvents();
so.Write(by, 0, osize);
osize = st.Read(by, 0, (int)by.Length);
percent = (float)totalDownloadedByte / (float)totalBytes * 100;
Application.DoEvents(); //必须加注这句代码否则label1将因为循环执行太快而来不及显示信息
}
return true;
}
catch (Exception ex)
{
if (so != null)
{
so.Close();
so.Dispose();
so = null;
}
if (st != null)
{
st.Close();
st.Dispose();
st = null;
}
throw ex;
}
finally
{
if (so != null)
{
so.Close();
so.Dispose();
so = null;
}
if (st != null)
{
st.Close();
st.Dispose();
st = null;
}
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("下载文件异常", $"下载文件异常:{ex.Message}");
}
return false;
}
//刷新机器人列表
private void RefUserMethod(WechatUser user)
{
//this.Invoke(new Action(delegate
//{
// try
// {
// this.listView1.Items.Clear();
// int i = 1;
// foreach (var item in WechatClient.Users.Values.ToList())
// {
// var view = new ListViewItem(new string[] { i.ToString(), item.Wxid, item.Nickname, item.Type == WechatType.Xiaoxie_QY ? "企业" : "个人", WechatClient.GetApi(item.Wxid).GetVersion(), "正式" });
// view.Tag = item;
// this.listView1.Items.Add(view);
// i++;
// //if (item.Type == WechatType.Xiaoxie)
// // //BakWechatInfo(item.Wxid, item.Nickname);
// // WechatLoginHelper.EndbeginLogin(item.Wxid, item.Nickname);
// }
// }
// catch (Exception ex)
// {
// LogHelper.GetSingleObj().Error("RefUserMethod", ex.Message + " " + ex.StackTrace);
// }
//}));
this.SafeInvoke(() =>
2022-09-20 03:10:29 +00:00
{
try
{
this.listView1.Items.Clear();
int i = 1;
foreach (var item in WechatClient.Users.Values.ToList())
{
var view = new ListViewItem(new string[] { i.ToString(), item.Wxid, item.Nickname, item.Type == WechatType.Xiaoxie_QY ? "企业" : "个人", WechatClient.GetApi(item.Wxid).GetVersion(), "正式" });
view.Tag = item;
this.listView1.Items.Add(view);
i++;
//if (item.Type == WechatType.Xiaoxie)
// //BakWechatInfo(item.Wxid, item.Nickname);
// WechatLoginHelper.EndbeginLogin(item.Wxid, item.Nickname);
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("RefUserMethod", ex.Message + " " + ex.StackTrace);
}
});
2022-09-20 03:10:29 +00:00
}
///// <summary>
///// 备份微信config.data文件
///// </summary>
//private void BakWechatInfo(string username, string nick)
//{
// try
// {
// #region 备份登录微信的data文件
// //微信登录信息文件备份
// Task.Run(() =>
// {
// Thread.Sleep(100);
// var allWeChatsDirPath = HttpExtend.MapFile("Config\\AllWeChats");
// //存储微信信息的目录
// var dirPath = HttpExtend.MapPath(Path.Combine(allWeChatsDirPath, username));
// //存储微信其他信息的文件
// var configPath = Path.Combine(dirPath, "config.nnt");
// //将微信其他信息写入到文件中
// using (Stream stream = File.Open(configPath, FileMode.OpenOrCreate))
// {
// byte[] buffer = Encoding.Default.GetBytes(nick);
// stream.Write(buffer, 0, buffer.Length);
// }
// });
// #endregion
// }
// catch (Exception ex)
// {
// MessageBox.Show($"保存微信信息异常:{ex.Message}");
// }
//}
//开始连接服务器
private void button1_Click(object sender, EventArgs e)
{
var socketClient = EasySoc.GetSocket();
try
{
Config.SetValue("服务器信息", "IP", textBox1.Text);
Config.SetValue("服务器信息", "Port", textBox2.Text);
Config.SetValue("秘钥", "SecretKey", textBox3.Text);
if (this.button1.Text != "连接服务器")
{
if (socketClient != null)
{
socketClient.Stop = true;
socketClient.Close();
}
RcvServerState("您已断开与服务器的连接!");
this.button1.Text = "连接服务器";
return;
}
if (socketClient != null)
{
socketClient.Close();
}
socketClient.Stop = false;
socketClient.Connection(Config.GetValue("服务器信息", "IP"), Convert.ToInt32(Config.GetValue("服务器信息", "Port")), RcvServerSuccess, RcvServerError, Config.GetValue("秘钥", "SecretKey"), RcvServerState);
Thread.Sleep(1000);
if (socketClient.IsConnected)
{
this.button1.Text = "断开服务器";
}
else throw new Exception("连接服务器失败,请检查是否填写正确!");
}
catch (Exception ex)
{
if (socketClient != null) socketClient.Stop = true;
MessageBox.Show(ex.Message, "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//全部退出
private void button3_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("是否退出全部微信?", "温馨提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
LogHelper.GetSingleObj().Info("系统", $"点击全部退出微信");
foreach (var item in WechatClient.Users.Values.ToArray())
WechatClient.RemoveUser(item, true);
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("退出全部微信", $"退出全部微信异常:{ex.Message}");
}
}
//检查更新
private void button4_Click(object sender, EventArgs e)
{
try
{
var LastData = UpdateClient.GetCloudFileHist();
if (!string.IsNullOrWhiteSpace(LastData))
{
#region ,退
//var v = versions.FirstOrDefault(f => f.Name == "PCWechat");
//if (v != null)
//{
// Process[] MyProcesses = Process.GetProcesses();
// var path = HttpExtend.MapPath("PCWechat");
// foreach (Process MyProcess in MyProcesses)
// {
// try
// {
// var name = MyProcess.ProcessName.ToUpper();
// if (name == "WECHAT" && MyProcess.MainModule.FileName.StartsWith(path))
// {
// LogHelper.GetSingleObj().Debug("", $"检测到新微信版本,已经登录的微信");
// MyProcess.Kill();
// }
// }
// catch (Exception ex)
// {
// LogHelper.GetSingleObj().Error(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, ex.Message);
// }
// }
//}
#endregion
//Process.Start("检查更新.exe", "易转发.exe");
//IsClose = true;
//this.Close();
if (new UpdateForm(LastData).ShowDialog() == DialogResult.OK)
PCRobotForm_FormClosing(LastData, null);
}
else new MessageBox1("暂无新版本!").ShowDialog();
}
catch (Exception ex)
{
new MessageBox1(ex.Message).ShowDialog();
}
}
private bool IsClose = false;
//窗口即将关闭
private void PCRobotForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (!IsClose && e != null)
{
var msg = MessageBox.Show("您确定要退出软件吗?", "谨慎操作", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (msg != DialogResult.Yes) { e.Cancel = true; return; }
}
try
{
PCWechat.WechatClient.UnInstall();
var socketClient = EasySoc.GetSocket();
if (!e.Cancel && socketClient != null && socketClient.IsConnected)
{
socketClient.Close(true);
}
}
catch (Exception)
{
}
if (sender != null && e == null)
{
LogHelper.GetSingleObj().Info("系统", $"关闭窗体退出");
Process.Start("检查更新.exe", "易转发.exe");
Thread.Sleep(600);
}
Process.GetCurrentProcess().Kill();
}
//删除微信
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (listView1.SelectedItems.Count == 0) return;
else
{
var item = this.listView1.SelectedItems[0].Tag as WechatUser;
LogHelper.GetSingleObj().Info("系统", $"右击删除微信,Uin:{item.Uin},微信:{item.Nickname}({item.Wxid})");
WechatClient.RemoveUser(item, true);
}
}
catch (Exception ex)
{
LogHelper.GetSingleObj().Error("Delete Wechat ERROR:", $"{ex.Message} - {ex.StackTrace}");
}
}
//登陆微信
private void button2_Click(object sender, EventArgs e)
{
try
{
2023-04-06 01:07:55 +00:00
WeChatHelper.ShieldUpdate();
WeChatHelper.RestoreWeChat();
2022-09-20 03:10:29 +00:00
var wtype = WechatType.Xiaoxie;
Wechat_Xiaoxie.Install();
//http://qiniu.down.api.52cmg.cn/PCWechat_2.7.1.82.zip
var socketClient = EasySoc.GetSocket();
if (!socketClient.IsConnected)
{
this.tabControl1.SelectedIndex = 1;
MessageBox.Show("请先连接机器人服务器!", "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//if (wtype == WechatType.Xiaoxie)
//{
// var form = new WechatLoginForm();
// if (form.ShowDialog() == DialogResult.OK)
// {
// //启动微信,暂时没有做MD5检查
// //WechatClient.StartWechat(WechatType.Xiaoxie);
// WechatClient.StartWechat(wtype, form.wxid);
// }
//}
//else
WechatClient.StartWechat(wtype);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "启动失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// 登录企业微信
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
try
{
Wechat_Xiaoxie_QY.Install();
var socketClient = EasySoc.GetSocket();
if (!socketClient.IsConnected)
{
this.tabControl1.SelectedIndex = 1;
MessageBox.Show("请先连接机器人服务器!", "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//启动微信,暂时没有做MD5检查
var rst = WechatClient.StartWechat(WechatType.Xiaoxie_QY);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "启动失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
//清理文件
private void timer1_Tick(object sender, EventArgs e)
{
LogHelper.GetSingleObj().Info("清理文件", $"定时清理文件开始执行");
try
{
string[] ClearDirs = new string[] { "VOICE", "IMAGE" };
//删除微信缓存文件(图片/文件)
var cachePath = CsharpHttpHelper.HttpExtend.MapPath("Accounts");
if (Directory.Exists(cachePath))
{
DirectoryInfo dirs = new DirectoryInfo(cachePath);
FileSystemInfo[] fileinfos = dirs.GetFileSystemInfos(); //返回目录中所有文件和子目录
for (int z = 0; z < fileinfos.Length; z++)
{
for (int k = 0; k < ClearDirs.Length; k++)
{
var path = HttpExtend.MapPath($@"Accounts\{fileinfos[z]}\{ClearDirs[k]}");
Common.DeleteDir(path);
}
}
}
LogHelper.GetSingleObj().Info("清理文件", $"定时清理文件执行完毕");
}
catch (Exception)
{
LogHelper.GetSingleObj().Info("清理文件", $"定时清理文件执行失败");
}
try
{
//删除缓存目录
Common.DeleteDir(HttpExtend.MapPath(@"Cache"));
LogHelper.GetSingleObj().Info("删除缓存目录", $"定时删除缓存目录执行完毕");
}
catch (Exception)
{
LogHelper.GetSingleObj().Info("删除缓存目录", $"定时删除缓存目录执行失败");
}
}
private void button6_Click(object sender, EventArgs e)
{
try
{
Process.Start(HttpExtend.MapPath());
}
catch (Exception)
{ }
}
private void timer2_Tick(object sender, EventArgs e)
{
try
{
Process[] MyProcesses = Process.GetProcesses();
foreach (Process MyProcess in MyProcesses)
{
if (MyProcess.ProcessName.ToUpper() == "WECHATAPP")
{
LogHelper.GetSingleObj().Info("杀死小程序app", $"检测到WECHATAPP进程,主动杀死");
MyProcess.Kill();
}
}
}
catch (Exception ex)
{ }
}
private void button7_Click(object sender, EventArgs e)
{
try
{
if (Common.AppConfig_ExistItem("AnalysisTypes"))
Common.AppConfig_Set("AnalysisTypes", richTextBox1.Text.Trim());
else
Common.AppConfig_Add("AnalysisTypes", richTextBox1.Text.Trim());
AnalysisTypes = richTextBox1.Text.Replace("", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim().ToUpper()).ToList();
if (Common.AppConfig_ExistItem("IsHaveRead"))
Common.AppConfig_Set("IsHaveRead", checkBox2.Checked ? "1" : "0");
else
Common.AppConfig_Add("IsHaveRead", checkBox2.Checked ? "1" : "0");
IsHaveRead = checkBox2.Checked;
}
catch (Exception ex)
{
MessageBox.Show("保存异常:" + ex.Message);
}
}
private void button8_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show(@"是否立即执行清理硬盘垃圾
:退", "", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
return;
var path = Environment.CurrentDirectory + "\\清理.bat";
if (File.Exists(path))
{
ProcessStartInfo info = new ProcessStartInfo(path);
info.UseShellExecute = true;
info.Verb = "runas";//管理员身份运行
Process.Start(info);
}
else
throw new Exception("执行失败,清理.bat文件不存在~!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//new MessageBox1(ex.Message).ShowDialog();
}
}
private void timer3_Tick(object sender, EventArgs e)
{
2022-09-20 03:10:29 +00:00
}
private void button9_Click(object sender, EventArgs e)
{
Wechat_Xiaoxie.UnInstall();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
try
{
Config.SetValue("设置", "静态", (checkBox1.Checked ? "FALSE" : "TRUE"));
2022-09-20 03:10:29 +00:00
}
catch (Exception ex)
2022-09-20 03:10:29 +00:00
{
LogHelper.GetSingleObj().Info("修改激活配置", $"{ex.Message}");
2022-09-20 03:10:29 +00:00
}
}
private void PCRobotForm_MouseDown(object sender, MouseEventArgs e)
{
LogHelper.GetSingleObj().Info("窗口被点击", $"主程序窗口被点击 => x:{e.X};y:{e.Y}");
}
2022-09-20 03:10:29 +00:00
}
}