diff --git a/Form1.Designer.cs b/Form1.Designer.cs
index e7b7ffd..5bc7ce0 100644
--- a/Form1.Designer.cs
+++ b/Form1.Designer.cs
@@ -1,4 +1,11 @@
-namespace Vmianqian
+#nullable enable
+
+using AntdUI;
+using WinLabel = System.Windows.Forms.Label;
+using WinPanel = System.Windows.Forms.Panel;
+using WinTextBox = System.Windows.Forms.TextBox;
+
+namespace Vmianqian
{
partial class Form1
{
@@ -22,22 +29,1142 @@
}
///
- /// Minimal designer stub. UI is built fully in code with AntdUI.
+ /// Required method for Designer support.
///
private void InitializeComponent()
{
+ DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
+ DataGridViewCellStyle dataGridViewCellStyle2 = new DataGridViewCellStyle();
+ DataGridViewCellStyle dataGridViewCellStyle3 = new DataGridViewCellStyle();
+ DataGridViewCellStyle dataGridViewCellStyle4 = new DataGridViewCellStyle();
+ homeSummaryCard = new System.Windows.Forms.Panel();
+ lblSummaryTitle = new AntdUI.Label();
+ lblSummaryDesc = new AntdUI.Label();
+ homeConfigCard = new System.Windows.Forms.Panel();
+ btnSaveConfig = new AntdUI.Button();
+ btnHeartbeatCheck = new AntdUI.Button();
+ chkHeartbeatEnabled = new Switch();
+ lblHeartbeatDesc = new AntdUI.Label();
+ lblServerUrlTitle = new AntdUI.Label();
+ txtServerUrl = new Input();
+ lblApiKeyTitle = new AntdUI.Label();
+ txtApiKey = new Input();
+ homeMemberCard = new System.Windows.Forms.Panel();
+ lblMemberPlaceholder = new AntdUI.Label();
+ homeLogCard = new System.Windows.Forms.Panel();
+ btnClearLog = new AntdUI.Button();
+ txtLog = new TextBox();
+ wechatHookCard = new System.Windows.Forms.Panel();
+ btnSelectWechatPath = new AntdUI.Button();
+ btnWechatHookStart = new AntdUI.Button();
+ txtWechatPath = new Input();
+ wechatProtocolCard = new System.Windows.Forms.Panel();
+ btnWechatSidAuto = new AntdUI.Button();
+ numWechatInterval = new NumericUpDown();
+ chkWheel = new Checkbox();
+ btnWechatProtocolStart = new AntdUI.Button();
+ lblWechatSidTitle = new AntdUI.Label();
+ txtWechatId = new Input();
+ lblWechatFrequencyTitle = new AntdUI.Label();
+ lblWechatPollingTitle = new AntdUI.Label();
+ wechatLogCard = new System.Windows.Forms.Panel();
+ btnClearWechatLog = new AntdUI.Button();
+ gridWechatLogs = new DataGridView();
+ alipayConfigCard = new System.Windows.Forms.Panel();
+ numAlipayInterval = new NumericUpDown();
+ lblAlipayDesc = new AntdUI.Label();
+ txtAliPath = new Input();
+ txtAliAppId = new Input();
+ txtAliPid = new Input();
+ alipayLogCard = new System.Windows.Forms.Panel();
+ gridAlipayLogs = new DataGridView();
+ settingsListenCard = new System.Windows.Forms.Panel();
+ lblSettingsInfo = new AntdUI.Label();
+ txtServicePort = new Input();
+ txtListenPath = new Input();
+ settingsEmailCard = new System.Windows.Forms.Panel();
+ btnEmailSave = new AntdUI.Button();
+ btnEmailTest = new AntdUI.Button();
+ lblSenderEmailTitle = new AntdUI.Label();
+ txtSenderEmail = new Input();
+ lblSmtpHostTitle = new AntdUI.Label();
+ txtSmtpHost = new Input();
+ lblSmtpPortTitle = new AntdUI.Label();
+ txtSmtpPort = new Input();
+ lblNotifyEmailTitle = new AntdUI.Label();
+ txtNotifyEmail = new Input();
+ lblEmailAuthCodeTitle = new AntdUI.Label();
+ txtEmailAuthCode = new Input();
+ titlebar = new PageHeader();
+ lblTopNotice = new AntdUI.Label();
+ lblAlipayStatusValue = new AntdUI.Label();
+ lblWechatStatusValue = new AntdUI.Label();
+ bottomBar = new PageHeader();
+ lblRuntimeBottom = new System.Windows.Forms.Label();
+ buttonCollapse = new AntdUI.Button();
+ menu = new AntdUI.Menu();
+ contentHost = new System.Windows.Forms.Panel();
+ pageSettings = new System.Windows.Forms.Panel();
+ pageAlipay = new System.Windows.Forms.Panel();
+ pageWechat = new System.Windows.Forms.Panel();
+ pageHome = new System.Windows.Forms.Panel();
+ dataGridViewTextBoxColumn1 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn2 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn3 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn4 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn5 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn6 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn7 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn8 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn9 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn10 = new DataGridViewTextBoxColumn();
+ dataGridViewTextBoxColumn11 = new DataGridViewTextBoxColumn();
+ homeSummaryCard.SuspendLayout();
+ homeConfigCard.SuspendLayout();
+ homeMemberCard.SuspendLayout();
+ homeLogCard.SuspendLayout();
+ wechatHookCard.SuspendLayout();
+ wechatProtocolCard.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)numWechatInterval).BeginInit();
+ wechatLogCard.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)gridWechatLogs).BeginInit();
+ alipayConfigCard.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)numAlipayInterval).BeginInit();
+ alipayLogCard.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)gridAlipayLogs).BeginInit();
+ settingsListenCard.SuspendLayout();
+ settingsEmailCard.SuspendLayout();
+ titlebar.SuspendLayout();
+ bottomBar.SuspendLayout();
+ contentHost.SuspendLayout();
+ pageSettings.SuspendLayout();
+ pageAlipay.SuspendLayout();
+ pageWechat.SuspendLayout();
+ pageHome.SuspendLayout();
SuspendLayout();
//
+ // homeSummaryCard
+ //
+ homeSummaryCard.BackColor = Color.White;
+ homeSummaryCard.Controls.Add(lblSummaryTitle);
+ homeSummaryCard.Controls.Add(lblSummaryDesc);
+ homeSummaryCard.Location = new Point(31, 28);
+ homeSummaryCard.Margin = new Padding(5, 4, 5, 4);
+ homeSummaryCard.Name = "homeSummaryCard";
+ homeSummaryCard.Size = new Size(1697, 169);
+ homeSummaryCard.TabIndex = 3;
+ homeSummaryCard.Tag = "home-summary";
+ //
+ // lblSummaryTitle
+ //
+ lblSummaryTitle.AutoSizeMode = TAutoSize.Auto;
+ lblSummaryTitle.Font = new Font("Microsoft YaHei UI", 22F);
+ lblSummaryTitle.Location = new Point(44, 34);
+ lblSummaryTitle.Margin = new Padding(5, 4, 5, 4);
+ lblSummaryTitle.Name = "lblSummaryTitle";
+ lblSummaryTitle.Size = new Size(610, 56);
+ lblSummaryTitle.TabIndex = 0;
+ lblSummaryTitle.Text = "欢迎使用 V免签 PC 监听客户端";
+ //
+ // lblSummaryDesc
+ //
+ lblSummaryDesc.ForeColor = Color.DimGray;
+ lblSummaryDesc.Location = new Point(110, 90);
+ lblSummaryDesc.Margin = new Padding(5, 4, 5, 4);
+ lblSummaryDesc.Name = "lblSummaryDesc";
+ lblSummaryDesc.Size = new Size(1540, 45);
+ lblSummaryDesc.TabIndex = 1;
+ lblSummaryDesc.Text = "当前阶段先打通“PC端本地监听 -> V免签服务端回调 -> 心跳检测”链路,整体布局按 AntdUI Demo 风格复刻。";
+ //
+ // homeConfigCard
+ //
+ homeConfigCard.BackColor = Color.White;
+ homeConfigCard.Controls.Add(btnSaveConfig);
+ homeConfigCard.Controls.Add(btnHeartbeatCheck);
+ homeConfigCard.Controls.Add(chkHeartbeatEnabled);
+ homeConfigCard.Controls.Add(lblHeartbeatDesc);
+ homeConfigCard.Controls.Add(lblServerUrlTitle);
+ homeConfigCard.Controls.Add(txtServerUrl);
+ homeConfigCard.Controls.Add(lblApiKeyTitle);
+ homeConfigCard.Controls.Add(txtApiKey);
+ homeConfigCard.Location = new Point(31, 226);
+ homeConfigCard.Margin = new Padding(5, 4, 5, 4);
+ homeConfigCard.Name = "homeConfigCard";
+ homeConfigCard.Size = new Size(836, 551);
+ homeConfigCard.TabIndex = 2;
+ homeConfigCard.Tag = "home-config";
+ //
+ // btnSaveConfig
+ //
+ btnSaveConfig.Location = new Point(38, 333);
+ btnSaveConfig.Margin = new Padding(5, 4, 5, 4);
+ btnSaveConfig.Name = "btnSaveConfig";
+ btnSaveConfig.Size = new Size(371, 78);
+ btnSaveConfig.TabIndex = 0;
+ btnSaveConfig.Text = "保存配置";
+ btnSaveConfig.Type = TTypeMini.Primary;
+ btnSaveConfig.Click += btnSaveConfig_Click;
+ //
+ // btnHeartbeatCheck
+ //
+ btnHeartbeatCheck.Location = new Point(427, 333);
+ btnHeartbeatCheck.Margin = new Padding(5, 4, 5, 4);
+ btnHeartbeatCheck.Name = "btnHeartbeatCheck";
+ btnHeartbeatCheck.Size = new Size(371, 78);
+ btnHeartbeatCheck.TabIndex = 1;
+ btnHeartbeatCheck.Text = "心跳检测";
+ btnHeartbeatCheck.Type = TTypeMini.Primary;
+ btnHeartbeatCheck.Click += btnHeartbeatCheck_Click;
+ //
+ // chkHeartbeatEnabled
+ //
+ chkHeartbeatEnabled.Location = new Point(38, 432);
+ chkHeartbeatEnabled.Margin = new Padding(5, 4, 5, 4);
+ chkHeartbeatEnabled.Name = "chkHeartbeatEnabled";
+ chkHeartbeatEnabled.Size = new Size(97, 78);
+ chkHeartbeatEnabled.TabIndex = 2;
+ chkHeartbeatEnabled.CheckedChanged += chkHeartbeatEnabled_CheckedChanged;
+ //
+ // lblHeartbeatDesc
+ //
+ lblHeartbeatDesc.AutoSizeMode = TAutoSize.Auto;
+ lblHeartbeatDesc.ForeColor = Color.DimGray;
+ lblHeartbeatDesc.Location = new Point(141, 439);
+ lblHeartbeatDesc.Margin = new Padding(5, 4, 5, 4);
+ lblHeartbeatDesc.Name = "lblHeartbeatDesc";
+ lblHeartbeatDesc.Size = new Size(72, 23);
+ lblHeartbeatDesc.TabIndex = 3;
+ lblHeartbeatDesc.Text = "自动心跳";
+ //
+ // lblServerUrlTitle
+ //
+ lblServerUrlTitle.AutoSizeMode = TAutoSize.Auto;
+ lblServerUrlTitle.Location = new Point(38, 28);
+ lblServerUrlTitle.Margin = new Padding(5, 4, 5, 4);
+ lblServerUrlTitle.Name = "lblServerUrlTitle";
+ lblServerUrlTitle.Size = new Size(85, 23);
+ lblServerUrlTitle.TabIndex = 4;
+ lblServerUrlTitle.Text = "V免签地址";
+ //
+ // txtServerUrl
+ //
+ txtServerUrl.Location = new Point(38, 67);
+ txtServerUrl.Margin = new Padding(5, 4, 5, 4);
+ txtServerUrl.Name = "txtServerUrl";
+ txtServerUrl.PlaceholderText = "例如:https://你的域名/";
+ txtServerUrl.Size = new Size(760, 78);
+ txtServerUrl.TabIndex = 5;
+ //
+ // lblApiKeyTitle
+ //
+ lblApiKeyTitle.AutoSizeMode = TAutoSize.Auto;
+ lblApiKeyTitle.Location = new Point(38, 164);
+ lblApiKeyTitle.Margin = new Padding(5, 4, 5, 4);
+ lblApiKeyTitle.Name = "lblApiKeyTitle";
+ lblApiKeyTitle.Size = new Size(144, 23);
+ lblApiKeyTitle.TabIndex = 6;
+ lblApiKeyTitle.Text = "通信密钥 / Token";
+ //
+ // txtApiKey
+ //
+ txtApiKey.Location = new Point(38, 204);
+ txtApiKey.Margin = new Padding(5, 4, 5, 4);
+ txtApiKey.Name = "txtApiKey";
+ txtApiKey.PlaceholderText = "请输入与服务端密钥";
+ txtApiKey.Size = new Size(760, 78);
+ txtApiKey.TabIndex = 7;
+ //
+ // homeMemberCard
+ //
+ homeMemberCard.BackColor = Color.White;
+ homeMemberCard.Controls.Add(lblMemberPlaceholder);
+ homeMemberCard.Location = new Point(893, 226);
+ homeMemberCard.Margin = new Padding(5, 4, 5, 4);
+ homeMemberCard.Name = "homeMemberCard";
+ homeMemberCard.Size = new Size(836, 181);
+ homeMemberCard.TabIndex = 1;
+ homeMemberCard.Tag = "home-member";
+ //
+ // lblMemberPlaceholder
+ //
+ lblMemberPlaceholder.ForeColor = Color.DimGray;
+ lblMemberPlaceholder.Location = new Point(38, 79);
+ lblMemberPlaceholder.Margin = new Padding(5, 4, 5, 4);
+ lblMemberPlaceholder.Name = "lblMemberPlaceholder";
+ lblMemberPlaceholder.Size = new Size(761, 73);
+ lblMemberPlaceholder.TabIndex = 0;
+ lblMemberPlaceholder.Text = "预留区域:后续用于会员登录、设备绑定、解绑与状态展示。";
+ //
+ // homeLogCard
+ //
+ homeLogCard.BackColor = Color.White;
+ homeLogCard.Controls.Add(btnClearLog);
+ homeLogCard.Controls.Add(txtLog);
+ homeLogCard.Location = new Point(31, 706);
+ homeLogCard.Margin = new Padding(5, 4, 5, 4);
+ homeLogCard.Name = "homeLogCard";
+ homeLogCard.Size = new Size(1697, 424);
+ homeLogCard.TabIndex = 0;
+ homeLogCard.Tag = "home-log";
+ //
+ // btnClearLog
+ //
+ btnClearLog.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ btnClearLog.Ghost = true;
+ btnClearLog.Location = new Point(1563, 16);
+ btnClearLog.Margin = new Padding(5, 4, 5, 4);
+ btnClearLog.Name = "btnClearLog";
+ btnClearLog.Size = new Size(92, 36);
+ btnClearLog.TabIndex = 0;
+ btnClearLog.Text = "清空";
+ btnClearLog.Type = TTypeMini.Primary;
+ btnClearLog.Click += btnClearLog_Click;
+ //
+ // txtLog
+ //
+ txtLog.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ txtLog.BackColor = Color.Black;
+ txtLog.BorderStyle = BorderStyle.FixedSingle;
+ txtLog.ForeColor = Color.Lime;
+ txtLog.Location = new Point(38, 71);
+ txtLog.Margin = new Padding(5, 4, 5, 4);
+ txtLog.Multiline = true;
+ txtLog.Name = "txtLog";
+ txtLog.ReadOnly = true;
+ txtLog.ScrollBars = ScrollBars.Vertical;
+ txtLog.Size = new Size(1617, 315);
+ txtLog.TabIndex = 1;
+ //
+ // wechatHookCard
+ //
+ wechatHookCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ wechatHookCard.BackColor = Color.White;
+ wechatHookCard.Controls.Add(btnSelectWechatPath);
+ wechatHookCard.Controls.Add(btnWechatHookStart);
+ wechatHookCard.Controls.Add(txtWechatPath);
+ wechatHookCard.Location = new Point(31, 28);
+ wechatHookCard.Margin = new Padding(5, 4, 5, 4);
+ wechatHookCard.Name = "wechatHookCard";
+ wechatHookCard.Size = new Size(2088, 395);
+ wechatHookCard.TabIndex = 2;
+ wechatHookCard.Tag = "wechat-hook";
+ //
+ // btnSelectWechatPath
+ //
+ btnSelectWechatPath.Ghost = true;
+ btnSelectWechatPath.Location = new Point(497, 116);
+ btnSelectWechatPath.Margin = new Padding(5, 4, 5, 4);
+ btnSelectWechatPath.Name = "btnSelectWechatPath";
+ btnSelectWechatPath.Size = new Size(92, 36);
+ btnSelectWechatPath.TabIndex = 0;
+ btnSelectWechatPath.Text = "选择路径";
+ btnSelectWechatPath.Type = TTypeMini.Primary;
+ btnSelectWechatPath.Click += btnSelectWechatPath_Click;
+ //
+ // btnWechatHookStart
+ //
+ btnWechatHookStart.Location = new Point(38, 311);
+ btnWechatHookStart.Margin = new Padding(5, 4, 5, 4);
+ btnWechatHookStart.Name = "btnWechatHookStart";
+ btnWechatHookStart.Size = new Size(168, 42);
+ btnWechatHookStart.TabIndex = 1;
+ btnWechatHookStart.Text = "1.启动微信";
+ btnWechatHookStart.Type = TTypeMini.Primary;
+ btnWechatHookStart.Click += btnWechatHookStart_Click;
+ //
+ // txtWechatPath
+ //
+ txtWechatPath.Location = new Point(38, 116);
+ txtWechatPath.Margin = new Padding(5, 4, 5, 4);
+ txtWechatPath.Name = "txtWechatPath";
+ txtWechatPath.PlaceholderText = "微信.exe 路径";
+ txtWechatPath.Size = new Size(440, 78);
+ txtWechatPath.TabIndex = 2;
+ //
+ // wechatProtocolCard
+ //
+ wechatProtocolCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ wechatProtocolCard.BackColor = Color.White;
+ wechatProtocolCard.Controls.Add(btnWechatSidAuto);
+ wechatProtocolCard.Controls.Add(numWechatInterval);
+ wechatProtocolCard.Controls.Add(chkWheel);
+ wechatProtocolCard.Controls.Add(btnWechatProtocolStart);
+ wechatProtocolCard.Controls.Add(lblWechatSidTitle);
+ wechatProtocolCard.Controls.Add(txtWechatId);
+ wechatProtocolCard.Controls.Add(lblWechatFrequencyTitle);
+ wechatProtocolCard.Controls.Add(lblWechatPollingTitle);
+ wechatProtocolCard.Location = new Point(893, 28);
+ wechatProtocolCard.Margin = new Padding(5, 4, 5, 4);
+ wechatProtocolCard.Name = "wechatProtocolCard";
+ wechatProtocolCard.Size = new Size(2088, 395);
+ wechatProtocolCard.TabIndex = 1;
+ wechatProtocolCard.Tag = "wechat-protocol";
+ //
+ // btnWechatSidAuto
+ //
+ btnWechatSidAuto.Ghost = true;
+ btnWechatSidAuto.Location = new Point(616, 116);
+ btnWechatSidAuto.Margin = new Padding(5, 4, 5, 4);
+ btnWechatSidAuto.Name = "btnWechatSidAuto";
+ btnWechatSidAuto.Size = new Size(92, 36);
+ btnWechatSidAuto.TabIndex = 0;
+ btnWechatSidAuto.Text = "自动获取";
+ btnWechatSidAuto.Type = TTypeMini.Primary;
+ btnWechatSidAuto.Click += btnWechatSidAuto_Click;
+ //
+ // numWechatInterval
+ //
+ numWechatInterval.Location = new Point(38, 257);
+ numWechatInterval.Margin = new Padding(5, 4, 5, 4);
+ numWechatInterval.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
+ numWechatInterval.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
+ numWechatInterval.Name = "numWechatInterval";
+ numWechatInterval.Size = new Size(96, 30);
+ numWechatInterval.TabIndex = 1;
+ numWechatInterval.Value = new decimal(new int[] { 5, 0, 0, 0 });
+ //
+ // chkWheel
+ //
+ chkWheel.AutoSizeMode = TAutoSize.Auto;
+ chkWheel.Location = new Point(431, 280);
+ chkWheel.Margin = new Padding(5, 4, 5, 4);
+ chkWheel.Name = "chkWheel";
+ chkWheel.Size = new Size(118, 46);
+ chkWheel.TabIndex = 2;
+ chkWheel.Text = "接口轮询";
+ //
+ // btnWechatProtocolStart
+ //
+ btnWechatProtocolStart.Location = new Point(38, 311);
+ btnWechatProtocolStart.Margin = new Padding(5, 4, 5, 4);
+ btnWechatProtocolStart.Name = "btnWechatProtocolStart";
+ btnWechatProtocolStart.Size = new Size(120, 42);
+ btnWechatProtocolStart.TabIndex = 3;
+ btnWechatProtocolStart.Text = "2.开始监听";
+ btnWechatProtocolStart.Type = TTypeMini.Primary;
+ btnWechatProtocolStart.Click += btnWechatProtocolStart_Click;
+ //
+ // lblWechatSidTitle
+ //
+ lblWechatSidTitle.AutoSizeMode = TAutoSize.Auto;
+ lblWechatSidTitle.Location = new Point(38, 73);
+ lblWechatSidTitle.Margin = new Padding(5, 4, 5, 4);
+ lblWechatSidTitle.Name = "lblWechatSidTitle";
+ lblWechatSidTitle.Size = new Size(71, 23);
+ lblWechatSidTitle.TabIndex = 4;
+ lblWechatSidTitle.Text = "微信 SID";
+ //
+ // txtWechatId
+ //
+ txtWechatId.Location = new Point(38, 116);
+ txtWechatId.Margin = new Padding(5, 4, 5, 4);
+ txtWechatId.Name = "txtWechatId";
+ txtWechatId.PlaceholderText = "可选";
+ txtWechatId.Size = new Size(559, 78);
+ txtWechatId.TabIndex = 5;
+ //
+ // lblWechatFrequencyTitle
+ //
+ lblWechatFrequencyTitle.AutoSizeMode = TAutoSize.Auto;
+ lblWechatFrequencyTitle.Location = new Point(38, 204);
+ lblWechatFrequencyTitle.Margin = new Padding(5, 4, 5, 4);
+ lblWechatFrequencyTitle.Name = "lblWechatFrequencyTitle";
+ lblWechatFrequencyTitle.Size = new Size(126, 23);
+ lblWechatFrequencyTitle.TabIndex = 6;
+ lblWechatFrequencyTitle.Text = "监控频率(秒)";
+ //
+ // lblWechatPollingTitle
+ //
+ lblWechatPollingTitle.AutoSizeMode = TAutoSize.Auto;
+ lblWechatPollingTitle.Location = new Point(431, 204);
+ lblWechatPollingTitle.Margin = new Padding(5, 4, 5, 4);
+ lblWechatPollingTitle.Name = "lblWechatPollingTitle";
+ lblWechatPollingTitle.Size = new Size(72, 23);
+ lblWechatPollingTitle.TabIndex = 7;
+ lblWechatPollingTitle.Text = "接口轮询";
+ //
+ // wechatLogCard
+ //
+ wechatLogCard.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ wechatLogCard.BackColor = Color.White;
+ wechatLogCard.Controls.Add(btnClearWechatLog);
+ wechatLogCard.Controls.Add(gridWechatLogs);
+ wechatLogCard.Location = new Point(31, 452);
+ wechatLogCard.Margin = new Padding(5, 4, 5, 4);
+ wechatLogCard.Name = "wechatLogCard";
+ wechatLogCard.Size = new Size(2949, 1912);
+ wechatLogCard.TabIndex = 0;
+ wechatLogCard.Tag = "wechat-log";
+ //
+ // btnClearWechatLog
+ //
+ btnClearWechatLog.Anchor = AnchorStyles.Top | AnchorStyles.Right;
+ btnClearWechatLog.Ghost = true;
+ btnClearWechatLog.Location = new Point(2818, 16);
+ btnClearWechatLog.Margin = new Padding(5, 4, 5, 4);
+ btnClearWechatLog.Name = "btnClearWechatLog";
+ btnClearWechatLog.Size = new Size(92, 36);
+ btnClearWechatLog.TabIndex = 0;
+ btnClearWechatLog.Text = "清空";
+ btnClearWechatLog.Type = TTypeMini.Primary;
+ btnClearWechatLog.Click += btnClearWechatLog_Click;
+ //
+ // gridWechatLogs
+ //
+ gridWechatLogs.AllowUserToAddRows = false;
+ gridWechatLogs.AllowUserToDeleteRows = false;
+ gridWechatLogs.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ gridWechatLogs.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+ gridWechatLogs.BackgroundColor = Color.White;
+ dataGridViewCellStyle1.Alignment = DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle1.BackColor = SystemColors.Control;
+ dataGridViewCellStyle1.Font = new Font("Microsoft YaHei UI", 9F);
+ dataGridViewCellStyle1.ForeColor = SystemColors.WindowText;
+ dataGridViewCellStyle1.SelectionBackColor = SystemColors.Highlight;
+ dataGridViewCellStyle1.SelectionForeColor = SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = DataGridViewTriState.True;
+ gridWechatLogs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ gridWechatLogs.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ gridWechatLogs.Columns.AddRange(new DataGridViewColumn[] { dataGridViewTextBoxColumn1, dataGridViewTextBoxColumn2, dataGridViewTextBoxColumn3, dataGridViewTextBoxColumn4, dataGridViewTextBoxColumn5 });
+ dataGridViewCellStyle2.Alignment = DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = SystemColors.Window;
+ dataGridViewCellStyle2.Font = new Font("Microsoft YaHei UI", 9F);
+ dataGridViewCellStyle2.ForeColor = SystemColors.ControlText;
+ dataGridViewCellStyle2.SelectionBackColor = SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = DataGridViewTriState.False;
+ gridWechatLogs.DefaultCellStyle = dataGridViewCellStyle2;
+ gridWechatLogs.Location = new Point(38, 71);
+ gridWechatLogs.Margin = new Padding(5, 4, 5, 4);
+ gridWechatLogs.Name = "gridWechatLogs";
+ gridWechatLogs.ReadOnly = true;
+ gridWechatLogs.RowHeadersVisible = false;
+ gridWechatLogs.RowHeadersWidth = 62;
+ gridWechatLogs.RowTemplate.Height = 25;
+ gridWechatLogs.Size = new Size(2872, 1810);
+ gridWechatLogs.TabIndex = 1;
+ //
+ // alipayConfigCard
+ //
+ alipayConfigCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ alipayConfigCard.BackColor = Color.White;
+ alipayConfigCard.Controls.Add(numAlipayInterval);
+ alipayConfigCard.Controls.Add(lblAlipayDesc);
+ alipayConfigCard.Controls.Add(txtAliPath);
+ alipayConfigCard.Controls.Add(txtAliAppId);
+ alipayConfigCard.Controls.Add(txtAliPid);
+ alipayConfigCard.Location = new Point(31, 28);
+ alipayConfigCard.Margin = new Padding(5, 4, 5, 4);
+ alipayConfigCard.Name = "alipayConfigCard";
+ alipayConfigCard.Size = new Size(2949, 212);
+ alipayConfigCard.TabIndex = 1;
+ alipayConfigCard.Tag = "alipay-config";
+ //
+ // numAlipayInterval
+ //
+ numAlipayInterval.Location = new Point(1179, 72);
+ numAlipayInterval.Margin = new Padding(5, 4, 5, 4);
+ numAlipayInterval.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
+ numAlipayInterval.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
+ numAlipayInterval.Name = "numAlipayInterval";
+ numAlipayInterval.Size = new Size(96, 30);
+ numAlipayInterval.TabIndex = 0;
+ numAlipayInterval.Value = new decimal(new int[] { 5, 0, 0, 0 });
+ //
+ // lblAlipayDesc
+ //
+ lblAlipayDesc.ForeColor = Color.DimGray;
+ lblAlipayDesc.Location = new Point(38, 144);
+ lblAlipayDesc.Margin = new Padding(5, 4, 5, 4);
+ lblAlipayDesc.Name = "lblAlipayDesc";
+ lblAlipayDesc.Size = new Size(1509, 34);
+ lblAlipayDesc.TabIndex = 1;
+ lblAlipayDesc.Text = "后续这里接入支付宝真实到账监听逻辑,目前保留参数配置与回调结果展示。";
+ //
+ // txtAliPath
+ //
+ txtAliPath.Location = new Point(38, 67);
+ txtAliPath.Margin = new Padding(5, 4, 5, 4);
+ txtAliPath.Name = "txtAliPath";
+ txtAliPath.PlaceholderText = "程序路径";
+ txtAliPath.Size = new Size(428, 78);
+ txtAliPath.TabIndex = 1;
+ //
+ // txtAliAppId
+ //
+ txtAliAppId.Location = new Point(499, 67);
+ txtAliAppId.Margin = new Padding(5, 4, 5, 4);
+ txtAliAppId.Name = "txtAliAppId";
+ txtAliAppId.PlaceholderText = "AppId";
+ txtAliAppId.Size = new Size(242, 78);
+ txtAliAppId.TabIndex = 2;
+ //
+ // txtAliPid
+ //
+ txtAliPid.Location = new Point(784, 67);
+ txtAliPid.Margin = new Padding(5, 4, 5, 4);
+ txtAliPid.Name = "txtAliPid";
+ txtAliPid.PlaceholderText = "Pid/UserId";
+ txtAliPid.Size = new Size(242, 78);
+ txtAliPid.TabIndex = 3;
+ //
+ // alipayLogCard
+ //
+ alipayLogCard.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ alipayLogCard.BackColor = Color.White;
+ alipayLogCard.Controls.Add(gridAlipayLogs);
+ alipayLogCard.Location = new Point(31, 268);
+ alipayLogCard.Margin = new Padding(5, 4, 5, 4);
+ alipayLogCard.Name = "alipayLogCard";
+ alipayLogCard.Size = new Size(2949, 1985);
+ alipayLogCard.TabIndex = 0;
+ alipayLogCard.Tag = "alipay-log";
+ //
+ // gridAlipayLogs
+ //
+ gridAlipayLogs.AllowUserToAddRows = false;
+ gridAlipayLogs.AllowUserToDeleteRows = false;
+ gridAlipayLogs.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ gridAlipayLogs.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+ gridAlipayLogs.BackgroundColor = Color.White;
+ dataGridViewCellStyle3.Alignment = DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = SystemColors.Control;
+ dataGridViewCellStyle3.Font = new Font("Microsoft YaHei UI", 9F);
+ dataGridViewCellStyle3.ForeColor = SystemColors.WindowText;
+ dataGridViewCellStyle3.SelectionBackColor = SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = DataGridViewTriState.True;
+ gridAlipayLogs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
+ gridAlipayLogs.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ gridAlipayLogs.Columns.AddRange(new DataGridViewColumn[] { dataGridViewTextBoxColumn6, dataGridViewTextBoxColumn7, dataGridViewTextBoxColumn8, dataGridViewTextBoxColumn9, dataGridViewTextBoxColumn10, dataGridViewTextBoxColumn11 });
+ dataGridViewCellStyle4.Alignment = DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle4.BackColor = SystemColors.Window;
+ dataGridViewCellStyle4.Font = new Font("Microsoft YaHei UI", 9F);
+ dataGridViewCellStyle4.ForeColor = SystemColors.ControlText;
+ dataGridViewCellStyle4.SelectionBackColor = SystemColors.Highlight;
+ dataGridViewCellStyle4.SelectionForeColor = SystemColors.HighlightText;
+ dataGridViewCellStyle4.WrapMode = DataGridViewTriState.False;
+ gridAlipayLogs.DefaultCellStyle = dataGridViewCellStyle4;
+ gridAlipayLogs.Location = new Point(38, 71);
+ gridAlipayLogs.Margin = new Padding(5, 4, 5, 4);
+ gridAlipayLogs.Name = "gridAlipayLogs";
+ gridAlipayLogs.ReadOnly = true;
+ gridAlipayLogs.RowHeadersVisible = false;
+ gridAlipayLogs.RowHeadersWidth = 62;
+ gridAlipayLogs.RowTemplate.Height = 25;
+ gridAlipayLogs.Size = new Size(2872, 1810);
+ gridAlipayLogs.TabIndex = 0;
+ //
+ // settingsListenCard
+ //
+ settingsListenCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ settingsListenCard.BackColor = Color.White;
+ settingsListenCard.Controls.Add(lblSettingsInfo);
+ settingsListenCard.Controls.Add(txtServicePort);
+ settingsListenCard.Controls.Add(txtListenPath);
+ settingsListenCard.Location = new Point(31, 28);
+ settingsListenCard.Margin = new Padding(5, 4, 5, 4);
+ settingsListenCard.Name = "settingsListenCard";
+ settingsListenCard.Size = new Size(2949, 282);
+ settingsListenCard.TabIndex = 1;
+ settingsListenCard.Tag = "settings-listen";
+ //
+ // lblSettingsInfo
+ //
+ lblSettingsInfo.ForeColor = Color.DimGray;
+ lblSettingsInfo.Location = new Point(38, 152);
+ lblSettingsInfo.Margin = new Padding(5, 4, 5, 4);
+ lblSettingsInfo.Name = "lblSettingsInfo";
+ lblSettingsInfo.Size = new Size(1446, 85);
+ lblSettingsInfo.TabIndex = 0;
+ lblSettingsInfo.Text = "这个页面用于维护本地监听、邮箱通知与项目说明。";
+ //
+ // txtServicePort
+ //
+ txtServicePort.Location = new Point(38, 67);
+ txtServicePort.Margin = new Padding(5, 4, 5, 4);
+ txtServicePort.Name = "txtServicePort";
+ txtServicePort.PlaceholderText = "8989";
+ txtServicePort.Size = new Size(257, 78);
+ txtServicePort.TabIndex = 1;
+ //
+ // txtListenPath
+ //
+ txtListenPath.Location = new Point(342, 67);
+ txtListenPath.Margin = new Padding(5, 4, 5, 4);
+ txtListenPath.Name = "txtListenPath";
+ txtListenPath.PlaceholderText = "/notify/";
+ txtListenPath.Size = new Size(342, 78);
+ txtListenPath.TabIndex = 2;
+ //
+ // settingsEmailCard
+ //
+ settingsEmailCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
+ settingsEmailCard.BackColor = Color.White;
+ settingsEmailCard.Controls.Add(btnEmailSave);
+ settingsEmailCard.Controls.Add(btnEmailTest);
+ settingsEmailCard.Controls.Add(lblSenderEmailTitle);
+ settingsEmailCard.Controls.Add(txtSenderEmail);
+ settingsEmailCard.Controls.Add(lblSmtpHostTitle);
+ settingsEmailCard.Controls.Add(txtSmtpHost);
+ settingsEmailCard.Controls.Add(lblSmtpPortTitle);
+ settingsEmailCard.Controls.Add(txtSmtpPort);
+ settingsEmailCard.Controls.Add(lblNotifyEmailTitle);
+ settingsEmailCard.Controls.Add(txtNotifyEmail);
+ settingsEmailCard.Controls.Add(lblEmailAuthCodeTitle);
+ settingsEmailCard.Controls.Add(txtEmailAuthCode);
+ settingsEmailCard.Location = new Point(31, 333);
+ settingsEmailCard.Margin = new Padding(5, 4, 5, 4);
+ settingsEmailCard.Name = "settingsEmailCard";
+ settingsEmailCard.Size = new Size(2949, 593);
+ settingsEmailCard.TabIndex = 0;
+ settingsEmailCard.Tag = "settings-email";
+ //
+ // btnEmailSave
+ //
+ btnEmailSave.Location = new Point(38, 494);
+ btnEmailSave.Margin = new Padding(5, 4, 5, 4);
+ btnEmailSave.Name = "btnEmailSave";
+ btnEmailSave.Size = new Size(110, 42);
+ btnEmailSave.TabIndex = 0;
+ btnEmailSave.Text = "保存配置";
+ btnEmailSave.Type = TTypeMini.Primary;
+ btnEmailSave.Click += btnEmailSave_Click;
+ //
+ // btnEmailTest
+ //
+ btnEmailTest.Ghost = true;
+ btnEmailTest.Location = new Point(229, 494);
+ btnEmailTest.Margin = new Padding(5, 4, 5, 4);
+ btnEmailTest.Name = "btnEmailTest";
+ btnEmailTest.Size = new Size(110, 42);
+ btnEmailTest.TabIndex = 1;
+ btnEmailTest.Text = "邮箱测试";
+ btnEmailTest.Type = TTypeMini.Primary;
+ btnEmailTest.Click += btnEmailTest_Click;
+ //
+ // lblSenderEmailTitle
+ //
+ lblSenderEmailTitle.AutoSizeMode = TAutoSize.Auto;
+ lblSenderEmailTitle.Location = new Point(38, 73);
+ lblSenderEmailTitle.Margin = new Padding(5, 4, 5, 4);
+ lblSenderEmailTitle.Name = "lblSenderEmailTitle";
+ lblSenderEmailTitle.Size = new Size(72, 23);
+ lblSenderEmailTitle.TabIndex = 2;
+ lblSenderEmailTitle.Text = "发送邮箱";
+ //
+ // txtSenderEmail
+ //
+ txtSenderEmail.Location = new Point(38, 110);
+ txtSenderEmail.Margin = new Padding(5, 4, 5, 4);
+ txtSenderEmail.Name = "txtSenderEmail";
+ txtSenderEmail.PlaceholderText = "例如:yunzer_cn@163.com";
+ txtSenderEmail.Size = new Size(714, 78);
+ txtSenderEmail.TabIndex = 3;
+ //
+ // lblSmtpHostTitle
+ //
+ lblSmtpHostTitle.AutoSizeMode = TAutoSize.Auto;
+ lblSmtpHostTitle.Location = new Point(38, 204);
+ lblSmtpHostTitle.Margin = new Padding(5, 4, 5, 4);
+ lblSmtpHostTitle.Name = "lblSmtpHostTitle";
+ lblSmtpHostTitle.Size = new Size(91, 23);
+ lblSmtpHostTitle.TabIndex = 4;
+ lblSmtpHostTitle.Text = "SMTP 主机";
+ //
+ // txtSmtpHost
+ //
+ txtSmtpHost.Location = new Point(38, 243);
+ txtSmtpHost.Margin = new Padding(5, 4, 5, 4);
+ txtSmtpHost.Name = "txtSmtpHost";
+ txtSmtpHost.PlaceholderText = "例如:smtp.163.com";
+ txtSmtpHost.Size = new Size(714, 78);
+ txtSmtpHost.TabIndex = 5;
+ //
+ // lblSmtpPortTitle
+ //
+ lblSmtpPortTitle.AutoSizeMode = TAutoSize.Auto;
+ lblSmtpPortTitle.Location = new Point(38, 338);
+ lblSmtpPortTitle.Margin = new Padding(5, 4, 5, 4);
+ lblSmtpPortTitle.Name = "lblSmtpPortTitle";
+ lblSmtpPortTitle.Size = new Size(91, 23);
+ lblSmtpPortTitle.TabIndex = 6;
+ lblSmtpPortTitle.Text = "SMTP 端口";
+ //
+ // txtSmtpPort
+ //
+ txtSmtpPort.Location = new Point(38, 377);
+ txtSmtpPort.Margin = new Padding(5, 4, 5, 4);
+ txtSmtpPort.Name = "txtSmtpPort";
+ txtSmtpPort.PlaceholderText = "例如:465";
+ txtSmtpPort.Size = new Size(314, 78);
+ txtSmtpPort.TabIndex = 7;
+ //
+ // lblNotifyEmailTitle
+ //
+ lblNotifyEmailTitle.AutoSizeMode = TAutoSize.Auto;
+ lblNotifyEmailTitle.Location = new Point(38, 472);
+ lblNotifyEmailTitle.Margin = new Padding(5, 4, 5, 4);
+ lblNotifyEmailTitle.Name = "lblNotifyEmailTitle";
+ lblNotifyEmailTitle.Size = new Size(72, 23);
+ lblNotifyEmailTitle.TabIndex = 8;
+ lblNotifyEmailTitle.Text = "通知邮箱";
+ //
+ // txtNotifyEmail
+ //
+ txtNotifyEmail.Location = new Point(38, 511);
+ txtNotifyEmail.Margin = new Padding(5, 4, 5, 4);
+ txtNotifyEmail.Name = "txtNotifyEmail";
+ txtNotifyEmail.PlaceholderText = "用于接收测试邮件";
+ txtNotifyEmail.Size = new Size(714, 78);
+ txtNotifyEmail.TabIndex = 9;
+ //
+ // lblEmailAuthCodeTitle
+ //
+ lblEmailAuthCodeTitle.AutoSizeMode = TAutoSize.Auto;
+ lblEmailAuthCodeTitle.Location = new Point(799, 472);
+ lblEmailAuthCodeTitle.Margin = new Padding(5, 4, 5, 4);
+ lblEmailAuthCodeTitle.Name = "lblEmailAuthCodeTitle";
+ lblEmailAuthCodeTitle.Size = new Size(54, 23);
+ lblEmailAuthCodeTitle.TabIndex = 10;
+ lblEmailAuthCodeTitle.Text = "授权码";
+ //
+ // txtEmailAuthCode
+ //
+ txtEmailAuthCode.Location = new Point(799, 511);
+ txtEmailAuthCode.Margin = new Padding(5, 4, 5, 4);
+ txtEmailAuthCode.Name = "txtEmailAuthCode";
+ txtEmailAuthCode.PlaceholderText = "用于发送测试邮件";
+ txtEmailAuthCode.Size = new Size(456, 78);
+ txtEmailAuthCode.TabIndex = 11;
+ //
+ // titlebar
+ //
+ titlebar.Controls.Add(lblTopNotice);
+ titlebar.Controls.Add(lblAlipayStatusValue);
+ titlebar.Controls.Add(lblWechatStatusValue);
+ titlebar.DividerShow = true;
+ titlebar.Dock = DockStyle.Top;
+ titlebar.Location = new Point(0, 0);
+ titlebar.Margin = new Padding(5, 4, 5, 4);
+ titlebar.Name = "titlebar";
+ titlebar.ShowButton = true;
+ titlebar.ShowIcon = true;
+ titlebar.Size = new Size(1886, 62);
+ titlebar.SubText = "V0.0.1";
+ titlebar.TabIndex = 3;
+ titlebar.Text = "V免签PC客户端";
+ //
+ // lblTopNotice
+ //
+ lblTopNotice.Dock = DockStyle.Fill;
+ lblTopNotice.ForeColor = Color.DimGray;
+ lblTopNotice.Location = new Point(237, 0);
+ lblTopNotice.Margin = new Padding(5, 4, 5, 4);
+ lblTopNotice.Name = "lblTopNotice";
+ lblTopNotice.Size = new Size(1055, 62);
+ lblTopNotice.TabIndex = 0;
+ lblTopNotice.Text = "监听未启动";
+ lblTopNotice.TextAlign = ContentAlignment.MiddleRight;
+ //
+ // lblAlipayStatusValue
+ //
+ lblAlipayStatusValue.Dock = DockStyle.Right;
+ lblAlipayStatusValue.ForeColor = Color.Red;
+ lblAlipayStatusValue.Location = new Point(1292, 0);
+ lblAlipayStatusValue.Margin = new Padding(5, 4, 5, 4);
+ lblAlipayStatusValue.Name = "lblAlipayStatusValue";
+ lblAlipayStatusValue.Size = new Size(189, 62);
+ lblAlipayStatusValue.TabIndex = 1;
+ lblAlipayStatusValue.Text = "支付宝: 离线";
+ lblAlipayStatusValue.TextAlign = ContentAlignment.MiddleRight;
+ //
+ // lblWechatStatusValue
+ //
+ lblWechatStatusValue.Dock = DockStyle.Right;
+ lblWechatStatusValue.ForeColor = Color.Red;
+ lblWechatStatusValue.Location = new Point(1481, 0);
+ lblWechatStatusValue.Margin = new Padding(5, 4, 5, 4);
+ lblWechatStatusValue.Name = "lblWechatStatusValue";
+ lblWechatStatusValue.Size = new Size(189, 62);
+ lblWechatStatusValue.TabIndex = 2;
+ lblWechatStatusValue.Text = "微信: 离线";
+ lblWechatStatusValue.TextAlign = ContentAlignment.MiddleRight;
+ //
+ // bottomBar
+ //
+ bottomBar.Controls.Add(lblRuntimeBottom);
+ bottomBar.Controls.Add(buttonCollapse);
+ bottomBar.DividerShow = true;
+ bottomBar.Dock = DockStyle.Bottom;
+ bottomBar.Location = new Point(0, 1356);
+ bottomBar.Margin = new Padding(5, 4, 5, 4);
+ bottomBar.Name = "bottomBar";
+ bottomBar.Size = new Size(1886, 56);
+ bottomBar.TabIndex = 2;
+ bottomBar.UseLeftMargin = false;
+ //
+ // lblRuntimeBottom
+ //
+ lblRuntimeBottom.Dock = DockStyle.Right;
+ lblRuntimeBottom.ForeColor = Color.Gray;
+ lblRuntimeBottom.Location = new Point(1540, 0);
+ lblRuntimeBottom.Margin = new Padding(5, 0, 5, 0);
+ lblRuntimeBottom.Name = "lblRuntimeBottom";
+ lblRuntimeBottom.Size = new Size(346, 56);
+ lblRuntimeBottom.TabIndex = 0;
+ lblRuntimeBottom.Text = "00天:00时:00分:00秒";
+ lblRuntimeBottom.TextAlign = ContentAlignment.MiddleRight;
+ //
+ // buttonCollapse
+ //
+ buttonCollapse.Dock = DockStyle.Left;
+ buttonCollapse.Ghost = true;
+ buttonCollapse.IconRatio = 0.6F;
+ buttonCollapse.IconSvg = "MenuUnfoldOutlined";
+ buttonCollapse.Location = new Point(0, 0);
+ buttonCollapse.Margin = new Padding(5, 4, 5, 4);
+ buttonCollapse.Name = "buttonCollapse";
+ buttonCollapse.Radius = 0;
+ buttonCollapse.Size = new Size(79, 56);
+ buttonCollapse.TabIndex = 1;
+ buttonCollapse.Toggle = true;
+ buttonCollapse.ToggleIconSvg = "MenuFoldOutlined";
+ buttonCollapse.WaveSize = 0;
+ buttonCollapse.Click += ButtonCollapse_Click;
+ //
+ // menu
+ //
+ menu.Dock = DockStyle.Left;
+ menu.Font = new Font("Microsoft YaHei UI", 9F);
+ menu.IconRatio = 1F;
+ menu.Indent = true;
+ menu.Location = new Point(0, 62);
+ menu.Margin = new Padding(5, 4, 5, 4);
+ menu.Name = "menu";
+ menu.Radius = 0;
+ menu.Size = new Size(346, 1294);
+ menu.TabIndex = 1;
+ menu.Unique = true;
+ menu.SelectChanged += Menu_SelectChanged;
+ //
+ // contentHost
+ //
+ contentHost.BackColor = Color.White;
+ contentHost.Controls.Add(pageSettings);
+ contentHost.Controls.Add(pageAlipay);
+ contentHost.Controls.Add(pageWechat);
+ contentHost.Controls.Add(pageHome);
+ contentHost.Dock = DockStyle.Fill;
+ contentHost.Location = new Point(346, 62);
+ contentHost.Margin = new Padding(5, 4, 5, 4);
+ contentHost.Name = "contentHost";
+ contentHost.Size = new Size(1540, 1294);
+ contentHost.TabIndex = 0;
+ //
+ // pageSettings
+ //
+ pageSettings.AutoScroll = true;
+ pageSettings.BackColor = Color.FromArgb(245, 247, 250);
+ pageSettings.Controls.Add(settingsEmailCard);
+ pageSettings.Controls.Add(settingsListenCard);
+ pageSettings.Dock = DockStyle.Fill;
+ pageSettings.Location = new Point(0, 0);
+ pageSettings.Margin = new Padding(5, 4, 5, 4);
+ pageSettings.Name = "pageSettings";
+ pageSettings.Size = new Size(1540, 1294);
+ pageSettings.TabIndex = 0;
+ //
+ // pageAlipay
+ //
+ pageAlipay.AutoScroll = true;
+ pageAlipay.BackColor = Color.FromArgb(245, 247, 250);
+ pageAlipay.Controls.Add(alipayLogCard);
+ pageAlipay.Controls.Add(alipayConfigCard);
+ pageAlipay.Dock = DockStyle.Fill;
+ pageAlipay.Location = new Point(0, 0);
+ pageAlipay.Margin = new Padding(5, 4, 5, 4);
+ pageAlipay.Name = "pageAlipay";
+ pageAlipay.Size = new Size(1540, 1294);
+ pageAlipay.TabIndex = 1;
+ //
+ // pageWechat
+ //
+ pageWechat.AutoScroll = true;
+ pageWechat.BackColor = Color.FromArgb(245, 247, 250);
+ pageWechat.Controls.Add(wechatLogCard);
+ pageWechat.Controls.Add(wechatProtocolCard);
+ pageWechat.Controls.Add(wechatHookCard);
+ pageWechat.Dock = DockStyle.Fill;
+ pageWechat.Location = new Point(0, 0);
+ pageWechat.Margin = new Padding(5, 4, 5, 4);
+ pageWechat.Name = "pageWechat";
+ pageWechat.Size = new Size(1540, 1294);
+ pageWechat.TabIndex = 2;
+ //
+ // pageHome
+ //
+ pageHome.AutoScroll = true;
+ pageHome.BackColor = Color.FromArgb(245, 247, 250);
+ pageHome.Controls.Add(homeLogCard);
+ pageHome.Controls.Add(homeMemberCard);
+ pageHome.Controls.Add(homeConfigCard);
+ pageHome.Controls.Add(homeSummaryCard);
+ pageHome.Dock = DockStyle.Fill;
+ pageHome.Location = new Point(0, 0);
+ pageHome.Margin = new Padding(5, 4, 5, 4);
+ pageHome.Name = "pageHome";
+ pageHome.Size = new Size(1540, 1294);
+ pageHome.TabIndex = 3;
+ //
+ // dataGridViewTextBoxColumn1
+ //
+ dataGridViewTextBoxColumn1.HeaderText = "收款方";
+ dataGridViewTextBoxColumn1.MinimumWidth = 8;
+ dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
+ dataGridViewTextBoxColumn1.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn2
+ //
+ dataGridViewTextBoxColumn2.HeaderText = "金额";
+ dataGridViewTextBoxColumn2.MinimumWidth = 8;
+ dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
+ dataGridViewTextBoxColumn2.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn3
+ //
+ dataGridViewTextBoxColumn3.HeaderText = "时间";
+ dataGridViewTextBoxColumn3.MinimumWidth = 8;
+ dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
+ dataGridViewTextBoxColumn3.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn4
+ //
+ dataGridViewTextBoxColumn4.HeaderText = "备注/订单号";
+ dataGridViewTextBoxColumn4.MinimumWidth = 8;
+ dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
+ dataGridViewTextBoxColumn4.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn5
+ //
+ dataGridViewTextBoxColumn5.HeaderText = "回调状态";
+ dataGridViewTextBoxColumn5.MinimumWidth = 8;
+ dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
+ dataGridViewTextBoxColumn5.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn6
+ //
+ dataGridViewTextBoxColumn6.HeaderText = "序号";
+ dataGridViewTextBoxColumn6.MinimumWidth = 8;
+ dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6";
+ dataGridViewTextBoxColumn6.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn7
+ //
+ dataGridViewTextBoxColumn7.HeaderText = "订单号";
+ dataGridViewTextBoxColumn7.MinimumWidth = 8;
+ dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7";
+ dataGridViewTextBoxColumn7.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn8
+ //
+ dataGridViewTextBoxColumn8.HeaderText = "金额";
+ dataGridViewTextBoxColumn8.MinimumWidth = 8;
+ dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8";
+ dataGridViewTextBoxColumn8.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn9
+ //
+ dataGridViewTextBoxColumn9.HeaderText = "时间";
+ dataGridViewTextBoxColumn9.MinimumWidth = 8;
+ dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9";
+ dataGridViewTextBoxColumn9.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn10
+ //
+ dataGridViewTextBoxColumn10.HeaderText = "备注";
+ dataGridViewTextBoxColumn10.MinimumWidth = 8;
+ dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10";
+ dataGridViewTextBoxColumn10.ReadOnly = true;
+ //
+ // dataGridViewTextBoxColumn11
+ //
+ dataGridViewTextBoxColumn11.HeaderText = "回调状态";
+ dataGridViewTextBoxColumn11.MinimumWidth = 8;
+ dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11";
+ dataGridViewTextBoxColumn11.ReadOnly = true;
+ //
// Form1
//
- AutoScaleDimensions = new SizeF(7F, 17F);
+ AutoScaleDimensions = new SizeF(11F, 24F);
AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(1280, 820);
- MinimumSize = new Size(1180, 760);
+ BackColor = Color.White;
+ ClientSize = new Size(1886, 1412);
+ Controls.Add(contentHost);
+ Controls.Add(menu);
+ Controls.Add(bottomBar);
+ Controls.Add(titlebar);
+ Font = new Font("Microsoft YaHei UI", 9F);
+ Margin = new Padding(5, 4, 5, 4);
+ MaximizeBox = false;
+ MaximumSize = new Size(1886, 1412);
+ MinimumSize = new Size(1886, 1412);
Name = "Form1";
StartPosition = FormStartPosition.CenterScreen;
- Text = "V免签 PC端监听客户端";
+ Text = "V免签 Demo";
+ homeSummaryCard.ResumeLayout(false);
+ homeSummaryCard.PerformLayout();
+ homeConfigCard.ResumeLayout(false);
+ homeConfigCard.PerformLayout();
+ homeMemberCard.ResumeLayout(false);
+ homeLogCard.ResumeLayout(false);
+ homeLogCard.PerformLayout();
+ wechatHookCard.ResumeLayout(false);
+ wechatProtocolCard.ResumeLayout(false);
+ wechatProtocolCard.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)numWechatInterval).EndInit();
+ wechatLogCard.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)gridWechatLogs).EndInit();
+ alipayConfigCard.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)numAlipayInterval).EndInit();
+ alipayLogCard.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)gridAlipayLogs).EndInit();
+ settingsListenCard.ResumeLayout(false);
+ settingsEmailCard.ResumeLayout(false);
+ settingsEmailCard.PerformLayout();
+ titlebar.ResumeLayout(false);
+ bottomBar.ResumeLayout(false);
+ contentHost.ResumeLayout(false);
+ pageSettings.ResumeLayout(false);
+ pageAlipay.ResumeLayout(false);
+ pageWechat.ResumeLayout(false);
+ pageHome.ResumeLayout(false);
ResumeLayout(false);
}
+
+ private WinPanel homeSummaryCard;
+ private WinPanel homeConfigCard;
+ private WinPanel homeMemberCard;
+ private WinPanel homeLogCard;
+ private WinPanel wechatHookCard;
+ private WinPanel wechatProtocolCard;
+ private WinPanel wechatLogCard;
+ private WinPanel alipayConfigCard;
+ private AntdUI.Label lblAlipayDesc;
+ private WinPanel alipayLogCard;
+ private WinPanel settingsListenCard;
+ private AntdUI.Label lblSettingsInfo;
+ private WinPanel settingsEmailCard;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn6;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
+ private DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
}
}
diff --git a/Form1.cs b/Form1.cs
index 105790f..2f94b90 100644
--- a/Form1.cs
+++ b/Form1.cs
@@ -1,16 +1,18 @@
-using System.Net;
-using System.Net.Http.Json;
+using AntdUI;
+using MailKit.Net.Smtp;
+using MailKit.Security;
+using MimeKit;
+using System.ComponentModel;
using System.Diagnostics;
-using System.Text.RegularExpressions;
+using System.IO;
+using System.Net;
+using System.Net.Http;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
-using AntdUI;
-using MailKit.Net.Smtp;
-using MailKit.Security;
-using MimeKit;
+using System.Text.RegularExpressions;
using System.Windows.Automation;
using WinLabel = System.Windows.Forms.Label;
using WinPanel = System.Windows.Forms.Panel;
@@ -129,75 +131,43 @@ namespace Vmianqian
public Form1()
{
InitializeComponent();
- BuildAntdDemoStyleUi();
+ InitializeDesignerLayout();
+ ReloadMenuItems();
+ SelectPage("home");
+
+ if (IsInDesigner()) return;
+
Load += Form1_Load;
FormClosing += Form1_FormClosing;
}
- private void BuildAntdDemoStyleUi()
+ private static bool IsInDesigner()
{
- BackColor = Color.White;
- Font = new Font("Microsoft YaHei UI", 9F);
- Text = "V免签 Demo";
- var fixedWindowSize = new Size(1200, 1000);
- MinimumSize = fixedWindowSize;
- MaximumSize = fixedWindowSize;
- Size = fixedWindowSize;
- MaximizeBox = false;
-
- BuildTitlebar();
- BuildBottomBar();
- BuildMenu();
- BuildContentHost();
-
- Controls.Add(contentHost);
- Controls.Add(menu);
- Controls.Add(bottomBar);
- Controls.Add(titlebar);
+ return LicenseManager.UsageMode == LicenseUsageMode.Designtime;
}
- private void BuildTitlebar()
+ private void InitializeDesignerLayout()
{
- titlebar = new AntdUI.PageHeader
- {
- Dock = DockStyle.Top,
- Height = 44,
- DividerShow = true,
- ShowButton = true,
- ShowIcon = true,
- Text = "V免签PC客户端",
- SubText = "V0.0.1"
- };
+ pageHome.Resize += (_, _) => LayoutHomePage();
+ pageWechat.Resize += (_, _) => LayoutWechatPage();
+ pageAlipay.Resize += (_, _) => LayoutAlipayPage();
+ pageSettings.Resize += (_, _) => LayoutSettingsPage();
- lblTopNotice = new AntdUI.Label
- {
- Dock = DockStyle.Fill,
- Text = "监听未启动",
- TextAlign = ContentAlignment.MiddleRight,
- ForeColor = Color.DimGray
- };
+ pageHome.HorizontalScroll.Enabled = false;
+ pageHome.HorizontalScroll.Visible = false;
+ pageWechat.HorizontalScroll.Enabled = false;
+ pageWechat.HorizontalScroll.Visible = false;
+ pageAlipay.HorizontalScroll.Enabled = false;
+ pageAlipay.HorizontalScroll.Visible = false;
+ pageSettings.HorizontalScroll.Enabled = false;
+ pageSettings.HorizontalScroll.Visible = false;
- lblAlipayStatusValue = new AntdUI.Label
- {
- Dock = DockStyle.Right,
- Width = 120,
- Text = "支付宝: 离线",
- TextAlign = ContentAlignment.MiddleRight,
- ForeColor = Color.Red
- };
+ LayoutHomePage();
+ LayoutWechatPage();
+ LayoutAlipayPage();
+ LayoutSettingsPage();
- lblWechatStatusValue = new AntdUI.Label
- {
- Dock = DockStyle.Right,
- Width = 120,
- Text = "微信: 离线",
- TextAlign = ContentAlignment.MiddleRight,
- ForeColor = Color.Red
- };
-
- titlebar.Controls.Add(lblTopNotice);
- titlebar.Controls.Add(lblAlipayStatusValue);
- titlebar.Controls.Add(lblWechatStatusValue);
+ if (IsInDesigner()) return;
EnableWindowDrag(titlebar);
EnableWindowDrag(lblTopNotice);
@@ -205,61 +175,6 @@ namespace Vmianqian
EnableWindowDrag(lblAlipayStatusValue);
}
- private void BuildBottomBar()
- {
- bottomBar = new AntdUI.PageHeader
- {
- Dock = DockStyle.Bottom,
- Height = 40,
- DividerShow = true,
- UseLeftMargin = false
- };
-
- buttonCollapse = new AntdUI.Button
- {
- Dock = DockStyle.Left,
- Width = 50,
- Ghost = true,
- Radius = 0,
- WaveSize = 0,
- IconRatio = 0.6F,
- IconSvg = "MenuUnfoldOutlined",
- ToggleIconSvg = "MenuFoldOutlined",
- Toggle = true
- };
- buttonCollapse.Click += ButtonCollapse_Click;
-
- lblRuntimeBottom = new WinLabel
- {
- Dock = DockStyle.Right,
- Width = 220,
- TextAlign = ContentAlignment.MiddleRight,
- ForeColor = Color.Gray,
- Text = "00天:00时:00分:00秒"
- };
-
- bottomBar.Controls.Add(lblRuntimeBottom);
- bottomBar.Controls.Add(buttonCollapse);
- }
-
- private void BuildMenu()
- {
- menu = new AntdUI.Menu
- {
- Dock = DockStyle.Left,
- Width = 220,
- Collapsed = false,
- Unique = true,
- IconRatio = 1F,
- Indent = true,
- Round = false,
- Radius = 0,
- Font = new Font("Microsoft YaHei UI", 9F)
- };
- menu.SelectChanged += Menu_SelectChanged;
- ReloadMenuItems();
- }
-
private void ReloadMenuItems()
{
menu.Items.Clear();
@@ -269,58 +184,10 @@ namespace Vmianqian
menu.Items.Add(new AntdUI.MenuItem { Text = "软件设置", IconSvg = "SettingOutlined", Tag = "settings" });
}
- private void BuildContentHost()
- {
- contentHost = new WinPanel
- {
- Dock = DockStyle.Fill,
- BackColor = Color.White
- };
-
- pageHome = CreatePagePanel();
- pageWechat = CreatePagePanel();
- pageAlipay = CreatePagePanel();
- pageSettings = CreatePagePanel();
-
- contentHost.Controls.Add(pageSettings);
- contentHost.Controls.Add(pageAlipay);
- contentHost.Controls.Add(pageWechat);
- contentHost.Controls.Add(pageHome);
-
- BuildHomePage();
- BuildWechatPage();
- BuildAlipayPage();
- BuildSettingsPage();
-
- pageHome.Resize += (_, _) => LayoutHomePage();
- pageWechat.Resize += (_, _) => LayoutWechatPage();
- pageAlipay.Resize += (_, _) => LayoutAlipayPage();
- pageSettings.Resize += (_, _) => LayoutSettingsPage();
-
- LayoutHomePage();
- LayoutWechatPage();
- LayoutAlipayPage();
- LayoutSettingsPage();
- }
-
- private WinPanel CreatePagePanel()
- {
- var panel = new WinPanel
- {
- Dock = DockStyle.Fill,
- BackColor = Color.FromArgb(245, 247, 250),
- AutoScroll = true
- };
- panel.HorizontalScroll.Enabled = false;
- panel.HorizontalScroll.Visible = false;
- return panel;
- }
-
private void LayoutHomePage()
{
const int margin = 20;
const int gap = 16;
- const int cardHeight = 420;
var pageAvailableWidth = Math.Max(0, pageHome.ClientSize.Width - margin * 2);
pageHome.SuspendLayout();
@@ -356,13 +223,14 @@ namespace Vmianqian
memberCard.SuspendLayout();
var availableWidth = Math.Max(0, pageAvailableWidth);
- var rowBottom = top + cardHeight;
var rowWidth = Math.Max(0, availableWidth - gap);
var leftWidth = rowWidth / 2;
var rightWidth = rowWidth - leftWidth;
+ var configHeight = 390;
+ var memberHeight = 128;
- configCard.Bounds = new Rectangle(margin, top, leftWidth, cardHeight);
- memberCard.Bounds = new Rectangle(margin + leftWidth + gap, top, rightWidth, cardHeight);
+ configCard.Bounds = new Rectangle(margin, top, leftWidth, configHeight);
+ memberCard.Bounds = new Rectangle(margin + leftWidth + gap, top, rightWidth, memberHeight);
const int contentLeft = 24;
const int contentRight = 24;
@@ -371,25 +239,24 @@ namespace Vmianqian
lblServerUrlTitle.Location = new Point(contentLeft, 20);
txtServerUrl.Location = new Point(contentLeft, 48);
txtServerUrl.Width = inputWidth;
- lblApiKeyTitle.Location = new Point(contentLeft, 94);
- txtApiKey.Location = new Point(contentLeft, 122);
+ lblApiKeyTitle.Location = new Point(contentLeft, 118);
+ txtApiKey.Location = new Point(contentLeft, 146);
txtApiKey.Width = inputWidth;
- const int actionTop = 252;
+ const int actionTop = 236;
const int buttonGap = 12;
- var actionButtonWidth = Math.Max(72, (contentWidth - buttonGap * 2) / 3);
+ var actionButtonWidth = Math.Max(96, (contentWidth - buttonGap) / 2);
btnSaveConfig.Location = new Point(24, actionTop);
- btnSaveConfig.Size = new Size(actionButtonWidth, 36);
- btnToggleService.Location = new Point(btnSaveConfig.Right + buttonGap, actionTop);
- btnToggleService.Size = new Size(actionButtonWidth, 36);
- btnHeartbeatCheck.Location = new Point(btnToggleService.Right + buttonGap, actionTop);
- btnHeartbeatCheck.Size = new Size(actionButtonWidth, 34);
+ btnSaveConfig.Size = new Size(actionButtonWidth, 55);
+ btnHeartbeatCheck.Location = new Point(btnSaveConfig.Right + buttonGap, actionTop);
+ btnHeartbeatCheck.Size = new Size(actionButtonWidth, 55);
- const int heartbeatTop = 300;
+ const int heartbeatTop = 310;
chkHeartbeatEnabled.Location = new Point(contentLeft, heartbeatTop - 4);
lblHeartbeatDesc.Location = new Point(chkHeartbeatEnabled.Right + 4, heartbeatTop + 1);
lblMemberPlaceholder.Size = new Size(Math.Max(220, memberCard.ClientSize.Width - 48), 52);
+ var rowBottom = Math.Max(configCard.Bottom, memberCard.Bottom);
var logCardTop = rowBottom + margin;
var homeLogCard = FindCard(pageHome, "home-log");
if (homeLogCard != null)
@@ -417,7 +284,11 @@ namespace Vmianqian
}
if (btnClearLog != null)
{
- btnClearLog.Location = new Point(Math.Max(24, logCard.ClientSize.Width - btnClearLog.Width - 24), 14);
+ btnClearLog.Size = new Size(92, 36);
+ btnClearLog.Location = new Point(
+ Math.Max(24, logCard.ClientSize.Width - btnClearLog.Width - 24),
+ 14
+ );
}
logCard.ResumeLayout(false);
}
@@ -441,27 +312,30 @@ namespace Vmianqian
var totalWidth = Math.Max(0, pageWechat.ClientSize.Width - margin * 2 - gap);
var hookWidth = totalWidth / 2;
var protocolWidth = totalWidth - hookWidth;
- hookCard.Bounds = new Rectangle(margin, 20, hookWidth, 240);
- protocolCard.Bounds = new Rectangle(hookCard.Right + gap, 20, protocolWidth, 240);
+ hookCard.Bounds = new Rectangle(margin, 20, hookWidth, 280);
+ protocolCard.Bounds = new Rectangle(hookCard.Right + gap, 20, protocolWidth, 280);
var hookPathWidth = Math.Max(140, hookCard.ClientSize.Width - 24 - 24 - btnSelectWechatPath.Width - 12);
txtWechatPath.Width = hookPathWidth;
+ btnSelectWechatPath.Size = new Size(92, 36);
btnSelectWechatPath.Location = new Point(txtWechatPath.Left + txtWechatPath.Width + 12, txtWechatPath.Top);
- btnWechatHookStart.Size = new Size(120, 36);
- btnWechatHookStart.Location = new Point(24, hookCard.ClientSize.Height - btnWechatHookStart.Height - 16);
+ btnWechatHookStart.Size = new Size(168, 42);
+ btnWechatHookStart.Location = new Point(24, 182);
lblWechatSidTitle.Location = new Point(24, 54);
+ btnWechatSidAuto.Size = new Size(92, 36);
var sidWidth = Math.Max(180, protocolCard.ClientSize.Width - 48 - btnWechatSidAuto.Width - 12);
txtWechatId.Width = sidWidth;
btnWechatSidAuto.Location = new Point(txtWechatId.Left + txtWechatId.Width + 12, txtWechatId.Top);
var halfWidth = Math.Max(160, (sidWidth - 12) / 2);
var rightColX = 24 + halfWidth + 12;
- lblWechatFrequencyTitle.Location = new Point(24, 122);
- numWechatInterval.Location = new Point(24, 150);
- lblWechatPollingTitle.Location = new Point(rightColX, 122);
- chkWheel.Location = new Point(rightColX, 150);
- btnWechatProtocolStart.Size = new Size(120, 36);
- btnWechatProtocolStart.Location = new Point(24, protocolCard.ClientSize.Height - btnWechatProtocolStart.Height - 16);
+ lblWechatFrequencyTitle.Location = new Point(24, 146);
+ numWechatInterval.Location = new Point(24, 182);
+ numWechatInterval.Size = new Size(96, 30);
+ lblWechatPollingTitle.Location = new Point(rightColX, 146);
+ chkWheel.Location = new Point(rightColX, 198);
+ btnWechatProtocolStart.Size = new Size(120, 42);
+ btnWechatProtocolStart.Location = new Point(24, btnWechatHookStart.Bottom - btnWechatProtocolStart.Height);
}
if (gridCard != null && hookCard != null)
@@ -479,6 +353,7 @@ namespace Vmianqian
if (btnClearWechatLog != null)
{
+ btnClearWechatLog.Size = new Size(92, 36);
btnClearWechatLog.Location = new Point(Math.Max(24, gridCard.ClientSize.Width - btnClearWechatLog.Width - 24), 14);
}
}
@@ -493,6 +368,7 @@ namespace Vmianqian
{
var bottom = pageAlipay.ClientSize.Height - 20;
gridCard.Height = Math.Max(260, bottom - gridCard.Top);
+ numAlipayInterval.Size = new Size(96, 30);
if (gridAlipayLogs != null)
{
@@ -529,6 +405,8 @@ namespace Vmianqian
lblEmailAuthCodeTitle.Location = new Point(authCodeLeft, 278);
txtEmailAuthCode.Location = new Point(authCodeLeft, 306);
txtEmailAuthCode.Width = authCodeWidth;
+ btnEmailSave.Size = new Size(110, 42);
+ btnEmailTest.Size = new Size(110, 42);
btnEmailSave.Location = new Point(24, 350);
btnEmailTest.Location = new Point(btnEmailSave.Right + 12, 350);
}
@@ -557,395 +435,6 @@ namespace Vmianqian
return null;
}
- private void BuildHomePage()
- {
- var summaryCard = CreateCardPanel(new Rectangle(20, 20, 1080, 120));
- summaryCard.Tag = "home-summary";
-
- lblSummaryTitle = new AntdUI.Label
- {
- Text = "欢迎使用 V免签 PC 监听客户端",
- Font = new Font("Microsoft YaHei UI", 22F, FontStyle.Regular),
- AutoSize = true,
- Location = new Point(28, 24)
- };
-
- lblSummaryDesc = new AntdUI.Label
- {
- Text = "当前阶段先打通“PC端本地监听 -> V免签服务端回调 -> 心跳检测”链路,整体布局按 AntdUI Demo 风格复刻。",
- AutoSize = false,
- Location = new Point(70, 64),
- ForeColor = Color.DimGray
- };
-
- summaryCard.Controls.Add(lblSummaryTitle);
- summaryCard.Controls.Add(lblSummaryDesc);
-
- var configCard = CreateCardPanel(new Rectangle(20, 160, 1080, 360));
- configCard.Tag = "home-config";
-
- lblServerUrlTitle = CreateTitleLabel("V免签地址", 24, 20);
- configCard.Controls.Add(lblServerUrlTitle);
- txtServerUrl = CreateInput(24, 48, 500, "例如:https://你的域名/");
- configCard.Controls.Add(txtServerUrl);
-
- lblApiKeyTitle = CreateTitleLabel("通信密钥 / Token", 24, 94);
- configCard.Controls.Add(lblApiKeyTitle);
- txtApiKey = CreateInput(24, 122, 500, "请输入与服务端密钥");
- configCard.Controls.Add(txtApiKey);
-
- btnSaveConfig = new AntdUI.Button
- {
- Text = "保存配置",
- Type = TTypeMini.Primary,
- Location = new Point(24, 252),
- Size = new Size(110, 36),
- };
- btnSaveConfig.Click += btnSaveConfig_Click;
-
- btnToggleService = new AntdUI.Button
- {
- Text = "启动监听",
- Type = TTypeMini.Primary,
- Location = new Point(146, 292),
- Size = new Size(110, 36),
- };
- btnToggleService.Click += btnToggleService_Click;
-
- configCard.Controls.Add(btnSaveConfig);
- configCard.Controls.Add(btnToggleService);
-
- chkHeartbeatEnabled = new AntdUI.Switch
- {
- Location = new Point(24, 296),
- Size = new Size(62, 28),
- AutoSize = false
- };
- chkHeartbeatEnabled.CheckedChanged += chkHeartbeatEnabled_CheckedChanged;
-
- lblHeartbeatDesc = new AntdUI.Label
- {
- Text = "自动心跳",
- AutoSize = true,
- Location = new Point(90, 301),
- ForeColor = Color.DimGray
- };
-
- btnHeartbeatCheck = new AntdUI.Button
- {
- Text = "心跳检测",
- Type = TTypeMini.Primary,
- Location = new Point(268, 292),
- Size = new Size(110, 34)
- };
- btnHeartbeatCheck.Click += btnHeartbeatCheck_Click;
-
- configCard.Controls.Add(chkHeartbeatEnabled);
- configCard.Controls.Add(lblHeartbeatDesc);
- configCard.Controls.Add(btnHeartbeatCheck);
-
- var memberCard = CreateCardPanel(new Rectangle(660, 160, 440, 360));
- memberCard.Tag = "home-member";
- memberCard.Controls.Add(CreateTitleLabel("会员登录绑定", 24, 20));
- lblMemberPlaceholder = new AntdUI.Label
- {
- Text = "预留区域:后续用于会员登录、设备绑定、解绑与状态展示。",
- AutoSize = false,
- Location = new Point(24, 56),
- Size = new Size(392, 52),
- ForeColor = Color.DimGray
- };
- memberCard.Controls.Add(lblMemberPlaceholder);
-
- var logCard = CreateCardPanel(new Rectangle(20, 500, 1080, 300));
- logCard.Tag = "home-log";
-
- logCard.Controls.Add(CreateTitleLabel("运行日志", 24, 18));
- btnClearLog = new AntdUI.Button
- {
- Text = "清空",
- Type = TTypeMini.Primary,
- Ghost = true,
- Location = new Point(980, 14),
- Size = new Size(72, 30),
- Anchor = AnchorStyles.Top | AnchorStyles.Right
- };
- btnClearLog.Click += (_, _) => txtLog.Clear();
- logCard.Controls.Add(btnClearLog);
-
- txtLog = new WinTextBox
- {
- Location = new Point(24, 50),
- Size = new Size(1030, 224),
- Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right,
- Multiline = true,
- ScrollBars = ScrollBars.Vertical,
- ReadOnly = true,
- BackColor = Color.Black,
- ForeColor = Color.Lime,
- BorderStyle = BorderStyle.FixedSingle
- };
- logCard.Controls.Add(txtLog);
-
- pageHome.Controls.Add(summaryCard);
- pageHome.Controls.Add(configCard);
- pageHome.Controls.Add(memberCard);
- pageHome.Controls.Add(logCard);
- }
-
- private void BuildWechatPage()
- {
- var hookCard = CreateCardPanel(new Rectangle(20, 20, 532, 240));
- hookCard.Tag = "wechat-hook";
- hookCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
- hookCard.Controls.Add(CreateTitleLabel("Hook 功能", 24, 18));
- hookCard.Controls.Add(CreateTitleLabel("微信安装路径", 24, 54));
- txtWechatPath = CreateInput(24, 48, 390, "微信.exe 路径");
- txtWechatPath.Location = new Point(24, 82);
- txtWechatPath.Width = 280;
- hookCard.Controls.Add(txtWechatPath);
- btnSelectWechatPath = new AntdUI.Button
- {
- Text = "选择路径",
- Type = TTypeMini.Primary,
- Ghost = true,
- Location = new Point(316, 82),
- Size = new Size(92, 36)
- };
- btnSelectWechatPath.Click += btnSelectWechatPath_Click;
- hookCard.Controls.Add(btnSelectWechatPath);
- btnWechatHookStart = new AntdUI.Button
- {
- Text = "开始监听",
- Type = TTypeMini.Primary,
- Location = new Point(24, 128),
- Size = new Size(120, 36)
- };
- btnWechatHookStart.Click += btnWechatHookStart_Click;
- hookCard.Controls.Add(btnWechatHookStart);
-
- var protocolCard = CreateCardPanel(new Rectangle(568, 20, 532, 240));
- protocolCard.Tag = "wechat-protocol";
- protocolCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
- protocolCard.Controls.Add(CreateTitleLabel("协议功能", 24, 18));
-
- lblWechatSidTitle = CreateTitleLabel("微信 SID", 24, 54);
- protocolCard.Controls.Add(lblWechatSidTitle);
- txtWechatId = CreateInput(24, 82, 356, "可选");
- protocolCard.Controls.Add(txtWechatId);
- btnWechatSidAuto = new AntdUI.Button
- {
- Text = "自动获取",
- Type = TTypeMini.Primary,
- Ghost = true,
- Location = new Point(392, 82),
- Size = new Size(92, 36)
- };
- btnWechatSidAuto.Click += btnWechatSidAuto_Click;
- protocolCard.Controls.Add(btnWechatSidAuto);
-
- lblWechatFrequencyTitle = CreateTitleLabel("监控频率(秒)", 24, 122);
- protocolCard.Controls.Add(lblWechatFrequencyTitle);
- numWechatInterval = new NumericUpDown
- {
- Location = new Point(24, 150),
- Size = new Size(96, 23),
- Minimum = 1,
- Maximum = 3600,
- Value = 5
- };
- protocolCard.Controls.Add(numWechatInterval);
-
- lblWechatPollingTitle = CreateTitleLabel("接口轮询", 274, 122);
- protocolCard.Controls.Add(lblWechatPollingTitle);
- chkWheel = new AntdUI.Checkbox
- {
- Text = "接口轮询",
- Location = new Point(274, 150),
- AutoSize = true
- };
- protocolCard.Controls.Add(chkWheel);
- btnWechatProtocolStart = new AntdUI.Button
- {
- Text = "开始监听",
- Type = TTypeMini.Primary,
- Location = new Point(24, 196),
- Size = new Size(120, 36)
- };
- btnWechatProtocolStart.Click += btnWechatProtocolStart_Click;
- protocolCard.Controls.Add(btnWechatProtocolStart);
-
- var gridCard = CreateCardPanel(new Rectangle(20, 280, 1080, 450));
- gridCard.Tag = "wechat-log";
- gridCard.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
- gridCard.Controls.Add(CreateTitleLabel("微信监听记录", 24, 18));
- btnClearWechatLog = new AntdUI.Button
- {
- Text = "清空",
- Type = TTypeMini.Primary,
- Ghost = true,
- Location = new Point(980, 14),
- Size = new Size(72, 30),
- Anchor = AnchorStyles.Top | AnchorStyles.Right
- };
- btnClearWechatLog.Click += (_, _) => gridWechatLogs.Rows.Clear();
- gridCard.Controls.Add(btnClearWechatLog);
-
- gridWechatLogs = CreateWechatGrid();
- gridWechatLogs.Location = new Point(24, 50);
- gridWechatLogs.Size = new Size(1030, 464);
- gridWechatLogs.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
- gridCard.Controls.Add(gridWechatLogs);
-
- pageWechat.Controls.Add(hookCard);
- pageWechat.Controls.Add(protocolCard);
- pageWechat.Controls.Add(gridCard);
- UpdateWechatMonitorButtons();
- }
-
- private void BuildAlipayPage()
- {
- var card = CreateCardPanel(new Rectangle(20, 20, 1080, 150));
- card.Tag = "alipay-config";
- card.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-
- card.Controls.Add(CreateTitleLabel("旺旺/支付宝路径", 24, 20));
- txtAliPath = CreateInput(24, 48, 300, "程序路径");
- card.Controls.Add(txtAliPath);
-
- card.Controls.Add(CreateTitleLabel("应用 ID", 350, 20));
- txtAliAppId = CreateInput(350, 48, 170, "AppId");
- card.Controls.Add(txtAliAppId);
-
- card.Controls.Add(CreateTitleLabel("用户 ID", 550, 20));
- txtAliPid = CreateInput(550, 48, 170, "Pid/UserId");
- card.Controls.Add(txtAliPid);
-
- card.Controls.Add(CreateTitleLabel("轮询频率(秒)", 750, 20));
- numAlipayInterval = new NumericUpDown
- {
- Location = new Point(750, 51),
- Size = new Size(96, 23),
- Minimum = 1,
- Maximum = 3600,
- Value = 5
- };
- card.Controls.Add(numAlipayInterval);
-
- var desc = new AntdUI.Label
- {
- Text = "后续这里接入支付宝真实到账监听逻辑,目前保留参数配置与回调结果展示。",
- AutoSize = false,
- Location = new Point(24, 102),
- Size = new Size(960, 24),
- ForeColor = Color.DimGray
- };
- card.Controls.Add(desc);
-
- var gridCard = CreateCardPanel(new Rectangle(20, 190, 1080, 540));
- gridCard.Tag = "alipay-log";
- gridCard.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
- gridCard.Controls.Add(CreateTitleLabel("支付宝监听记录", 24, 18));
-
- gridAlipayLogs = CreateAlipayGrid();
- gridAlipayLogs.Location = new Point(24, 50);
- gridAlipayLogs.Size = new Size(1030, 464);
- gridAlipayLogs.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
- gridCard.Controls.Add(gridAlipayLogs);
-
- pageAlipay.Controls.Add(card);
- pageAlipay.Controls.Add(gridCard);
- }
-
- private void BuildSettingsPage()
- {
- var listenCard = CreateCardPanel(new Rectangle(20, 20, 1080, 200));
- listenCard.Tag = "settings-listen";
- listenCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-
- listenCard.Controls.Add(CreateTitleLabel("本地监听端口", 24, 20));
- txtServicePort = CreateInput(24, 48, 180, "8989");
- listenCard.Controls.Add(txtServicePort);
-
- listenCard.Controls.Add(CreateTitleLabel("本地监听路径", 240, 20));
- txtListenPath = CreateInput(240, 48, 240, "/notify/");
- listenCard.Controls.Add(txtListenPath);
-
- var info = new AntdUI.Label
- {
- Text = "这个页面用于维护本地监听、邮箱通知与项目说明。",
- AutoSize = false,
- Location = new Point(24, 108),
- Size = new Size(920, 60),
- ForeColor = Color.DimGray
- };
- listenCard.Controls.Add(info);
-
- var emailCard = CreateCardPanel(new Rectangle(20, 236, 1080, 420));
- emailCard.Tag = "settings-email";
- emailCard.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
-
- emailCard.Controls.Add(CreateTitleLabel("邮箱通知配置", 24, 20));
- lblSenderEmailTitle = CreateTitleLabel("发送邮箱", 24, 56);
- emailCard.Controls.Add(lblSenderEmailTitle);
- txtSenderEmail = CreateInput(24, 84, 500, "例如:yunzer_cn@163.com");
- emailCard.Controls.Add(txtSenderEmail);
-
- lblSmtpHostTitle = CreateTitleLabel("SMTP 主机", 24, 130);
- emailCard.Controls.Add(lblSmtpHostTitle);
- txtSmtpHost = CreateInput(24, 158, 500, "例如:smtp.163.com");
- emailCard.Controls.Add(txtSmtpHost);
-
- lblSmtpPortTitle = CreateTitleLabel("SMTP 端口", 24, 204);
- emailCard.Controls.Add(lblSmtpPortTitle);
- txtSmtpPort = CreateInput(24, 232, 220, "例如:465");
- emailCard.Controls.Add(txtSmtpPort);
-
- lblNotifyEmailTitle = CreateTitleLabel("通知邮箱", 24, 278);
- emailCard.Controls.Add(lblNotifyEmailTitle);
- txtNotifyEmail = CreateInput(24, 306, 500, "用于接收测试邮件");
- emailCard.Controls.Add(txtNotifyEmail);
-
- lblEmailAuthCodeTitle = CreateTitleLabel("授权码", 560, 278);
- emailCard.Controls.Add(lblEmailAuthCodeTitle);
- txtEmailAuthCode = CreateInput(560, 306, 320, "用于发送测试邮件");
- emailCard.Controls.Add(txtEmailAuthCode);
-
- btnEmailSave = new AntdUI.Button
- {
- Text = "保存配置",
- Type = TTypeMini.Primary,
- Location = new Point(24, 350),
- Size = new Size(110, 36)
- };
- btnEmailSave.Click += btnEmailSave_Click;
- emailCard.Controls.Add(btnEmailSave);
-
- btnEmailTest = new AntdUI.Button
- {
- Text = "邮箱测试",
- Type = TTypeMini.Primary,
- Ghost = true,
- Location = new Point(146, 350),
- Size = new Size(110, 36)
- };
- btnEmailTest.Click += btnEmailTest_Click;
- emailCard.Controls.Add(btnEmailTest);
-
- pageSettings.Controls.Add(listenCard);
- pageSettings.Controls.Add(emailCard);
- }
-
- private WinPanel CreateCardPanel(Rectangle bounds)
- {
- return new WinPanel
- {
- Bounds = bounds,
- BackColor = Color.White,
- BorderStyle = BorderStyle.None
- };
- }
-
private AntdUI.Label CreateTitleLabel(string text, int x, int y)
{
return new AntdUI.Label
@@ -961,7 +450,7 @@ namespace Vmianqian
return new AntdUI.Input
{
Location = new Point(x, y),
- Size = new Size(width, 36),
+ Size = new Size(width, 55),
PlaceholderText = placeholder
};
}
@@ -1271,6 +760,16 @@ namespace Vmianqian
Log($"微信安装路径已保存:{dialog.FileName}");
}
+ private void btnClearLog_Click(object? sender, EventArgs e)
+ {
+ txtLog.Clear();
+ }
+
+ private void btnClearWechatLog_Click(object? sender, EventArgs e)
+ {
+ gridWechatLogs.Rows.Clear();
+ }
+
private async void btnWechatSidAuto_Click(object? sender, EventArgs e)
{
if (_wechatSidCaptureCts != null)
@@ -1292,11 +791,39 @@ namespace Vmianqian
}
}
+ private void LaunchWechatForSidCapture()
+ {
+ var path = txtWechatPath?.Text?.Trim() ?? string.Empty;
+ if (string.IsNullOrWhiteSpace(path) || !File.Exists(path))
+ {
+ throw new InvalidOperationException("请先选择正确的微信程序路径(WeChat.exe/Weixin.exe/WeChatAppEx.exe)。");
+ }
+
+ var processName = Path.GetFileNameWithoutExtension(path);
+ var alreadyRunning = !string.IsNullOrWhiteSpace(processName) && Process.GetProcessesByName(processName).Length > 0;
+ if (alreadyRunning)
+ {
+ Log($"检测到微信已运行:{processName},开始直接捕获 SID。");
+ return;
+ }
+
+ var startInfo = new ProcessStartInfo
+ {
+ FileName = path,
+ WorkingDirectory = Path.GetDirectoryName(path) ?? AppContext.BaseDirectory,
+ UseShellExecute = true
+ };
+
+ Process.Start(startInfo);
+ Log($"已启动微信:{path}");
+ }
+
private void StartWechatSidCapture()
{
StopWechatSidCapture();
_wechatSidCaptureCts = new CancellationTokenSource();
var token = _wechatSidCaptureCts.Token;
+ UpdateWechatMonitorButtons();
btnWechatSidAuto.Text = "停止捕获";
btnWechatSidAuto.Type = TTypeMini.Error;
btnWechatSidAuto.Loading = true;
@@ -1307,12 +834,6 @@ namespace Vmianqian
{
try
{
- if (TryExtractSidFromClipboard(out var clipSid, out var clipVersion))
- {
- BeginInvoke(() => ApplyCapturedSid(clipSid, clipVersion, "剪贴板"));
- return;
- }
-
var result = TryExtractSidFromWechatLocalFiles();
if (!string.IsNullOrWhiteSpace(result.Sid))
{
@@ -1340,6 +861,7 @@ namespace Vmianqian
try { _wechatSidCaptureCts?.Cancel(); } catch { }
try { _wechatSidCaptureCts?.Dispose(); } catch { }
_wechatSidCaptureCts = null;
+ UpdateWechatMonitorButtons();
if (btnWechatSidAuto != null)
{
@@ -1363,13 +885,11 @@ namespace Vmianqian
private void btnWechatHookStart_Click(object? sender, EventArgs e)
{
- if (string.Equals(_wechatMonitorMode, "hook", StringComparison.Ordinal))
+ if (_wechatSidCaptureCts != null)
{
- StopWechatHook();
- _wechatMonitorMode = string.Empty;
+ StopWechatSidCapture();
UpdateWechatMonitorButtons();
- UpdateWechatStatusUi();
- Log("Hook 监听已停止。");
+ Log("SID 获取已停止。");
return;
}
@@ -1377,25 +897,14 @@ namespace Vmianqian
{
SaveUiToConfig();
SaveConfig();
- if (!string.IsNullOrWhiteSpace(_wechatMonitorMode))
- {
- StopWechatMonitoring();
- }
-
- if (string.IsNullOrWhiteSpace(txtWechatPath?.Text) || !File.Exists(txtWechatPath.Text.Trim()))
- {
- throw new InvalidOperationException("请先选择正确的微信程序路径(WeChat.exe/Weixin.exe/WeChatAppEx.exe)。");
- }
-
- StartWechatHook();
- _wechatMonitorMode = "hook";
+ LaunchWechatForSidCapture();
+ Log("SID 捕获已启动:请等待微信打开,并进入微信收款助手/收款小账本页面。");
+ StartWechatSidCapture();
UpdateWechatMonitorButtons();
- UpdateWechatStatusUi();
- Log("Hook 监听已启动(将用于监听微信通知/收款小账本)。");
}
catch (Exception ex)
{
- Log($"Hook 监听启动失败:{ex.Message}");
+ Log($"启动微信并获取 SID 失败:{ex.Message}");
MessageBox.Show(ex.Message, "启动失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
@@ -1446,12 +955,12 @@ namespace Vmianqian
return;
}
- var hookActive = string.Equals(_wechatMonitorMode, "hook", StringComparison.Ordinal);
+ var sidCaptureActive = _wechatSidCaptureCts != null;
var protocolActive = string.Equals(_wechatMonitorMode, "protocol", StringComparison.Ordinal);
- btnWechatHookStart.Text = hookActive ? "停止监听" : "开始监听";
- btnWechatHookStart.Type = hookActive ? TTypeMini.Error : TTypeMini.Primary;
- btnWechatProtocolStart.Text = protocolActive ? "停止监听" : "开始监听";
+ btnWechatHookStart.Text = sidCaptureActive ? "停止获取SID" : "1. 启动微信";
+ btnWechatHookStart.Type = sidCaptureActive ? TTypeMini.Error : TTypeMini.Primary;
+ btnWechatProtocolStart.Text = protocolActive ? "停止监听" : "2. 开始监听";
btnWechatProtocolStart.Type = protocolActive ? TTypeMini.Error : TTypeMini.Primary;
}
@@ -3060,26 +2569,6 @@ namespace Vmianqian
};
}
- private static bool TryExtractSidFromClipboard(out string sid, out string version)
- {
- sid = string.Empty;
- version = string.Empty;
- try
- {
- if (!Clipboard.ContainsText())
- {
- return false;
- }
-
- var text = Clipboard.GetText();
- return TryExtractSidFromText(text, out sid, out version);
- }
- catch
- {
- return false;
- }
- }
-
private static (string Sid, string Version, string Source) TryExtractSidFromWechatLocalFiles()
{
foreach (var root in GetWechatDataRoots())
diff --git a/Vmianqian.csproj b/Vmianqian.csproj
index 4f9251e..e6e67e8 100644
--- a/Vmianqian.csproj
+++ b/Vmianqian.csproj
@@ -5,6 +5,7 @@
net10.0-windows
enable
true
+ true
enable
local
@@ -14,15 +15,6 @@
-
-
- C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\10.0.5\UIAutomationClient.dll
-
-
- C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\10.0.5\UIAutomationTypes.dll
-
-
-
diff --git a/bin/Debug/net10.0-windows/Vmianqian.dll b/bin/Debug/net10.0-windows/Vmianqian.dll
index f024765..60a0494 100644
Binary files a/bin/Debug/net10.0-windows/Vmianqian.dll and b/bin/Debug/net10.0-windows/Vmianqian.dll differ
diff --git a/bin/Debug/net10.0-windows/Vmianqian.exe b/bin/Debug/net10.0-windows/Vmianqian.exe
index d623a2a..00f9e68 100644
Binary files a/bin/Debug/net10.0-windows/Vmianqian.exe and b/bin/Debug/net10.0-windows/Vmianqian.exe differ
diff --git a/bin/Debug/net10.0-windows/Vmianqian.pdb b/bin/Debug/net10.0-windows/Vmianqian.pdb
index 3c7f8b9..77914a5 100644
Binary files a/bin/Debug/net10.0-windows/Vmianqian.pdb and b/bin/Debug/net10.0-windows/Vmianqian.pdb differ
diff --git a/bin/Debug/net10.0-windows/appsettings.client.json b/bin/Debug/net10.0-windows/appsettings.client.json
index 218aa1e..08e6d0a 100644
--- a/bin/Debug/net10.0-windows/appsettings.client.json
+++ b/bin/Debug/net10.0-windows/appsettings.client.json
@@ -7,7 +7,7 @@
"NotifyEmail": "1066960883@qq.com",
"EmailAuthCode": "TPPMKSMvCadyzu3m",
"WechatPath": "D:\\Softwares\\Tencent\\Weixin\\Weixin.exe",
- "WechatSid": "AAHRxMH-4RkRMiXVf7NSJGhBKBwThd_tfDct27hXjkv0Ag",
+ "WechatSid": "",
"WechatApiVersion": "7.10.1",
"AlipayPath": "",
"AlipayAppId": "",
diff --git a/build-temp/AntdUI.dll b/build-temp/AntdUI.dll
new file mode 100644
index 0000000..af9fbb7
Binary files /dev/null and b/build-temp/AntdUI.dll differ
diff --git a/build-temp/BouncyCastle.Cryptography.dll b/build-temp/BouncyCastle.Cryptography.dll
new file mode 100644
index 0000000..e8d3222
Binary files /dev/null and b/build-temp/BouncyCastle.Cryptography.dll differ
diff --git a/build-temp/MailKit.dll b/build-temp/MailKit.dll
new file mode 100644
index 0000000..02212c3
Binary files /dev/null and b/build-temp/MailKit.dll differ
diff --git a/build-temp/MimeKit.dll b/build-temp/MimeKit.dll
new file mode 100644
index 0000000..da00220
Binary files /dev/null and b/build-temp/MimeKit.dll differ
diff --git a/build-temp/Vmianqian.deps.json b/build-temp/Vmianqian.deps.json
new file mode 100644
index 0000000..5ac0255
--- /dev/null
+++ b/build-temp/Vmianqian.deps.json
@@ -0,0 +1,93 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v10.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v10.0": {
+ "Vmianqian/1.0.0": {
+ "dependencies": {
+ "AntdUI": "2.3.10",
+ "MailKit": "4.16.0"
+ },
+ "runtime": {
+ "Vmianqian.dll": {}
+ }
+ },
+ "AntdUI/2.3.10": {
+ "runtime": {
+ "lib/net10.0-windows7.0/AntdUI.dll": {
+ "assemblyVersion": "2.3.10.0",
+ "fileVersion": "2.3.10.0"
+ }
+ }
+ },
+ "BouncyCastle.Cryptography/2.6.2": {
+ "runtime": {
+ "lib/net6.0/BouncyCastle.Cryptography.dll": {
+ "assemblyVersion": "2.0.0.0",
+ "fileVersion": "2.6.2.46322"
+ }
+ }
+ },
+ "MailKit/4.16.0": {
+ "dependencies": {
+ "MimeKit": "4.16.0"
+ },
+ "runtime": {
+ "lib/net10.0/MailKit.dll": {
+ "assemblyVersion": "4.16.0.0",
+ "fileVersion": "4.16.0.0"
+ }
+ }
+ },
+ "MimeKit/4.16.0": {
+ "dependencies": {
+ "BouncyCastle.Cryptography": "2.6.2"
+ },
+ "runtime": {
+ "lib/net10.0/MimeKit.dll": {
+ "assemblyVersion": "4.16.0.0",
+ "fileVersion": "4.16.0.0"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Vmianqian/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ },
+ "AntdUI/2.3.10": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-twjNYhVIw08ydcQsBC5c7/59WBXVqba4kulN48ejxUz2i37xJU6ukYqUtxEFhiQtVzmu8cmGYAjZ4HM6BOKZwg==",
+ "path": "antdui/2.3.10",
+ "hashPath": "antdui.2.3.10.nupkg.sha512"
+ },
+ "BouncyCastle.Cryptography/2.6.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==",
+ "path": "bouncycastle.cryptography/2.6.2",
+ "hashPath": "bouncycastle.cryptography.2.6.2.nupkg.sha512"
+ },
+ "MailKit/4.16.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-trJ82DOpAmo8i1jO1vNE+dGn4mPRyeYfy4swRcAGgMJhPoI1Kohf4OFJJf0+YIj4iUxgxPn8W+ht7e7KiYzSjg==",
+ "path": "mailkit/4.16.0",
+ "hashPath": "mailkit.4.16.0.nupkg.sha512"
+ },
+ "MimeKit/4.16.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-X0LFxeM4gPRIhODyY/HYS9b+zRZ7y//v59rFzgS6wLxcPuZThnMtNZHtrr0fjLyRRkg3gqJBtvW36XfUzZ7Djw==",
+ "path": "mimekit/4.16.0",
+ "hashPath": "mimekit.4.16.0.nupkg.sha512"
+ }
+ }
+}
\ No newline at end of file
diff --git a/build-temp/Vmianqian.dll b/build-temp/Vmianqian.dll
new file mode 100644
index 0000000..bfbd18f
Binary files /dev/null and b/build-temp/Vmianqian.dll differ
diff --git a/build-temp/Vmianqian.exe b/build-temp/Vmianqian.exe
new file mode 100644
index 0000000..00f9e68
Binary files /dev/null and b/build-temp/Vmianqian.exe differ
diff --git a/build-temp/Vmianqian.pdb b/build-temp/Vmianqian.pdb
new file mode 100644
index 0000000..d997f37
Binary files /dev/null and b/build-temp/Vmianqian.pdb differ
diff --git a/build-temp/Vmianqian.runtimeconfig.json b/build-temp/Vmianqian.runtimeconfig.json
new file mode 100644
index 0000000..3c285dd
--- /dev/null
+++ b/build-temp/Vmianqian.runtimeconfig.json
@@ -0,0 +1,19 @@
+{
+ "runtimeOptions": {
+ "tfm": "net10.0",
+ "frameworks": [
+ {
+ "name": "Microsoft.NETCore.App",
+ "version": "10.0.0"
+ },
+ {
+ "name": "Microsoft.WindowsDesktop.App",
+ "version": "10.0.0"
+ }
+ ],
+ "configProperties": {
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
+ "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/dotnet-tools.json b/dotnet-tools.json
new file mode 100644
index 0000000..97f37dc
--- /dev/null
+++ b/dotnet-tools.json
@@ -0,0 +1,13 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "csharpier": {
+ "version": "1.2.6",
+ "commands": [
+ "csharpier"
+ ],
+ "rollForward": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfo.cs b/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfo.cs
index 2697f90..644a29b 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfo.cs
+++ b/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfo.cs
@@ -1,9 +1,10 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
@@ -13,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Vmianqian")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+82b3bc2cf0c49cfa7245d5fdd65ef87ea19892fc")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b8577139b743128e6d1f7535c4e26f8b9f8ae07e")]
[assembly: System.Reflection.AssemblyProductAttribute("Vmianqian")]
[assembly: System.Reflection.AssemblyTitleAttribute("Vmianqian")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfoInputs.cache b/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfoInputs.cache
index 27bcdf3..c0aa811 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfoInputs.cache
+++ b/obj/Debug/net10.0-windows/Vmianqian.AssemblyInfoInputs.cache
@@ -1 +1 @@
-ebd5591aa83e3ce6dc8b4661368f70755a868c935951ae1bef6bc75ef5c3797f
+2bf683a342db48dd63c7773755779041e948fbfa65b1232aa9ccc9ab7062c89c
diff --git a/obj/Debug/net10.0-windows/Vmianqian.GlobalUsings.g.cs b/obj/Debug/net10.0-windows/Vmianqian.GlobalUsings.g.cs
index 18cabb0..3c55c3d 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.GlobalUsings.g.cs
+++ b/obj/Debug/net10.0-windows/Vmianqian.GlobalUsings.g.cs
@@ -2,9 +2,7 @@
global using System;
global using System.Collections.Generic;
global using System.Drawing;
-global using System.IO;
global using System.Linq;
-global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
global using System.Windows.Forms;
diff --git a/obj/Debug/net10.0-windows/Vmianqian.csproj.AssemblyReference.cache b/obj/Debug/net10.0-windows/Vmianqian.csproj.AssemblyReference.cache
index 695e0e9..35108ef 100644
Binary files a/obj/Debug/net10.0-windows/Vmianqian.csproj.AssemblyReference.cache and b/obj/Debug/net10.0-windows/Vmianqian.csproj.AssemblyReference.cache differ
diff --git a/obj/Debug/net10.0-windows/Vmianqian.csproj.CoreCompileInputs.cache b/obj/Debug/net10.0-windows/Vmianqian.csproj.CoreCompileInputs.cache
index 5c232f3..a97cf19 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.csproj.CoreCompileInputs.cache
+++ b/obj/Debug/net10.0-windows/Vmianqian.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-7239ca1570e58a84bff4ce01bdd3920794f5c0a911cc1d186c71d7544994c98a
+a7b3445afcbd56fec3c73f3a521fa72c62329fb7fbf05cdc5a48d209a06f572f
diff --git a/obj/Debug/net10.0-windows/Vmianqian.csproj.FileListAbsolute.txt b/obj/Debug/net10.0-windows/Vmianqian.csproj.FileListAbsolute.txt
index fd3c390..78d9f2a 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.csproj.FileListAbsolute.txt
+++ b/obj/Debug/net10.0-windows/Vmianqian.csproj.FileListAbsolute.txt
@@ -22,24 +22,6 @@ E:\Demo\C\Vmianqian\build_verify\Vmianqian.runtimeconfig.json
E:\Demo\C\Vmianqian\build_verify\Vmianqian.dll
E:\Demo\C\Vmianqian\build_verify\Vmianqian.pdb
E:\Demo\C\Vmianqian\build_verify\AntdUI.dll
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.AssemblyReference.cache
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.Form1.resources
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.GenerateResource.cache
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.GeneratedMSBuildEditorConfig.editorconfig
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.AssemblyInfoInputs.cache
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.AssemblyInfo.cs
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.CoreCompileInputs.cache
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.dll
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\refint\Vmianqian.dll
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.pdb
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.deps.json
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.runtimeconfig.json
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.dll
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.pdb
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\AntdUI.dll
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.Up2Date
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.genruntimeconfig.cache
-E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\ref\Vmianqian.dll
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\Vmianqian.exe
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\Vmianqian.deps.json
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\Vmianqian.runtimeconfig.json
@@ -49,7 +31,34 @@ E:\Demos\DemoOwns\C\VmianqianC\bin_temp\AntdUI.dll
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\BouncyCastle.Cryptography.dll
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\MailKit.dll
E:\Demos\DemoOwns\C\VmianqianC\bin_temp\MimeKit.dll
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.AssemblyReference.cache
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.Form1.resources
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.GenerateResource.cache
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.GeneratedMSBuildEditorConfig.editorconfig
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.AssemblyInfoInputs.cache
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.AssemblyInfo.cs
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.CoreCompileInputs.cache
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.exe
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.deps.json
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.runtimeconfig.json
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.dll
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.pdb
+E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\AntdUI.dll
E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\BouncyCastle.Cryptography.dll
E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\MailKit.dll
E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\MimeKit.dll
-E:\Demos\DemoOwns\C\VmianqianC\bin\Debug\net10.0-windows\Vmianqian.exe
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.csproj.Up2Date
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.dll
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\refint\Vmianqian.dll
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.pdb
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\Vmianqian.genruntimeconfig.cache
+E:\Demos\DemoOwns\C\VmianqianC\obj\Debug\net10.0-windows\ref\Vmianqian.dll
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\Vmianqian.exe
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\Vmianqian.deps.json
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\Vmianqian.runtimeconfig.json
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\Vmianqian.dll
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\Vmianqian.pdb
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\AntdUI.dll
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\BouncyCastle.Cryptography.dll
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\MailKit.dll
+E:\Demos\DemoOwns\C\VmianqianC\build-temp\MimeKit.dll
diff --git a/obj/Debug/net10.0-windows/Vmianqian.csproj.GenerateResource.cache b/obj/Debug/net10.0-windows/Vmianqian.csproj.GenerateResource.cache
index 02de75e..3eda3b7 100644
Binary files a/obj/Debug/net10.0-windows/Vmianqian.csproj.GenerateResource.cache and b/obj/Debug/net10.0-windows/Vmianqian.csproj.GenerateResource.cache differ
diff --git a/obj/Debug/net10.0-windows/Vmianqian.designer.deps.json b/obj/Debug/net10.0-windows/Vmianqian.designer.deps.json
index 9aefb04..daf2782 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.designer.deps.json
+++ b/obj/Debug/net10.0-windows/Vmianqian.designer.deps.json
@@ -13,6 +13,36 @@
"fileVersion": "2.3.10.0"
}
}
+ },
+ "BouncyCastle.Cryptography/2.6.2": {
+ "runtime": {
+ "lib/net6.0/BouncyCastle.Cryptography.dll": {
+ "assemblyVersion": "2.0.0.0",
+ "fileVersion": "2.6.2.46322"
+ }
+ }
+ },
+ "MailKit/4.16.0": {
+ "dependencies": {
+ "MimeKit": "4.16.0"
+ },
+ "runtime": {
+ "lib/net10.0/MailKit.dll": {
+ "assemblyVersion": "4.16.0.0",
+ "fileVersion": "4.16.0.0"
+ }
+ }
+ },
+ "MimeKit/4.16.0": {
+ "dependencies": {
+ "BouncyCastle.Cryptography": "2.6.2"
+ },
+ "runtime": {
+ "lib/net10.0/MimeKit.dll": {
+ "assemblyVersion": "4.16.0.0",
+ "fileVersion": "4.16.0.0"
+ }
+ }
}
}
},
@@ -23,6 +53,27 @@
"sha512": "sha512-twjNYhVIw08ydcQsBC5c7/59WBXVqba4kulN48ejxUz2i37xJU6ukYqUtxEFhiQtVzmu8cmGYAjZ4HM6BOKZwg==",
"path": "antdui/2.3.10",
"hashPath": "antdui.2.3.10.nupkg.sha512"
+ },
+ "BouncyCastle.Cryptography/2.6.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-7oWOcvnntmMKNzDLsdxAYqApt+AjpRpP2CShjMfIa3umZ42UQMvH0tl1qAliYPNYO6vTdcGMqnRrCPmsfzTI1w==",
+ "path": "bouncycastle.cryptography/2.6.2",
+ "hashPath": "bouncycastle.cryptography.2.6.2.nupkg.sha512"
+ },
+ "MailKit/4.16.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-trJ82DOpAmo8i1jO1vNE+dGn4mPRyeYfy4swRcAGgMJhPoI1Kohf4OFJJf0+YIj4iUxgxPn8W+ht7e7KiYzSjg==",
+ "path": "mailkit/4.16.0",
+ "hashPath": "mailkit.4.16.0.nupkg.sha512"
+ },
+ "MimeKit/4.16.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-X0LFxeM4gPRIhODyY/HYS9b+zRZ7y//v59rFzgS6wLxcPuZThnMtNZHtrr0fjLyRRkg3gqJBtvW36XfUzZ7Djw==",
+ "path": "mimekit/4.16.0",
+ "hashPath": "mimekit.4.16.0.nupkg.sha512"
}
}
}
\ No newline at end of file
diff --git a/obj/Debug/net10.0-windows/Vmianqian.designer.runtimeconfig.json b/obj/Debug/net10.0-windows/Vmianqian.designer.runtimeconfig.json
index 978c6fa..a8fd9db 100644
--- a/obj/Debug/net10.0-windows/Vmianqian.designer.runtimeconfig.json
+++ b/obj/Debug/net10.0-windows/Vmianqian.designer.runtimeconfig.json
@@ -12,9 +12,9 @@
}
],
"additionalProbingPaths": [
- "C:\\Users\\Administrator\\.dotnet\\store\\|arch|\\|tfm|",
- "C:\\Users\\Administrator\\.nuget\\packages",
- "C:\\Softwares\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ "C:\\Users\\heros\\.dotnet\\store\\|arch|\\|tfm|",
+ "C:\\Users\\heros\\.nuget\\packages",
+ "D:\\Softwares\\Microsoft\\VisualStudio\\Shared\\NuGetPackages"
],
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
diff --git a/obj/Debug/net10.0-windows/Vmianqian.dll b/obj/Debug/net10.0-windows/Vmianqian.dll
index f024765..60a0494 100644
Binary files a/obj/Debug/net10.0-windows/Vmianqian.dll and b/obj/Debug/net10.0-windows/Vmianqian.dll differ
diff --git a/obj/Debug/net10.0-windows/Vmianqian.pdb b/obj/Debug/net10.0-windows/Vmianqian.pdb
index 3c7f8b9..77914a5 100644
Binary files a/obj/Debug/net10.0-windows/Vmianqian.pdb and b/obj/Debug/net10.0-windows/Vmianqian.pdb differ
diff --git a/obj/Debug/net10.0-windows/apphost.exe b/obj/Debug/net10.0-windows/apphost.exe
index d623a2a..00f9e68 100644
Binary files a/obj/Debug/net10.0-windows/apphost.exe and b/obj/Debug/net10.0-windows/apphost.exe differ
diff --git a/obj/Debug/net10.0-windows/ref/Vmianqian.dll b/obj/Debug/net10.0-windows/ref/Vmianqian.dll
index a94f0f6..457c6e1 100644
Binary files a/obj/Debug/net10.0-windows/ref/Vmianqian.dll and b/obj/Debug/net10.0-windows/ref/Vmianqian.dll differ
diff --git a/obj/Debug/net10.0-windows/refint/Vmianqian.dll b/obj/Debug/net10.0-windows/refint/Vmianqian.dll
index a94f0f6..457c6e1 100644
Binary files a/obj/Debug/net10.0-windows/refint/Vmianqian.dll and b/obj/Debug/net10.0-windows/refint/Vmianqian.dll differ
diff --git a/obj/Vmianqian.csproj.nuget.dgspec.json b/obj/Vmianqian.csproj.nuget.dgspec.json
index 37c4904..9c05c1f 100644
--- a/obj/Vmianqian.csproj.nuget.dgspec.json
+++ b/obj/Vmianqian.csproj.nuget.dgspec.json
@@ -74,7 +74,7 @@
"Microsoft.NETCore.App": {
"privateAssets": "all"
},
- "Microsoft.WindowsDesktop.App.WindowsForms": {
+ "Microsoft.WindowsDesktop.App": {
"privateAssets": "none"
}
},
diff --git a/obj/project.assets.json b/obj/project.assets.json
index ff79bf7..776a7ce 100644
--- a/obj/project.assets.json
+++ b/obj/project.assets.json
@@ -210,11 +210,11 @@
"project": {
"version": "1.0.0",
"restore": {
- "projectUniqueName": "E:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj",
+ "projectUniqueName": "e:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj",
"projectName": "Vmianqian",
- "projectPath": "E:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj",
+ "projectPath": "e:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj",
"packagesPath": "C:\\Users\\heros\\.nuget\\packages\\",
- "outputPath": "E:\\Demos\\DemoOwns\\C\\VmianqianC\\obj\\",
+ "outputPath": "e:\\Demos\\DemoOwns\\C\\VmianqianC\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"D:\\Softwares\\Microsoft\\VisualStudio\\Shared\\NuGetPackages"
@@ -277,7 +277,7 @@
"Microsoft.NETCore.App": {
"privateAssets": "all"
},
- "Microsoft.WindowsDesktop.App.WindowsForms": {
+ "Microsoft.WindowsDesktop.App": {
"privateAssets": "none"
}
},
diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache
index b58b11f..5777e2c 100644
--- a/obj/project.nuget.cache
+++ b/obj/project.nuget.cache
@@ -1,6 +1,6 @@
{
"version": 2,
- "dgSpecHash": "JL2C2PQV5/Y=",
+ "dgSpecHash": "DphbmbH3VSw=",
"success": true,
"projectFilePath": "E:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj",
"expectedPackageFiles": [
diff --git a/obj/project.packagespec.json b/obj/project.packagespec.json
new file mode 100644
index 0000000..34ff464
--- /dev/null
+++ b/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"e:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj","projectName":"Vmianqian","projectPath":"e:\\Demos\\DemoOwns\\C\\VmianqianC\\Vmianqian.csproj","packagesPath":"","outputPath":"e:\\Demos\\DemoOwns\\C\\VmianqianC\\obj\\","projectStyle":"PackageReference","fallbackFolders":["D:\\Softwares\\Microsoft\\VisualStudio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net10.0-windows"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net10.0-windows7.0":{"targetAlias":"net10.0-windows","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"all"},"SdkAnalysisLevel":"10.0.200"}"frameworks":{"net10.0-windows7.0":{"targetAlias":"net10.0-windows","dependencies":{"AntdUI":{"target":"Package","version":"[2.3.10, )"},"MailKit":{"target":"Package","version":"[4.16.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"},"Microsoft.WindowsDesktop.App":{"privateAssets":"none"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json","packagesToPrune":{"Microsoft.CSharp":"(,4.7.32767]","Microsoft.VisualBasic":"(,10.4.32767]","Microsoft.Win32.Primitives":"(,4.3.32767]","Microsoft.Win32.Registry":"(,5.0.32767]","Microsoft.Win32.Registry.AccessControl":"(,10.0.32767]","Microsoft.Win32.SystemEvents":"(,10.0.32767]","runtime.any.System.Collections":"(,4.3.32767]","runtime.any.System.Diagnostics.Tools":"(,4.3.32767]","runtime.any.System.Diagnostics.Tracing":"(,4.3.32767]","runtime.any.System.Globalization":"(,4.3.32767]","runtime.any.System.Globalization.Calendars":"(,4.3.32767]","runtime.any.System.IO":"(,4.3.32767]","runtime.any.System.Reflection":"(,4.3.32767]","runtime.any.System.Reflection.Extensions":"(,4.3.32767]","runtime.any.System.Reflection.Primitives":"(,4.3.32767]","runtime.any.System.Resources.ResourceManager":"(,4.3.32767]","runtime.any.System.Runtime":"(,4.3.32767]","runtime.any.System.Runtime.Handles":"(,4.3.32767]","runtime.any.System.Runtime.InteropServices":"(,4.3.32767]","runtime.any.System.Text.Encoding":"(,4.3.32767]","runtime.any.System.Text.Encoding.Extensions":"(,4.3.32767]","runtime.any.System.Threading.Tasks":"(,4.3.32767]","runtime.any.System.Threading.Timer":"(,4.3.32767]","runtime.aot.System.Collections":"(,4.3.32767]","runtime.aot.System.Diagnostics.Tools":"(,4.3.32767]","runtime.aot.System.Diagnostics.Tracing":"(,4.3.32767]","runtime.aot.System.Globalization":"(,4.3.32767]","runtime.aot.System.Globalization.Calendars":"(,4.3.32767]","runtime.aot.System.IO":"(,4.3.32767]","runtime.aot.System.Reflection":"(,4.3.32767]","runtime.aot.System.Reflection.Extensions":"(,4.3.32767]","runtime.aot.System.Reflection.Primitives":"(,4.3.32767]","runtime.aot.System.Resources.ResourceManager":"(,4.3.32767]","runtime.aot.System.Runtime":"(,4.3.32767]","runtime.aot.System.Runtime.Handles":"(,4.3.32767]","runtime.aot.System.Runtime.InteropServices":"(,4.3.32767]","runtime.aot.System.Text.Encoding":"(,4.3.32767]","runtime.aot.System.Text.Encoding.Extensions":"(,4.3.32767]","runtime.aot.System.Threading.Tasks":"(,4.3.32767]","runtime.aot.System.Threading.Timer":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.debian.9-x64.runtime.native.System":"(,4.3.32767]","runtime.debian.9-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.debian.9-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.debian.9-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.fedora.27-x64.runtime.native.System":"(,4.3.32767]","runtime.fedora.27-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.fedora.27-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.fedora.27-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.fedora.28-x64.runtime.native.System":"(,4.3.32767]","runtime.fedora.28-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.fedora.28-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.fedora.28-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.opensuse.42.3-x64.runtime.native.System":"(,4.3.32767]","runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.opensuse.42.3-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.opensuse.42.3-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple":"(,4.3.32767]","runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography":"(,4.3.32767]","runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl":"(,4.3.32767]","runtime.ubuntu.18.04-x64.runtime.native.System":"(,4.3.32767]","runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http":"(,4.3.32767]","runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security":"(,4.3.32767]","runtime.unix.Microsoft.Win32.Primitives":"(,4.3.32767]","runtime.unix.System.Console":"(,4.3.32767]","runtime.unix.System.Diagnostics.Debug":"(,4.3.32767]","runtime.unix.System.IO.FileSystem":"(,4.3.32767]","runtime.unix.System.Net.Primitives":"(,4.3.32767]","runtime.unix.System.Net.Sockets":"(,4.3.32767]","runtime.unix.System.Private.Uri":"(,4.3.32767]","runtime.unix.System.Runtime.Extensions":"(,4.3.32767]","runtime.win.Microsoft.Win32.Primitives":"(,4.3.32767]","runtime.win.System.Console":"(,4.3.32767]","runtime.win.System.Diagnostics.Debug":"(,4.3.32767]","runtime.win.System.IO.FileSystem":"(,4.3.32767]","runtime.win.System.Net.Primitives":"(,4.3.32767]","runtime.win.System.Net.Sockets":"(,4.3.32767]","runtime.win.System.Runtime.Extensions":"(,4.3.32767]","runtime.win10-arm-aot.runtime.native.System.IO.Compression":"(,4.0.32767]","runtime.win10-arm64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.win10-x64-aot.runtime.native.System.IO.Compression":"(,4.0.32767]","runtime.win10-x86-aot.runtime.native.System.IO.Compression":"(,4.0.32767]","runtime.win7-x64.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.win7-x86.runtime.native.System.IO.Compression":"(,4.3.32767]","runtime.win7.System.Private.Uri":"(,4.3.32767]","runtime.win8-arm.runtime.native.System.IO.Compression":"(,4.3.32767]","System.AppContext":"(,4.3.32767]","System.Buffers":"(,5.0.32767]","System.CodeDom":"(,10.0.32767]","System.Collections":"(,4.3.32767]","System.Collections.Concurrent":"(,4.3.32767]","System.Collections.Immutable":"(,10.0.32767]","System.Collections.NonGeneric":"(,4.3.32767]","System.Collections.Specialized":"(,4.3.32767]","System.ComponentModel":"(,4.3.32767]","System.ComponentModel.Annotations":"(,4.3.32767]","System.ComponentModel.EventBasedAsync":"(,4.3.32767]","System.ComponentModel.Primitives":"(,4.3.32767]","System.ComponentModel.TypeConverter":"(,4.3.32767]","System.Configuration.ConfigurationManager":"(,10.0.32767]","System.Console":"(,4.3.32767]","System.Data.Common":"(,4.3.32767]","System.Data.DataSetExtensions":"(,4.4.32767]","System.Diagnostics.Contracts":"(,4.3.32767]","System.Diagnostics.Debug":"(,4.3.32767]","System.Diagnostics.DiagnosticSource":"(,10.0.32767]","System.Diagnostics.EventLog":"(,10.0.32767]","System.Diagnostics.FileVersionInfo":"(,4.3.32767]","System.Diagnostics.PerformanceCounter":"(,10.0.32767]","System.Diagnostics.Process":"(,4.3.32767]","System.Diagnostics.StackTrace":"(,4.3.32767]","System.Diagnostics.TextWriterTraceListener":"(,4.3.32767]","System.Diagnostics.Tools":"(,4.3.32767]","System.Diagnostics.TraceSource":"(,4.3.32767]","System.Diagnostics.Tracing":"(,4.3.32767]","System.DirectoryServices":"(,10.0.32767]","System.Drawing.Common":"(,10.0.32767]","System.Drawing.Primitives":"(,4.3.32767]","System.Dynamic.Runtime":"(,4.3.32767]","System.Formats.Asn1":"(,10.0.32767]","System.Formats.Nrbf":"(,10.0.32767]","System.Formats.Tar":"(,10.0.32767]","System.Globalization":"(,4.3.32767]","System.Globalization.Calendars":"(,4.3.32767]","System.Globalization.Extensions":"(,4.3.32767]","System.IO":"(,4.3.32767]","System.IO.Compression":"(,4.3.32767]","System.IO.Compression.ZipFile":"(,4.3.32767]","System.IO.FileSystem":"(,4.3.32767]","System.IO.FileSystem.AccessControl":"(,4.4.32767]","System.IO.FileSystem.DriveInfo":"(,4.3.32767]","System.IO.FileSystem.Primitives":"(,4.3.32767]","System.IO.FileSystem.Watcher":"(,4.3.32767]","System.IO.IsolatedStorage":"(,4.3.32767]","System.IO.MemoryMappedFiles":"(,4.3.32767]","System.IO.Packaging":"(,10.0.32767]","System.IO.Pipelines":"(,10.0.32767]","System.IO.Pipes":"(,4.3.32767]","System.IO.Pipes.AccessControl":"(,5.0.32767]","System.IO.UnmanagedMemoryStream":"(,4.3.32767]","System.Linq":"(,4.3.32767]","System.Linq.AsyncEnumerable":"(,10.0.32767]","System.Linq.Expressions":"(,4.3.32767]","System.Linq.Parallel":"(,4.3.32767]","System.Linq.Queryable":"(,4.3.32767]","System.Memory":"(,5.0.32767]","System.Net.Http":"(,4.3.32767]","System.Net.Http.Json":"(,10.0.32767]","System.Net.NameResolution":"(,4.3.32767]","System.Net.NetworkInformation":"(,4.3.32767]","System.Net.Ping":"(,4.3.32767]","System.Net.Primitives":"(,4.3.32767]","System.Net.Requests":"(,4.3.32767]","System.Net.Security":"(,4.3.32767]","System.Net.ServerSentEvents":"(,10.0.32767]","System.Net.Sockets":"(,4.3.32767]","System.Net.WebHeaderCollection":"(,4.3.32767]","System.Net.WebSockets":"(,4.3.32767]","System.Net.WebSockets.Client":"(,4.3.32767]","System.Numerics.Vectors":"(,5.0.32767]","System.ObjectModel":"(,4.3.32767]","System.Private.DataContractSerialization":"(,4.3.32767]","System.Private.Uri":"(,4.3.32767]","System.Reflection":"(,4.3.32767]","System.Reflection.DispatchProxy":"(,6.0.32767]","System.Reflection.Emit":"(,4.7.32767]","System.Reflection.Emit.ILGeneration":"(,4.7.32767]","System.Reflection.Emit.Lightweight":"(,4.7.32767]","System.Reflection.Extensions":"(,4.3.32767]","System.Reflection.Metadata":"(,10.0.32767]","System.Reflection.Primitives":"(,4.3.32767]","System.Reflection.TypeExtensions":"(,4.3.32767]","System.Resources.Extensions":"(,10.0.32767]","System.Resources.Reader":"(,4.3.32767]","System.Resources.ResourceManager":"(,4.3.32767]","System.Resources.Writer":"(,4.3.32767]","System.Runtime":"(,4.3.32767]","System.Runtime.CompilerServices.Unsafe":"(,7.0.32767]","System.Runtime.CompilerServices.VisualC":"(,4.3.32767]","System.Runtime.Extensions":"(,4.3.32767]","System.Runtime.Handles":"(,4.3.32767]","System.Runtime.InteropServices":"(,4.3.32767]","System.Runtime.InteropServices.RuntimeInformation":"(,4.3.32767]","System.Runtime.Loader":"(,4.3.32767]","System.Runtime.Numerics":"(,4.3.32767]","System.Runtime.Serialization.Formatters":"(,4.3.32767]","System.Runtime.Serialization.Json":"(,4.3.32767]","System.Runtime.Serialization.Primitives":"(,4.3.32767]","System.Runtime.Serialization.Xml":"(,4.3.32767]","System.Security.AccessControl":"(,6.0.32767]","System.Security.Claims":"(,4.3.32767]","System.Security.Cryptography.Algorithms":"(,4.3.32767]","System.Security.Cryptography.Cng":"(,5.0.32767]","System.Security.Cryptography.Csp":"(,4.3.32767]","System.Security.Cryptography.Encoding":"(,4.3.32767]","System.Security.Cryptography.OpenSsl":"(,5.0.32767]","System.Security.Cryptography.Pkcs":"(,10.0.32767]","System.Security.Cryptography.Primitives":"(,4.3.32767]","System.Security.Cryptography.ProtectedData":"(,10.0.32767]","System.Security.Cryptography.X509Certificates":"(,4.3.32767]","System.Security.Cryptography.Xml":"(,10.0.32767]","System.Security.Permissions":"(,10.0.32767]","System.Security.Principal":"(,4.3.32767]","System.Security.Principal.Windows":"(,5.0.32767]","System.Security.SecureString":"(,4.3.32767]","System.Text.Encoding":"(,4.3.32767]","System.Text.Encoding.CodePages":"(,10.0.32767]","System.Text.Encoding.Extensions":"(,4.3.32767]","System.Text.Encodings.Web":"(,10.0.32767]","System.Text.Json":"(,10.0.32767]","System.Text.RegularExpressions":"(,4.3.32767]","System.Threading":"(,4.3.32767]","System.Threading.AccessControl":"(,10.0.32767]","System.Threading.Channels":"(,10.0.32767]","System.Threading.Overlapped":"(,4.3.32767]","System.Threading.Tasks":"(,4.3.32767]","System.Threading.Tasks.Dataflow":"(,10.0.32767]","System.Threading.Tasks.Extensions":"(,5.0.32767]","System.Threading.Tasks.Parallel":"(,4.3.32767]","System.Threading.Thread":"(,4.3.32767]","System.Threading.ThreadPool":"(,4.3.32767]","System.Threading.Timer":"(,4.3.32767]","System.ValueTuple":"(,4.5.32767]","System.Windows.Extensions":"(,10.0.32767]","System.Xml.ReaderWriter":"(,4.3.32767]","System.Xml.XDocument":"(,4.3.32767]","System.Xml.XmlDocument":"(,4.3.32767]","System.Xml.XmlSerializer":"(,4.3.32767]","System.Xml.XPath":"(,4.3.32767]","System.Xml.XPath.XDocument":"(,5.0.32767]"}}}
\ No newline at end of file
diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info
new file mode 100644
index 0000000..e2d718a
--- /dev/null
+++ b/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17773696795904908
\ No newline at end of file