old_flsystem/FLSystem/Program.cs

505 lines
21 KiB
C#
Raw Permalink Normal View History

2022-09-20 03:10:29 +00:00
using Api.Framework;
using Api.Framework.Cps;
using Api.Framework.Tools;
using CsharpHttpHelper;
using DevExpress.XtraEditors;
using FLSystem.Forms;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Threading;
using System.Xml;
2023-04-06 01:07:55 +00:00
using PCRobot.Pack;
2022-09-20 03:10:29 +00:00
using UI.Framework.Forms;
namespace FLSystem
{
static class Program
{
[DllImport("User32.dll")]
public static extern int PrivateExtractIcons(
string lpszFile, //文件名可以是exe,dll,ico,cur,ani,bmp
int nIconIndex, //从第几个图标开始获取
int cxIcon, //获取图标的尺寸x
int cyIcon, //获取图标的尺寸y
IntPtr[] phicon, //获取到的图标指针数组
int[] piconid, //图标对应的资源编号
int nIcons, //指定获取的图标数量,仅当文件类型为.exe 和 .dll时候可用
int flags //标志默认0就可以具体可以看LoadImage函数
);
[DllImport("User32.dll")]
public static extern bool DestroyIcon(
IntPtr hIcon //A handle to the icon to be destroyed. The icon must not be in use.
);
private static System.Drawing.Icon _ico;
public static System.Drawing.Icon ReadICO()
{
if (_ico != null) return _ico;
try
{
bool is_next = false;
NEXT:
DirectoryInfo info = new DirectoryInfo(Util.MapPath());
var files = info.GetFiles("*.exe");
foreach (var data in files)
{
var file = data.FullName;
if (file.EndsWith("FLSystem.exe")) continue;
if (file.EndsWith("ZipExtract.exe")) continue;
if (file.EndsWith("FLSystemMonitor.exe")) continue;
if (file.EndsWith("LevelUpdate.exe")) continue;
if (file.EndsWith("OnlineUpdate.exe")) continue;
if (file.EndsWith("VersionUpdate.exe")) continue;
//if (file.EndsWith("软件异常点我修复.exe")) continue;
if (file.EndsWith("检查更新.exe")) continue;
if (data.Name.Replace(".exe", "").ToLower().Contains("net")) continue;
//选中文件中的图标总数
var iconTotalCount = PrivateExtractIcons(file, 0, 0, 0, null, null, 0, 0);
//用于接收获取到的图标指针
IntPtr[] hIcons = new IntPtr[iconTotalCount];
//对应的图标id
int[] ids = new int[iconTotalCount];
//成功获取到的图标个数
var successCount = PrivateExtractIcons(file, 0, 256, 256, hIcons, ids, iconTotalCount, 0);
//遍历并保存图标
for (var i = 0; i < successCount; i++)
{
//指针为空,跳过
if (hIcons[i] == IntPtr.Zero) continue;
_ico = System.Drawing.Icon.FromHandle(hIcons[i]);
return _ico;
//内存回收
//DestroyIcon(hIcons[i]);
}
}
if (!is_next)
{
var exe = Util.MapFile("返利机器人.exe");
if (!File.Exists(exe))
{
File.WriteAllBytes(exe, FLSystem.Properties.Resources.);
goto NEXT;
}
}
}
catch (Exception)
{
}
_ico = Properties.Resources.exe;
return _ico;
}
/// <summary>
/// 过滤特殊字符,保留中文,字母,数字,和-
/// </summary>
/// <param name="inputValue">输入字符串</param>
/// <remarks>发件和收件详细地址有这种情况“仓场路40-73号迎园新村四坊69号202室”这种带有-的特殊字符不需要过滤掉</remarks>
/// <returns></returns>
public static string FilterChar(string inputValue)
{
// return Regex.Replace(inputValue, "[`~!@#$^&*()=|{}':;',\\[\\].<>/?~@#¥……&*&mdash;|{}【】;‘’,。/*-+]+", "", RegexOptions.IgnoreCase);
if (Regex.IsMatch(inputValue, "[A-Za-z0-9\u4e00-\u9fa5-]+"))
{
return Regex.Match(inputValue, "[A-Za-z0-9\u4e00-\u9fa5-]+").Value;
}
return "";
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
2023-04-06 01:07:55 +00:00
static void Main() {
2022-09-20 03:10:29 +00:00
//var sign = HttpExtend.GetMD5String("Cc"+ "_*54R56@%");
//var ss = Util.DecryptDES("lKMvY5Nw0DjddL2gR2Fhu6GFlMehR0ej70MzzGKOi17O/Lp6r5yD288MdztyYPWBkyA4bkKntMpOgsJ3cWZXau/X3U0aHK06");
//return;
//new Form1().ShowDialog();
//return;
//string src = string.Format("Data Source={0};Version=3;password={1};Journal Mode=WAL;", Util.MapFile("数据库.db", "Config"), "");
//var tempConfig = new ConnectionConfig() { ConnectionString = src, DatabaseType = DatabaseType.SQLITE };
//var session = ApiClient.GetSession(tempConfig);
//var db_order = session.FindSingle<Api.Framework.Model.fl_order_alimama>("select * from fl_order_alimama where trade_id = @trade_id and trade_parent_id = @trade_parent_id", new { trade_id = "271259596907722923", trade_parent_id = "271259596907722923" });
//return;
// ApiClient.SendDingdingMessageNewApi("TEST", "https://oapi.dingtalk.com/robot/send?access_token=24dbd211f807d4651d22d685c788c9df8548f23c09104646d88372d24b7549ef", "SECbb1f0d66c2ba8f71ff4e1620d99e2dd12191ab884d1567e2f949987b4187e59f");
try
{
EO.WebBrowser.Runtime.AddLicense(
"N4SOscufWbPw+g7kp+rp9um7aOPt9BDtrNzpz7iJWZeksefgpePzCOmMQ5ek" +
"scufWZekzQzjnZf4ChvkdpnJ4NnCoenz/hChWe3pAx7oqOXBs92wZ6emsdq9" +
"RoGkscufdabl/RfusLWRm8ufWZfAAB3jnunN/xHuWdvlBRC8W6i2wNywaKm0" +
"w9uhWer58/D3qeD29h7ArbSmwt2uaqizw9uxapmkBxDxrODz/+iha6emsdq9" +
"RoGkscufdert+Bngrez29unLn9D7BR7Wb8T66/nCm6y40hu2b8zFzui7aOrt" +
"+Bngrez29umMQ7Oz/RTinuX39umMQ3Xj7fQQ7azcwp61n1mXpM0X6Jzc8gQQ" +
"yJ21uur5sXGqusrz0XCwtMTis4+zs/0U4p7l9/b043c=");
}
catch (Exception)
{
}
try
{
Robot.Framework.Utils.Util.SetWebBrowserFeatures(11);
Robot.Framework.RobotServer.Servers.Add("robotsign.api.52cmg.cn");
DevExpressCrack.Crack.Init();
List<string> files = new List<string>();
files.Add(Util.MapFile(@"QQPlus.Framework.dll", @"Assembly\apifile"));
files.Add(Util.MapFile(@"FLSystem.dubug", @"Assembly\apifile"));
files.Add(Util.MapFile(@"MaxQQ.db", @"Assembly\apifile"));
files.Add(Util.MapFile(@"Activity.dll", @"Plugin"));
files.Add(Util.MapFile(@"Runtime.dll", @"Plugin"));
files.Add(Util.MapFile(@"FLSystem.exe.se"));
files.Add(Util.MapFile(@"LevelUpdate.exe"));
files.Add(Util.MapFile(@"OnlineUpdate.exe"));
files.Add(Util.MapFile(@"version.txt"));
files.Add(Util.MapFile(@"Update.zip"));
files.Add(Util.MapFile(@"VersionUpdate.exe"));
files.Add(Util.MapFile(@"OnlineUpdate.exe"));
files.Add(Util.MapFile("软件异常点我修复.exe"));
foreach (var item in files)
{
try
{
File.Delete(item);
}
catch (Exception ex)
{ }
}
}
catch (Exception ex)
{ }
if (!Tools.GetDotNetRelease(393297))//.net版本 参数(393297)在这里面看 https://docs.microsoft.com/zh-tw/dotnet/framework/migration-guide/versions-and-dependencies
{
XtraMessageBox.Show(@"检测到系统可能未安装.Net FrameWork 4.6.1", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//获取本机调试码
//Computer cx = Computer.Instance();
//var md5 = HttpHelper.ToMD5(cx.ComputerName + cx.CpuID + cx.LoginUserName);
////获取开发调试
//var debug = EncDebugAcc(md5);
//var tb_data = "{'pageNum' : '0','activityName' : 'orderCommon'}";
//var tb_api = "mtop.taobao.chatting.group.recommend";
//var tb_version = "1.0";
// GetSign("WGggVwxCetYDAJSz3rev6wHz", "365052383", "21646297", tb_data, tb_api,tb_version, "70047844f777bb980e529af7a40c3ab3", "10000878@tdvideo_android_4.2.2", "AvMoMBLo1CCz-eMOUfuejUazQmEyetOX8RDVE6g", "39.916295", "116.410344","27");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ThreadPool.SetMaxThreads(int.MaxValue, int.MaxValue);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
ReadICO();
// GetXsign("mtop.taobao.rate.detaillist.get","");
CheckMoreopen();
//定时输出日志
Task.Run(() =>
{
string log = Util.MapFile("Runtime.log");
while (true)
{
try
{
File.WriteAllText(log, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
catch { }
Thread.Sleep(1000 * 10);
}
});
//检查监控是否启动
try
{
var location = AppDomain.CurrentDomain.BaseDirectory;
var list = Process.GetProcessesByName("FLSystemMonitor").ToList();
bool is_start = false;
foreach (var item in list)
{
try
{
var fileName = item.MainModule.FileName;
var path = fileName.Substring(0, fileName.Length - 19);
if (location == path)
{
is_start = true; break;
}
}
catch { }
}
if (!is_start)
{
var jk_file = Util.MapFile("FLSystemMonitor.exe");
if (!File.Exists(jk_file))
{
var jk_old_file = Util.MapFile("FLSystemMonitor.exe", "Assembly\\apifile");
if (File.Exists(jk_old_file))
{
//File.Copy(jk_old_file,jk_file);
////使用File的静态方法删除路径下的一个文件
//File.Delete(jk_old_file);
//使用File的静态方法移动路径下的一个文件
File.Move(jk_old_file, jk_file);
}
}
Process.Start("FLSystemMonitor.exe", "check");
}
}
catch (Exception)
{ }
DeleteFile(Util.MapFile("Grant.Framework.dll", @"Assembly\library"));
DeleteFile(Util.MapFile("Easy4net.dll", @"Assembly\apifile"));
SetAllowUnsafeHeaderParsing20(true);
//CheckUpdate();
if (CheckUpdate())
return;
Application.Run(new main());
}
private static string EncDebugAcc(string md5)
{
string rsakey = "<RSAKeyValue><Modulus>nz1sjqJbDn58VvAs+vUZtOZY4fgSQP2DvmagOEXsx/v0ZJ6ykDi71jtnU01ZD40xBt0fooUiC6VEobUJqdLqoAnqUZGqkD9IPZaVDPDYg6aXowhKZJP4Ipxq0eaXBWfROOBAVF/uFkZ27sjcuCfCpzDafOoRLRQCLQ2TKRgfYd0=</Modulus><Exponent>AQAB</Exponent><P>2WfOYWp6o8EZm14a/K0iFGrKq4QQ9q719GKw2CSNZbmSsN0azhLHKG1iYQn0M/qEzRbc1R79vLTJIF3VwbieDw==</P><Q>u4I6+v5RANurQV6YH7kGAmsoAHZhx8hbBUnRFKQyCK3LJbzq8gXeVU7mzzOkSzVMoeGEIVUYXb4zL87txkytUw==</Q><DP>qwh1XkIMdWNmp8oi5QG3u+Q/ySs+xTLjn/08Lu6ippKVirqHafNv5qgXK0xPZ80ASPBhjvCwoZKAYAwyLBL3lQ==</DP><DQ>SQP9U5+Ui3D+zwW21yOFY4u2l/eBO/qY9wY3lIIbuaVzZc6a7oO6gB2pYyYI5ABtRtw6R4CLbHWUGRnLHVzeYQ==</DQ><InverseQ>M1zD3kKgwgQcgWqilmE9/jsAfDTWBaf/2sZDusfS4zhNQtPbZuYtAQOJ5lymvUKkl5BIHrPiQ7LydG47dMiO5w==</InverseQ><D>P6IfGFx+wKsA6wjtIJgDXsvR5vLn8HqeQ97k1bfzp/LiNbdJKeLSBQkWAC7fkRxd5B1G//3tnfO8Glaq9ucnBI1CwJgvoO4h6YtyjmscC8TFpMEu3TfxU1SScokjyciiaXpQsAilFX3RQE1eARuvGaZxwbO3KbAubU6ydZGBK00=</D></RSAKeyValue>";
RSACryption rsa = new RSACryption();
var text = rsa.RsaEncrypt(md5, rsakey);
//Console.WriteLine($"请在根目录建立文件debug.txt,并存放值:\r\n{text}");
return rsa.RsaEncrypt(md5, rsakey);
}
private static void DeleteFile(string fileName)
{
try
{
if (File.Exists(fileName)) File.Delete(fileName);
}
catch { }
}
// <summary>
// 初始化Cef配置此方法代码不能放于Main方法中否则Cef无法正常运行别问为什么我也不清楚
// </summary>
#region
static bool SetAllowUnsafeHeaderParsing20(bool useUnsafe)
{
try
{
//Get the assembly that contains the internal class
System.Reflection.Assembly aNetAssembly = System.Reflection.Assembly.GetAssembly(typeof(System.Net.Configuration.SettingsSection));
if (aNetAssembly != null)
{
//Use the assembly in order to get the internal type for the internal class
Type aSettingsType = aNetAssembly.GetType("System.Net.Configuration.SettingsSectionInternal");
if (aSettingsType != null)
{
//Use the internal static property to get an instance of the internal settings class.
//If the static instance isn't created allready the property will create it for us.
object anInstance = aSettingsType.InvokeMember("Section",
System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.NonPublic, null, null, new object[] { });
if (anInstance != null)
{
//Locate the private bool field that tells the framework is unsafe header parsing should be allowed or not
System.Reflection.FieldInfo aUseUnsafeHeaderParsing = aSettingsType.GetField("useUnsafeHeaderParsing", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
if (aUseUnsafeHeaderParsing != null)
{
aUseUnsafeHeaderParsing.SetValue(anInstance, useUnsafe);
return true;
}
}
}
}
return false;
}
catch (Exception ex)
{
BaseForm.ShowError(ex, "系统.异常");
}
return false;
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
try
{
string str = GetExceptionMsg(e.Exception, e.ToString(), "线程");
//MessageBox.Show(str, "子线程错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
BaseForm.ShowError(str);
}
catch (Exception ex)
{
BaseForm.ShowError(ex, "系统线程异常");
}
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString(), "未知");
// MessageBox.Show(str, "主线程错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
BaseForm.ShowError(str);
}
catch (Exception ex)
{
BaseForm.ShowError(ex, "系统未知异常");
}
}
static string GetExceptionMsg(Exception ex, string backStr, string r)
{
2023-02-25 05:41:53 +00:00
2022-09-20 03:10:29 +00:00
StringBuilder sb = new StringBuilder();
sb.AppendLine($"****************************异常文本_{r}****************************");
sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
if (ex != null)
{
if (ex.Message == "This version of Windows is not supported.")
{
return "Windows版本不支持";
}
sb.AppendLine("【异常类型】:" + ex.GetType().Name);
sb.AppendLine("【异常信息】:" + (ex.Message == "This version of Windows is not supported." ? "Windows版本不支持" : ex.Message));
sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
}
else
{
sb.AppendLine("【未处理异常】:" + backStr);
}
sb.AppendLine("***************************************************************");
return sb.ToString();
}
#endregion
#region
public static bool CheckUpdate()
{
try
{
var LatestData = UpdateClient.GetCloudFileHist();
if (!string.IsNullOrWhiteSpace(LatestData))
{
if (new UpdateForm(LatestData).ShowDialog() == DialogResult.OK)
{
Process.Start("检查更新.exe", "FLSystem.exe");
//Thread.Sleep(100);
return true;
}
}
//Thread.Sleep(100);
}
catch (Exception ex)
{ }
return false;
}
/// <summary>
/// 防多开限制
/// </summary>
public static void CheckMoreopen()
{
string strFullPath = Application.ExecutablePath;
string strFileName = System.IO.Path.GetFileName(strFullPath);
string curPath = Util.MapFile(strFileName).ToLower();
int count = 0;
foreach (Process p in Process.GetProcessesByName(strFileName.Replace(".exe", "")))
{
string path = p.MainModule.FileName.ToLower();
if (path == curPath)
count++;
}
#region
var reset_program = Util.MapFile("reset", "File");//用于导入导出插件重启用,文件存在允许重启
var reset = !File.Exists(reset_program);//保存至变量
try
{
File.Delete(reset_program);//删除文件
}
catch (Exception)
{ }
#endregion
if (count > 1)
{
if (reset)
{
BaseForm.ShowError("对不起,您不能在同一个目录重复启动该软件!");
// BaseForm.ShowError(str);
// MessageBox.Show("对不起,您不能在同一个目录重复启动该软件!", "防多开提醒", MessageBoxButtons.OK, MessageBoxIcon.Error);
Exit();
}
}
}
/// <summary>
/// 退出
/// </summary>
public static void Exit(bool start = false)
{
try
{
if (start)
{
//程序位置
string strAppFileName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
System.Diagnostics.Process myNewProcess = new System.Diagnostics.Process();
//要启动的应用程序
myNewProcess.StartInfo.FileName = strAppFileName;
// 设置要启动的进程的初始目录
myNewProcess.StartInfo.WorkingDirectory = Application.ExecutablePath;
//启动程序
myNewProcess.Start();
}
//结束该程序
// Application.Exit();
//结束该所有线程
//Environment.Exit(0);
Process.GetCurrentProcess().Kill();
}
catch (Exception)
{ }
}
#endregion
}
}