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;
|
2022-10-25 01:07:24 +00:00
|
|
|
|
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
|
|
|
|
|
{
|
2022-10-25 01:07:24 +00:00
|
|
|
|
|
2023-04-06 01:07:55 +00:00
|
|
|
|
|
|
|
|
|
|
2022-09-26 09:04:23 +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-26 09:04:23 +00:00
|
|
|
|
|
2022-09-20 03:10:29 +00:00
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
File.Delete(item);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
2022-09-26 09:04:23 +00:00
|
|
|
|
{
|
|
|
|
|
}
|
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-26 09:04:23 +00:00
|
|
|
|
|
2022-09-20 03:10:29 +00:00
|
|
|
|
this.label5.Text = "版本:" + Common.CurVersion;
|
|
|
|
|
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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 需要解析的微信消息
|
2022-09-26 09:04:23 +00:00
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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-26 09:04:23 +00:00
|
|
|
|
|
2022-09-20 03:10:29 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 自动处理会话已读
|
2022-09-26 09:04:23 +00:00
|
|
|
|
|
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-26 09:04:23 +00:00
|
|
|
|
|
2022-09-20 03:10:29 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
//设置标题
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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");
|
2022-09-26 09:04:23 +00:00
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
{ }
|
2022-10-25 01:07:24 +00:00
|
|
|
|
|
|
|
|
|
//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"*/ };
|
2022-09-26 09:04:23 +00:00
|
|
|
|
|
|
|
|
|
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>();
|
|
|
|
|
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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));
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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;
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-26 09:04:23 +00:00
|
|
|
|
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"));
|
2022-09-26 09:04:23 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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)
|
|
|
|
|
{
|
2023-03-21 12:37:45 +00:00
|
|
|
|
//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);
|
|
|
|
|
}
|
2023-03-21 12:37:45 +00:00
|
|
|
|
});
|
|
|
|
|
|
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-26 09:04:23 +00:00
|
|
|
|
|
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
|
|
|
|
|
{
|
2022-09-26 09:04:23 +00:00
|
|
|
|
Config.SetValue("设置", "静态", (checkBox1.Checked ? "FALSE" : "TRUE"));
|
2022-09-20 03:10:29 +00:00
|
|
|
|
}
|
2022-09-26 09:04:23 +00:00
|
|
|
|
catch (Exception ex)
|
2022-09-20 03:10:29 +00:00
|
|
|
|
{
|
2022-09-26 09:04:23 +00:00
|
|
|
|
LogHelper.GetSingleObj().Info("修改激活配置", $"{ex.Message}");
|
2022-09-20 03:10:29 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2022-09-26 09:04:23 +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
|
|
|
|
}
|
|
|
|
|
}
|