From c0b7a8c33eeecb84c7450ac2726f847557236089 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 5 Mar 2022 07:29:58 +0800 Subject: [PATCH 1/2] clear --- v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs | 94 --- v2rayN/v2rayN/Forms/QRCodeForm.cs | 51 -- v2rayN/v2rayN/Forms/QRCodeForm.resx | 120 --- .../RoutingRuleQuicklyAddForm.Designer.cs | 170 ---- .../v2rayN/Forms/RoutingRuleQuicklyAddForm.cs | 73 -- .../Forms/RoutingRuleQuicklyAddForm.resx | 462 ----------- .../RoutingRuleQuicklyAddForm.zh-Hans.resx | 132 ---- .../RoutingSettingDetailsForm.Designer.cs | 234 ------ .../v2rayN/Forms/RoutingSettingDetailsForm.cs | 131 ---- .../Forms/RoutingSettingDetailsForm.resx | 723 ------------------ .../RoutingSettingDetailsForm.zh-Hans.resx | 145 ---- .../Forms/RoutingSubSettingForm.Designer.cs | 106 --- v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs | 61 -- .../v2rayN/Forms/RoutingSubSettingForm.resx | 300 -------- .../Forms/RoutingSubSettingForm.zh-Hans.resx | 133 ---- 15 files changed, 2935 deletions(-) delete mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs delete mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.cs delete mode 100644 v2rayN/v2rayN/Forms/QRCodeForm.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.Designer.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.zh-Hans.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs delete mode 100644 v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx delete mode 100644 v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs b/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs deleted file mode 100644 index 733adb47..00000000 --- a/v2rayN/v2rayN/Forms/QRCodeForm.Designer.cs +++ /dev/null @@ -1,94 +0,0 @@ -namespace v2rayN.Forms -{ - partial class QRCodeForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.picQRCode = new System.Windows.Forms.PictureBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtUrl = new System.Windows.Forms.TextBox(); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).BeginInit(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // picQRCode - // - this.picQRCode.Dock = System.Windows.Forms.DockStyle.Fill; - this.picQRCode.Location = new System.Drawing.Point(0, 0); - this.picQRCode.Name = "picQRCode"; - this.picQRCode.Size = new System.Drawing.Size(482, 483); - this.picQRCode.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.picQRCode.TabIndex = 23; - this.picQRCode.TabStop = false; - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.txtUrl); - this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.groupBox1.Location = new System.Drawing.Point(0, 483); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(482, 90); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "URL"; - // - // txtUrl - // - this.txtUrl.Dock = System.Windows.Forms.DockStyle.Fill; - this.txtUrl.Location = new System.Drawing.Point(3, 17); - this.txtUrl.Multiline = true; - this.txtUrl.Name = "txtUrl"; - this.txtUrl.ReadOnly = true; - this.txtUrl.Size = new System.Drawing.Size(476, 70); - this.txtUrl.TabIndex = 0; - // - // QRCodeForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(482, 573); - this.Controls.Add(this.picQRCode); - this.Controls.Add(this.groupBox1); - this.Name = "QRCodeForm"; - this.Text = "服务器配置二维码和URL"; - this.Load += new System.EventHandler(this.QRCodeForm_Load); - this.Shown += new System.EventHandler(this.QRCodeForm_Shown); - ((System.ComponentModel.ISupportInitialize)(this.picQRCode)).EndInit(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtUrl; - private System.Windows.Forms.PictureBox picQRCode; - - } -} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.cs b/v2rayN/v2rayN/Forms/QRCodeForm.cs deleted file mode 100644 index d170b173..00000000 --- a/v2rayN/v2rayN/Forms/QRCodeForm.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class QRCodeForm : BaseForm - { - public int Index { get; set; } - - public QRCodeForm() - { - InitializeComponent(); - } - - private void QRCodeForm_Load(object sender, EventArgs e) - { - txtUrl.MouseUp += txtUrl_MouseUp; - } - - void txtUrl_MouseUp(object sender, MouseEventArgs e) - { - txtUrl.SelectAll(); - } - - private void QRCodeForm_Shown(object sender, EventArgs e) - { - if (Index >= 0) - { - VmessQRCode vmessQRCode = null; - if (ConfigHandler.GetVmessQRCode(config, Index, ref vmessQRCode) != 0) - { - return; - } - string url = Utils.ToJson(vmessQRCode); - url = Utils.Base64Encode(url); - url = string.Format("{0}{1}", Global.vmessProtocol, url); - picQRCode.Image = QRCodeHelper.GetQRCode(url); - txtUrl.Text = url; - } - } - - } -} diff --git a/v2rayN/v2rayN/Forms/QRCodeForm.resx b/v2rayN/v2rayN/Forms/QRCodeForm.resx deleted file mode 100644 index 1af7de15..00000000 --- a/v2rayN/v2rayN/Forms/QRCodeForm.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.Designer.cs deleted file mode 100644 index b187f725..00000000 --- a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.Designer.cs +++ /dev/null @@ -1,170 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingRuleQuicklyAddForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingRuleQuicklyAddForm)); - this.panel1 = new System.Windows.Forms.Panel(); - this.panel3 = new System.Windows.Forms.Panel(); - this.label4 = new System.Windows.Forms.Label(); - this.cmbOutboundTag = new System.Windows.Forms.ComboBox(); - this.panel4 = new System.Windows.Forms.Panel(); - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.txtIP = new System.Windows.Forms.TextBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtDomain = new System.Windows.Forms.TextBox(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // panel3 - // - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Controls.Add(this.label4); - this.panel3.Controls.Add(this.cmbOutboundTag); - this.panel3.Name = "panel3"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // cmbOutboundTag - // - resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); - this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbOutboundTag.FormattingEnabled = true; - this.cmbOutboundTag.Items.AddRange(new object[] { - resources.GetString("cmbOutboundTag.Items"), - resources.GetString("cmbOutboundTag.Items1"), - resources.GetString("cmbOutboundTag.Items2")}); - this.cmbOutboundTag.Name = "cmbOutboundTag"; - // - // panel4 - // - resources.ApplyResources(this.panel4, "panel4"); - this.panel4.Controls.Add(this.btnClose); - this.panel4.Controls.Add(this.btnOK); - this.panel4.Name = "panel4"; - // - // btnClose - // - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel2 - // - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.groupBox1); - this.panel2.Name = "panel2"; - // - // groupBox2 - // - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Controls.Add(this.txtIP); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // txtIP - // - resources.ApplyResources(this.txtIP, "txtIP"); - this.txtIP.Name = "txtIP"; - // - // groupBox1 - // - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Controls.Add(this.txtDomain); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtDomain - // - resources.ApplyResources(this.txtDomain, "txtDomain"); - this.txtDomain.Name = "txtDomain"; - // - // RoutingRuleQuicklyAddForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel4); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel1); - this.Name = "RoutingRuleQuicklyAddForm"; - this.Load += new System.EventHandler(this.RoutingRuleQuicklyAddForm_Load); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel2.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.ComboBox cmbOutboundTag; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtDomain; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.TextBox txtIP; - } -} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.cs b/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.cs deleted file mode 100644 index 51f6d87b..00000000 --- a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingRuleQuicklyAddForm : BaseForm - { - public string domain - { - get; set; - } - private RulesItem rulesItem; - - public RoutingRuleQuicklyAddForm() - { - InitializeComponent(); - } - - private void RoutingRuleQuicklyAddForm_Load(object sender, EventArgs e) - { - rulesItem = new RulesItem(); - ClearBind(); - } - - private void EndBindingData() - { - if (rulesItem != null) - { - rulesItem.outboundTag = cmbOutboundTag.Text; - rulesItem.domain = Utils.String2List(txtDomain.Text); - rulesItem.ip = Utils.String2List(txtIP.Text); - } - } - - private void ClearBind() - { - cmbOutboundTag.Text = Global.agentTag; - txtDomain.Text = domain; - } - private void btnOK_Click(object sender, EventArgs e) - { - EndBindingData(); - var hasRule = false; - if (rulesItem.domain != null && rulesItem.domain.Count > 0) - { - hasRule = true; - } - if (rulesItem.ip != null && rulesItem.ip.Count > 0) - { - hasRule = true; - } - if (!hasRule) - { - return; - } - if (ConfigHandler.InsertRoutingRuleItem(ref config, rulesItem) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} diff --git a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.resx b/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.resx deleted file mode 100644 index b081d36d..00000000 --- a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.resx +++ /dev/null @@ -1,462 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - txtIP - - - - Fill - - - - 8 - - - - 119, 20 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - 3, 17 - - - 220, 207 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 10 - - - btnOK - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - RoutingRuleQuicklyAddForm - - - $this - - - 0, 288 - - - Bottom - - - Fill - - - 32 - - - panel4 - - - proxy - - - Left - - - 24 - - - 75, 23 - - - 6, 12 - - - 506, 10 - - - 7 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 11 - - - panel1 - - - Domain - - - groupBox1 - - - 0, 10 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 31 - - - 1 - - - 506, 51 - - - Fill - - - txtDomain - - - panel3 - - - NoControl - - - 5 - - - Top - - - panel4 - - - IP - - - 280, 0 - - - 75, 23 - - - 3, 17 - - - label4 - - - outboundTag - - - btnClose - - - block - - - direct - - - 1 - - - 2 - - - 0 - - - 305, 25 - - - panel3 - - - Top - - - 0, 0 - - - 506, 227 - - - True - - - 3 - - - 280, 227 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 4 - - - 3 - - - NoControl - - - &OK - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - cmbOutboundTag - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 506, 60 - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - &Cancel - - - 226, 227 - - - 107, 16 - - - RoutingRuleQuicklyAddForm - - - NoControl - - - 0 - - - 1 - - - True - - - groupBox2 - - - 19, 20 - - - $this - - - 71, 12 - - - panel2 - - - groupBox2 - - - 4 - - - 0, 0 - - - panel4 - - - $this - - - groupBox1 - - - panel2 - - - 0, 61 - - - 0 - - - 1 - - - 274, 207 - - - 506, 348 - - - 25 - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - 0 - - - panel2 - - - $this - - - 398, 25 - - - True - - - 0 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - zh-Hans - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.zh-Hans.resx deleted file mode 100644 index ee735361..00000000 --- a/v2rayN/v2rayN/Forms/RoutingRuleQuicklyAddForm.zh-Hans.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - OutboundTag - - - 取消(&C) - - - 确定(&O) - - - 快速添加路由规则 - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs deleted file mode 100644 index 43d2de45..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.Designer.cs +++ /dev/null @@ -1,234 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingSettingDetailsForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSettingDetailsForm)); - this.panel1 = new System.Windows.Forms.Panel(); - this.panel3 = new System.Windows.Forms.Panel(); - this.clbProtocol = new System.Windows.Forms.CheckedListBox(); - this.label3 = new System.Windows.Forms.Label(); - this.txtPort = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.labRoutingTips = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.cmbOutboundTag = new System.Windows.Forms.ComboBox(); - this.txtRemarks = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.panel4 = new System.Windows.Forms.Panel(); - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.txtIP = new System.Windows.Forms.TextBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.txtDomain = new System.Windows.Forms.TextBox(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - resources.ApplyResources(this.panel1, "panel1"); - this.panel1.Name = "panel1"; - // - // panel3 - // - this.panel3.Controls.Add(this.clbProtocol); - this.panel3.Controls.Add(this.label3); - this.panel3.Controls.Add(this.txtPort); - this.panel3.Controls.Add(this.label1); - this.panel3.Controls.Add(this.labRoutingTips); - this.panel3.Controls.Add(this.label4); - this.panel3.Controls.Add(this.cmbOutboundTag); - this.panel3.Controls.Add(this.txtRemarks); - this.panel3.Controls.Add(this.label2); - resources.ApplyResources(this.panel3, "panel3"); - this.panel3.Name = "panel3"; - // - // clbProtocol - // - this.clbProtocol.CheckOnClick = true; - resources.ApplyResources(this.clbProtocol, "clbProtocol"); - this.clbProtocol.FormattingEnabled = true; - this.clbProtocol.Items.AddRange(new object[] { - resources.GetString("clbProtocol.Items"), - resources.GetString("clbProtocol.Items1"), - resources.GetString("clbProtocol.Items2")}); - this.clbProtocol.MultiColumn = true; - this.clbProtocol.Name = "clbProtocol"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // txtPort - // - resources.ApplyResources(this.txtPort, "txtPort"); - this.txtPort.Name = "txtPort"; - // - // label1 - // - resources.ApplyResources(this.label1, "label1"); - this.label1.Name = "label1"; - // - // labRoutingTips - // - this.labRoutingTips.ForeColor = System.Drawing.Color.Brown; - resources.ApplyResources(this.labRoutingTips, "labRoutingTips"); - this.labRoutingTips.Name = "labRoutingTips"; - // - // label4 - // - resources.ApplyResources(this.label4, "label4"); - this.label4.Name = "label4"; - // - // cmbOutboundTag - // - this.cmbOutboundTag.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbOutboundTag.FormattingEnabled = true; - this.cmbOutboundTag.Items.AddRange(new object[] { - resources.GetString("cmbOutboundTag.Items"), - resources.GetString("cmbOutboundTag.Items1"), - resources.GetString("cmbOutboundTag.Items2")}); - resources.ApplyResources(this.cmbOutboundTag, "cmbOutboundTag"); - this.cmbOutboundTag.Name = "cmbOutboundTag"; - // - // txtRemarks - // - resources.ApplyResources(this.txtRemarks, "txtRemarks"); - this.txtRemarks.Name = "txtRemarks"; - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.Name = "label2"; - // - // panel4 - // - this.panel4.Controls.Add(this.btnClose); - this.panel4.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel4, "panel4"); - this.panel4.Name = "panel4"; - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panel2 - // - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.groupBox1); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.txtIP); - resources.ApplyResources(this.groupBox2, "groupBox2"); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.TabStop = false; - // - // txtIP - // - resources.ApplyResources(this.txtIP, "txtIP"); - this.txtIP.Name = "txtIP"; - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.txtDomain); - resources.ApplyResources(this.groupBox1, "groupBox1"); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.TabStop = false; - // - // txtDomain - // - resources.ApplyResources(this.txtDomain, "txtDomain"); - this.txtDomain.Name = "txtDomain"; - // - // RoutingSettingDetailsForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panel2); - this.Controls.Add(this.panel4); - this.Controls.Add(this.panel3); - this.Controls.Add(this.panel1); - this.Name = "RoutingSettingDetailsForm"; - this.Load += new System.EventHandler(this.RoutingSettingDetailsForm_Load); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel2.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.ComboBox cmbOutboundTag; - private System.Windows.Forms.TextBox txtRemarks; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox txtDomain; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.TextBox txtIP; - private System.Windows.Forms.Label labRoutingTips; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox txtPort; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.CheckedListBox clbProtocol; - } -} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs deleted file mode 100644 index 65fe6a8f..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using v2rayN.Base; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingSettingDetailsForm : BaseForm - { - public int EditIndex - { - get; set; - } - protected RulesItem routingItem = null; - - public RoutingSettingDetailsForm() - { - InitializeComponent(); - } - - private void RoutingSettingDetailsForm_Load(object sender, EventArgs e) - { - if (EditIndex >= 0) - { - routingItem = config.rules[EditIndex]; - BindingData(); - } - else - { - routingItem = new RulesItem(); - ClearBind(); - } - } - - private void EndBindingData() - { - if (routingItem != null) - { - routingItem.remarks = txtRemarks.Text.TrimEx(); - routingItem.port = txtPort.Text.TrimEx(); - routingItem.outboundTag = cmbOutboundTag.Text; - routingItem.domain = Utils.String2List(txtDomain.Text); - routingItem.ip = Utils.String2List(txtIP.Text); - - var protocol = new List(); - for (int i = 0; i < clbProtocol.Items.Count; i++) - { - if (clbProtocol.GetItemChecked(i)) - { - protocol.Add(clbProtocol.Items[i].ToString()); - } - } - routingItem.protocol = protocol; - } - } - private void BindingData() - { - if (routingItem != null) - { - txtRemarks.Text = routingItem.remarks ?? string.Empty; - txtPort.Text = routingItem.port ?? string.Empty; - cmbOutboundTag.Text = routingItem.outboundTag; - txtDomain.Text = Utils.List2String(routingItem.domain, true); - txtIP.Text = Utils.List2String(routingItem.ip, true); - - if (routingItem.protocol != null) - { - for (int i = 0; i < clbProtocol.Items.Count; i++) - { - if (routingItem.protocol.Contains(clbProtocol.Items[i].ToString())) - { - clbProtocol.SetItemChecked(i, true); - } - } - } - } - } - private void ClearBind() - { - txtRemarks.Text = string.Empty; - txtPort.Text = string.Empty; - cmbOutboundTag.Text = Global.agentTag; - txtDomain.Text = string.Empty; - txtIP.Text = string.Empty; - } - private void btnOK_Click(object sender, EventArgs e) - { - EndBindingData(); - var hasRule = false; - if (routingItem.domain != null && routingItem.domain.Count > 0) - { - hasRule = true; - } - if (routingItem.ip != null && routingItem.ip.Count > 0) - { - hasRule = true; - } - if (routingItem.protocol != null && routingItem.protocol.Count > 0) - { - hasRule = true; - } - if (!Utils.IsNullOrEmpty(routingItem.port)) - { - hasRule = true; - } - if (!hasRule) - { - UI.ShowWarning(string.Format(UIRes.I18N("RoutingRuleDetailRequiredTips"), "Port/Protocol/Domain/IP")); - return; - } - - if (ConfigHandler.AddRoutingRule(ref config, routingItem, EditIndex) == 0) - { - this.DialogResult = DialogResult.OK; - } - else - { - UI.ShowWarning(UIRes.I18N("OperationFailed")); - } - - this.DialogResult = DialogResult.OK; - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - } -} diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx deleted file mode 100644 index d9472064..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.resx +++ /dev/null @@ -1,723 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Top - - - - 0, 0 - - - 742, 10 - - - - 7 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - 80 - - - http - - - tls - - - bittorrent - - - 347, 43 - - - 245, 20 - - - 39 - - - clbProtocol - - - System.Windows.Forms.CheckedListBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 0 - - - True - - - NoControl - - - 274, 47 - - - 53, 12 - - - 36 - - - Protocol - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 1 - - - 84, 43 - - - 166, 21 - - - 35 - - - txtPort - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 2 - - - True - - - NoControl - - - 19, 47 - - - 29, 12 - - - 34 - - - Port - - - label1 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 3 - - - NoControl - - - 19, 82 - - - 598, 16 - - - 33 - - - *Set the rules, separated by commas (,); The comma in the regular is replaced by <COMMA> - - - labRoutingTips - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 4 - - - True - - - NoControl - - - 274, 20 - - - 47, 12 - - - 32 - - - Out Tag - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 5 - - - proxy - - - direct - - - block - - - 347, 16 - - - 119, 20 - - - 31 - - - cmbOutboundTag - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 6 - - - 84, 16 - - - 166, 21 - - - 30 - - - txtRemarks - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 7 - - - True - - - NoControl - - - 19, 20 - - - 47, 12 - - - 29 - - - Remarks - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel3 - - - 8 - - - Top - - - 0, 10 - - - 742, 111 - - - 8 - - - panel3 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 0 - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 1 - - - Bottom - - - 0, 516 - - - 742, 60 - - - 10 - - - panel4 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - NoControl - - - 504, 15 - - - 75, 23 - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 0 - - - NoControl - - - 411, 15 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel4 - - - 1 - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Fill - - - 0, 121 - - - 742, 395 - - - 11 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - txtIP - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - Fill - - - 392, 0 - - - 350, 395 - - - 4 - - - IP - - - groupBox2 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - Fill - - - 3, 17 - - - True - - - 344, 375 - - - 25 - - - txtIP - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox2 - - - 0 - - - txtDomain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - Left - - - 0, 0 - - - 392, 395 - - - 3 - - - Domain - - - groupBox1 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Fill - - - 3, 17 - - - True - - - 386, 375 - - - 24 - - - txtDomain - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - True - - - 6, 12 - - - 742, 576 - - - RoutingSettingDetailsForm - - - RoutingSettingDetailsForm - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx deleted file mode 100644 index bac9081a..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSettingDetailsForm.zh-Hans.resx +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - *设置的路由规则,用逗号(,)分隔;正则中的逗号用<COMMA>替代 - - - - 71, 12 - - - OutboundTag - - - 29, 12 - - - 别名 - - - 取消(&C) - - - 确定(&O) - - - 路由规则详情设置 - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs deleted file mode 100644 index e085f27f..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.Designer.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace v2rayN.Forms -{ - partial class RoutingSubSettingForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RoutingSubSettingForm)); - this.panel2 = new System.Windows.Forms.Panel(); - this.btnClose = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.panCon = new System.Windows.Forms.Panel(); - this.txtUrl = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.panel2.SuspendLayout(); - this.panCon.SuspendLayout(); - this.SuspendLayout(); - // - // panel2 - // - this.panel2.Controls.Add(this.btnClose); - this.panel2.Controls.Add(this.btnOK); - resources.ApplyResources(this.panel2, "panel2"); - this.panel2.Name = "panel2"; - // - // btnClose - // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - resources.ApplyResources(this.btnClose, "btnClose"); - this.btnClose.Name = "btnClose"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // btnOK - // - resources.ApplyResources(this.btnOK, "btnOK"); - this.btnOK.Name = "btnOK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); - // - // panCon - // - resources.ApplyResources(this.panCon, "panCon"); - this.panCon.Controls.Add(this.txtUrl); - this.panCon.Controls.Add(this.label3); - this.panCon.Name = "panCon"; - // - // txtUrl - // - resources.ApplyResources(this.txtUrl, "txtUrl"); - this.txtUrl.Name = "txtUrl"; - // - // label3 - // - resources.ApplyResources(this.label3, "label3"); - this.label3.Name = "label3"; - // - // RoutingSubSettingForm - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.Controls.Add(this.panCon); - this.Controls.Add(this.panel2); - this.Name = "RoutingSubSettingForm"; - this.Load += new System.EventHandler(this.RoutingSubSettingForm_Load); - this.panel2.ResumeLayout(false); - this.panCon.ResumeLayout(false); - this.panCon.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.Button btnClose; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Panel panCon; - private System.Windows.Forms.TextBox txtUrl; - private System.Windows.Forms.Label label3; - } -} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs deleted file mode 100644 index 7ccb683d..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using v2rayN.Handler; -using v2rayN.Mode; - -namespace v2rayN.Forms -{ - public partial class RoutingSubSettingForm : BaseForm - { - public string Url; - public RoutingSubSettingForm() - { - InitializeComponent(); - } - - private void RoutingSubSettingForm_Load(object sender, EventArgs e) - { - if (config.ruleSubItem == null) - { - config.ruleSubItem = new List(); - } - if (config.ruleSubItem.Count <= 0) - { - config.ruleSubItem.Add(new SubItem - { - remarks = "def", - url = Global.CustomRoutingListUrl + "custom_routing_rules" - }); - } - txtUrl.Text = config.ruleSubItem[0].url; - } - - private void btnOK_Click(object sender, EventArgs e) - { - var url = txtUrl.Text.Trim(); - - if (Utils.IsNullOrEmpty(url)) - { - return; - } - Url = url; - config.ruleSubItem[0].url = url; - ConfigHandler.SaveRuleSubItem(ref config); - - this.DialogResult = DialogResult.OK; - } - - private void btnClose_Click(object sender, EventArgs e) - { - this.DialogResult = DialogResult.Cancel; - } - - } -} diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx deleted file mode 100644 index 144946ab..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.resx +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - NoControl - - - - 448, 17 - - - 75, 23 - - - - 4 - - - &Cancel - - - btnClose - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 0 - - - NoControl - - - 355, 17 - - - 75, 23 - - - 5 - - - &OK - - - btnOK - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel2 - - - 1 - - - Bottom - - - 0, 166 - - - 545, 60 - - - 8 - - - panel2 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - True - - - 83, 19 - - - True - - - 450, 113 - - - 25 - - - txtUrl - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panCon - - - 0 - - - True - - - NoControl - - - 12, 19 - - - 23, 12 - - - 24 - - - Url - - - label3 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panCon - - - 1 - - - Fill - - - 0, 0 - - - 545, 166 - - - 11 - - - panCon - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 6, 12 - - - 545, 226 - - - RoutingSubSetting - - - RoutingSubSettingForm - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx deleted file mode 100644 index 614f26d1..00000000 --- a/v2rayN/v2rayN/Forms/RoutingSubSettingForm.zh-Hans.resx +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 取消(&C) - - - 确定(&O) - - - - 65, 12 - - - 地址 (url) - - \ No newline at end of file From 0b8d66a87e3764d415a2b797cd936cdd06a95ced Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 5 Mar 2022 15:00:02 +0800 Subject: [PATCH 2/2] Add Global Hotkey --- .../Forms/GlobalHotkeySettingForm.Designer.cs | 186 ++ .../v2rayN/Forms/GlobalHotkeySettingForm.cs | 138 + .../v2rayN/Forms/GlobalHotkeySettingForm.resx | 537 ++++ .../GlobalHotkeySettingForm.zh-Hans.resx | 166 + v2rayN/v2rayN/Forms/MainForm.Designer.cs | 219 +- v2rayN/v2rayN/Forms/MainForm.cs | 38 +- v2rayN/v2rayN/Forms/MainForm.resx | 2722 +++++++++-------- v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx | 122 +- v2rayN/v2rayN/Handler/MainFormHandler.cs | 60 +- v2rayN/v2rayN/Mode/Config.cs | 25 +- v2rayN/v2rayN/Mode/EGlobalHotkey.cs | 11 + v2rayN/v2rayN/Resx/ResUI.Designer.cs | 18 + v2rayN/v2rayN/Resx/ResUI.resx | 6 + v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 6 + v2rayN/v2rayN/v2rayN.csproj | 24 +- 15 files changed, 2751 insertions(+), 1527 deletions(-) create mode 100644 v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs create mode 100644 v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.cs create mode 100644 v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.resx create mode 100644 v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx create mode 100644 v2rayN/v2rayN/Mode/EGlobalHotkey.cs diff --git a/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs new file mode 100644 index 00000000..ba25fdee --- /dev/null +++ b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.Designer.cs @@ -0,0 +1,186 @@ +namespace v2rayN.Forms +{ + partial class GlobalHotkeySettingForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GlobalHotkeySettingForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnReset = new System.Windows.Forms.Button(); + this.btnOK = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.txtGlobalHotkey3 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.txtGlobalHotkey2 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtGlobalHotkey1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtGlobalHotkey0 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + resources.ApplyResources(this.btnClose, "btnClose"); + this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnClose.Name = "btnClose"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // panel2 + // + resources.ApplyResources(this.panel2, "panel2"); + this.panel2.Controls.Add(this.btnReset); + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnOK); + this.panel2.Name = "panel2"; + // + // btnReset + // + resources.ApplyResources(this.btnReset, "btnReset"); + this.btnReset.Name = "btnReset"; + this.btnReset.UseVisualStyleBackColor = true; + this.btnReset.Click += new System.EventHandler(this.btnReset_Click); + // + // btnOK + // + resources.ApplyResources(this.btnOK, "btnOK"); + this.btnOK.Name = "btnOK"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // panel1 + // + resources.ApplyResources(this.panel1, "panel1"); + this.panel1.Controls.Add(this.label6); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.txtGlobalHotkey3); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.txtGlobalHotkey2); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.txtGlobalHotkey1); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.txtGlobalHotkey0); + this.panel1.Controls.Add(this.label2); + this.panel1.Name = "panel1"; + // + // label6 + // + resources.ApplyResources(this.label6, "label6"); + this.label6.ForeColor = System.Drawing.Color.Red; + this.label6.Name = "label6"; + // + // label5 + // + resources.ApplyResources(this.label5, "label5"); + this.label5.ForeColor = System.Drawing.Color.Red; + this.label5.Name = "label5"; + // + // txtGlobalHotkey3 + // + resources.ApplyResources(this.txtGlobalHotkey3, "txtGlobalHotkey3"); + this.txtGlobalHotkey3.Name = "txtGlobalHotkey3"; + this.txtGlobalHotkey3.ReadOnly = true; + // + // label4 + // + resources.ApplyResources(this.label4, "label4"); + this.label4.Name = "label4"; + // + // txtGlobalHotkey2 + // + resources.ApplyResources(this.txtGlobalHotkey2, "txtGlobalHotkey2"); + this.txtGlobalHotkey2.Name = "txtGlobalHotkey2"; + this.txtGlobalHotkey2.ReadOnly = true; + // + // label3 + // + resources.ApplyResources(this.label3, "label3"); + this.label3.Name = "label3"; + // + // txtGlobalHotkey1 + // + resources.ApplyResources(this.txtGlobalHotkey1, "txtGlobalHotkey1"); + this.txtGlobalHotkey1.Name = "txtGlobalHotkey1"; + this.txtGlobalHotkey1.ReadOnly = true; + // + // label1 + // + resources.ApplyResources(this.label1, "label1"); + this.label1.Name = "label1"; + // + // txtGlobalHotkey0 + // + resources.ApplyResources(this.txtGlobalHotkey0, "txtGlobalHotkey0"); + this.txtGlobalHotkey0.Name = "txtGlobalHotkey0"; + this.txtGlobalHotkey0.ReadOnly = true; + // + // label2 + // + resources.ApplyResources(this.label2, "label2"); + this.label2.Name = "label2"; + // + // GlobalHotkeySettingForm + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnClose; + this.Controls.Add(this.panel1); + this.Controls.Add(this.panel2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "GlobalHotkeySettingForm"; + this.Load += new System.EventHandler(this.GlobalHotkeySettingForm_Load); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btnClose; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TextBox txtGlobalHotkey0; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtGlobalHotkey3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtGlobalHotkey2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtGlobalHotkey1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnReset; + private System.Windows.Forms.Label label6; + } +} \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.cs b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.cs new file mode 100644 index 00000000..66799af0 --- /dev/null +++ b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.cs @@ -0,0 +1,138 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using v2rayN.Base; +using v2rayN.Handler; +using v2rayN.Mode; + +namespace v2rayN.Forms +{ + public partial class GlobalHotkeySettingForm : BaseForm + { + List lstKey; + public GlobalHotkeySettingForm() + { + InitializeComponent(); + } + + private void GlobalHotkeySettingForm_Load(object sender, EventArgs e) + { + if (config.globalHotkeys == null) + { + config.globalHotkeys = new List(); + } + + foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey))) + { + if (config.globalHotkeys.FindIndex(t => t.eGlobalHotkey == it) >= 0) + { + continue; + } + + config.globalHotkeys.Add(new KeyEventItem() + { + eGlobalHotkey = it, + Alt = false, + Control = false, + Shift = false, + KeyCode = null + }); + } + + lstKey = Utils.DeepCopy(config.globalHotkeys); + + txtGlobalHotkey0.KeyDown += TxtGlobalHotkey_KeyDown; + txtGlobalHotkey1.KeyDown += TxtGlobalHotkey_KeyDown; + txtGlobalHotkey2.KeyDown += TxtGlobalHotkey_KeyDown; + txtGlobalHotkey3.KeyDown += TxtGlobalHotkey_KeyDown; + + BindingData(-1); + } + + private void TxtGlobalHotkey_KeyDown(object sender, KeyEventArgs e) + { + var txt = ((TextBox)sender); + var index = Utils.ToInt(txt.Name.Substring(txt.Name.Length - 1, 1)); + + lstKey[index].KeyCode = e.KeyCode; + lstKey[index].Alt = e.Alt; + lstKey[index].Control = e.Control; + lstKey[index].Shift = e.Shift; + + BindingData(index); + } + + private void BindingData(int index) + { + for (int k = 0; k < lstKey.Count; k++) + { + if (index >= 0 && index != k) + { + continue; + } + var item = lstKey[k]; + var keys = string.Empty; + + if (item.Control) + { + keys += $"{Keys.Control.ToString()} + "; + } + if (item.Alt) + { + keys += $"{Keys.Alt.ToString()} + "; + } + if (item.Shift) + { + keys += $"{Keys.Shift.ToString()} + "; + } + if (item.KeyCode != null) + { + keys += $"{item.KeyCode.ToString()}"; + } + + panel1.Controls[$"txtGlobalHotkey{k}"].Text = keys; + } + } + + private void btnOK_Click(object sender, EventArgs e) + { + config.globalHotkeys = lstKey; + + if (ConfigHandler.SaveConfig(ref config, false) == 0) + { + this.DialogResult = DialogResult.OK; + } + else + { + UI.ShowWarning(UIRes.I18N("OperationFailed")); + } + } + + private void btnClose_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void btnReset_Click(object sender, EventArgs e) + { + lstKey.Clear(); + foreach (EGlobalHotkey it in Enum.GetValues(typeof(EGlobalHotkey))) + { + if (lstKey.FindIndex(t => t.eGlobalHotkey == it) >= 0) + { + continue; + } + + lstKey.Add(new KeyEventItem() + { + eGlobalHotkey = it, + Alt = false, + Control = false, + Shift = false, + KeyCode = null + }); + } + BindingData(-1); + } + } +} diff --git a/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.resx b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.resx new file mode 100644 index 00000000..62c49a4f --- /dev/null +++ b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.resx @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Clear system proxy + + + + NoControl + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bottom + + + 1 + + + + 75, 23 + + + panel2 + + + panel1 + + + &Reset + + + + True + + + 0 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + btnOK + + + panel2 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + GlobalHotkeySettingForm + + + label1 + + + 189, 138 + + + 34 + + + 37 + + + panel2 + + + 18, 215 + + + 6 + + + 101, 12 + + + 8 + + + 75, 23 + + + NoControl + + + NoControl + + + Take effect after restart + + + 278, 21 + + + 189, 18 + + + 11 + + + 7 + + + panel1 + + + 18, 103 + + + 18, 190 + + + panel1 + + + 278, 21 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 527, 60 + + + 113, 12 + + + 32 + + + txtGlobalHotkey2 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label5 + + + 527, 242 + + + 211, 17 + + + 9 + + + 40 + + + 71, 12 + + + panel1 + + + panel1 + + + 75, 23 + + + 1 + + + panel1 + + + 18, 22 + + + label4 + + + txtGlobalHotkey1 + + + 33 + + + Do not change system proxy + + + Set system proxy + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + NoControl + + + txtGlobalHotkey0 + + + 39 + + + btnClose + + + 303, 17 + + + 0, 242 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + Fill + + + 3 + + + btnReset + + + 6, 12 + + + 6 + + + 189, 58 + + + 0 + + + 7 + + + panel1 + + + NoControl + + + 36 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + 31 + + + NoControl + + + True + + + 278, 21 + + + True + + + NoControl + + + 189, 99 + + + label2 + + + label3 + + + True + + + Set directly by pressing the keyboard + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + &Cancel + + + 18, 62 + + + &OK + + + 1 + + + Display GUI + + + 35 + + + NoControl + + + True + + + panel1 + + + 18, 142 + + + 2 + + + $this + + + 161, 12 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 227, 12 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + 0, 0 + + + panel2 + + + 4 + + + 155, 12 + + + GlobalHotkey Setting + + + 2 + + + 5 + + + 527, 302 + + + 4 + + + 38 + + + txtGlobalHotkey3 + + + 278, 21 + + + $this + + + 396, 17 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + label6 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + True + + + 25 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx new file mode 100644 index 00000000..06a7a69c --- /dev/null +++ b/v2rayN/v2rayN/Forms/GlobalHotkeySettingForm.zh-Hans.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 取消(&C) + + + 重置(&R) + + + 确定(&O) + + + + 65, 12 + + + 重启后生效 + + + 113, 12 + + + 直接按键盘进行设置 + + + 89, 12 + + + 不改变系统代理 + + + 自动配置系统代理 + + + 77, 12 + + + 清除系统代理 + + + 65, 12 + + + 显示主界面 + + + 全局热键设置 + + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MainForm.Designer.cs b/v2rayN/v2rayN/Forms/MainForm.Designer.cs index cea1cf45..425eebe3 100644 --- a/v2rayN/v2rayN/Forms/MainForm.Designer.cs +++ b/v2rayN/v2rayN/Forms/MainForm.Designer.cs @@ -64,8 +64,8 @@ this.menuExport2ServerConfig = new System.Windows.Forms.ToolStripMenuItem(); this.menuExport2ShareUrl = new System.Windows.Forms.ToolStripMenuItem(); this.menuExport2SubContent = new System.Windows.Forms.ToolStripMenuItem(); - this.qrCodeControl = new v2rayN.Forms.QRCodeControl(); this.tsbServer = new System.Windows.Forms.ToolStripDropDownButton(); + this.qrCodeControl = new v2rayN.Forms.QRCodeControl(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.gbMsgTitle = new System.Windows.Forms.GroupBox(); @@ -113,6 +113,7 @@ this.tsbSetting = new System.Windows.Forms.ToolStripDropDownButton(); this.tsbOptionSetting = new System.Windows.Forms.ToolStripMenuItem(); this.tsbRoutingSetting = new System.Windows.Forms.ToolStripMenuItem(); + this.tsbGlobalHotkeySetting = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); this.tsbBackupGuiNConfig = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); @@ -160,17 +161,19 @@ // // scMain.Panel1 // + resources.ApplyResources(this.scMain.Panel1, "scMain.Panel1"); this.scMain.Panel1.Controls.Add(this.lvServers); // // scMain.Panel2 // + resources.ApplyResources(this.scMain.Panel2, "scMain.Panel2"); this.scMain.Panel2.Controls.Add(this.qrCodeControl); this.scMain.TabStop = false; // // lvServers // - this.lvServers.ContextMenuStrip = this.cmsLv; resources.ApplyResources(this.lvServers, "lvServers"); + this.lvServers.ContextMenuStrip = this.cmsLv; this.lvServers.FullRowSelect = true; this.lvServers.GridLines = true; this.lvServers.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; @@ -189,6 +192,7 @@ // // cmsLv // + resources.ApplyResources(this.cmsLv, "cmsLv"); this.cmsLv.ImageScalingSize = new System.Drawing.Size(20, 20); this.cmsLv.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuAddVmessServer, @@ -223,202 +227,201 @@ this.menuExport2ShareUrl, this.menuExport2SubContent}); this.cmsLv.Name = "cmsLv"; - resources.ApplyResources(this.cmsLv, "cmsLv"); // // menuAddVmessServer // - this.menuAddVmessServer.Name = "menuAddVmessServer"; resources.ApplyResources(this.menuAddVmessServer, "menuAddVmessServer"); + this.menuAddVmessServer.Name = "menuAddVmessServer"; this.menuAddVmessServer.Click += new System.EventHandler(this.menuAddVmessServer_Click); // // menuAddVlessServer // - this.menuAddVlessServer.Name = "menuAddVlessServer"; resources.ApplyResources(this.menuAddVlessServer, "menuAddVlessServer"); + this.menuAddVlessServer.Name = "menuAddVlessServer"; this.menuAddVlessServer.Click += new System.EventHandler(this.menuAddVlessServer_Click); // // menuAddShadowsocksServer // - this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer"; resources.ApplyResources(this.menuAddShadowsocksServer, "menuAddShadowsocksServer"); + this.menuAddShadowsocksServer.Name = "menuAddShadowsocksServer"; this.menuAddShadowsocksServer.Click += new System.EventHandler(this.menuAddShadowsocksServer_Click); // // menuAddSocksServer // - this.menuAddSocksServer.Name = "menuAddSocksServer"; resources.ApplyResources(this.menuAddSocksServer, "menuAddSocksServer"); + this.menuAddSocksServer.Name = "menuAddSocksServer"; this.menuAddSocksServer.Click += new System.EventHandler(this.menuAddSocksServer_Click); // // menuAddTrojanServer // - this.menuAddTrojanServer.Name = "menuAddTrojanServer"; resources.ApplyResources(this.menuAddTrojanServer, "menuAddTrojanServer"); + this.menuAddTrojanServer.Name = "menuAddTrojanServer"; this.menuAddTrojanServer.Click += new System.EventHandler(this.menuAddTrojanServer_Click); // // menuAddCustomServer // - this.menuAddCustomServer.Name = "menuAddCustomServer"; resources.ApplyResources(this.menuAddCustomServer, "menuAddCustomServer"); + this.menuAddCustomServer.Name = "menuAddCustomServer"; this.menuAddCustomServer.Click += new System.EventHandler(this.menuAddCustomServer_Click); // // menuAddServers // - this.menuAddServers.Name = "menuAddServers"; resources.ApplyResources(this.menuAddServers, "menuAddServers"); + this.menuAddServers.Name = "menuAddServers"; this.menuAddServers.Click += new System.EventHandler(this.menuAddServers_Click); // // menuScanScreen // - this.menuScanScreen.Name = "menuScanScreen"; resources.ApplyResources(this.menuScanScreen, "menuScanScreen"); + this.menuScanScreen.Name = "menuScanScreen"; this.menuScanScreen.Click += new System.EventHandler(this.menuScanScreen_Click); // // toolStripSeparator1 // - this.toolStripSeparator1.Name = "toolStripSeparator1"; resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1"); + this.toolStripSeparator1.Name = "toolStripSeparator1"; // // menuRemoveServer // - this.menuRemoveServer.Name = "menuRemoveServer"; resources.ApplyResources(this.menuRemoveServer, "menuRemoveServer"); + this.menuRemoveServer.Name = "menuRemoveServer"; this.menuRemoveServer.Click += new System.EventHandler(this.menuRemoveServer_Click); // // menuRemoveDuplicateServer // - this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer"; resources.ApplyResources(this.menuRemoveDuplicateServer, "menuRemoveDuplicateServer"); + this.menuRemoveDuplicateServer.Name = "menuRemoveDuplicateServer"; this.menuRemoveDuplicateServer.Click += new System.EventHandler(this.menuRemoveDuplicateServer_Click); // // menuCopyServer // - this.menuCopyServer.Name = "menuCopyServer"; resources.ApplyResources(this.menuCopyServer, "menuCopyServer"); + this.menuCopyServer.Name = "menuCopyServer"; this.menuCopyServer.Click += new System.EventHandler(this.menuCopyServer_Click); // // menuSetDefaultServer // - this.menuSetDefaultServer.Name = "menuSetDefaultServer"; resources.ApplyResources(this.menuSetDefaultServer, "menuSetDefaultServer"); + this.menuSetDefaultServer.Name = "menuSetDefaultServer"; this.menuSetDefaultServer.Click += new System.EventHandler(this.menuSetDefaultServer_Click); // // toolStripSeparator3 // - this.toolStripSeparator3.Name = "toolStripSeparator3"; resources.ApplyResources(this.toolStripSeparator3, "toolStripSeparator3"); + this.toolStripSeparator3.Name = "toolStripSeparator3"; // // menuMoveTop // - this.menuMoveTop.Name = "menuMoveTop"; resources.ApplyResources(this.menuMoveTop, "menuMoveTop"); + this.menuMoveTop.Name = "menuMoveTop"; this.menuMoveTop.Click += new System.EventHandler(this.menuMoveTop_Click); // // menuMoveUp // - this.menuMoveUp.Name = "menuMoveUp"; resources.ApplyResources(this.menuMoveUp, "menuMoveUp"); + this.menuMoveUp.Name = "menuMoveUp"; this.menuMoveUp.Click += new System.EventHandler(this.menuMoveUp_Click); // // menuMoveDown // - this.menuMoveDown.Name = "menuMoveDown"; resources.ApplyResources(this.menuMoveDown, "menuMoveDown"); + this.menuMoveDown.Name = "menuMoveDown"; this.menuMoveDown.Click += new System.EventHandler(this.menuMoveDown_Click); // // menuMoveBottom // - this.menuMoveBottom.Name = "menuMoveBottom"; resources.ApplyResources(this.menuMoveBottom, "menuMoveBottom"); + this.menuMoveBottom.Name = "menuMoveBottom"; this.menuMoveBottom.Click += new System.EventHandler(this.menuMoveBottom_Click); // // menuSelectAll // - this.menuSelectAll.Name = "menuSelectAll"; resources.ApplyResources(this.menuSelectAll, "menuSelectAll"); + this.menuSelectAll.Name = "menuSelectAll"; this.menuSelectAll.Click += new System.EventHandler(this.menuSelectAll_Click); // // toolStripSeparator9 // - this.toolStripSeparator9.Name = "toolStripSeparator9"; resources.ApplyResources(this.toolStripSeparator9, "toolStripSeparator9"); + this.toolStripSeparator9.Name = "toolStripSeparator9"; // // menuPingServer // - this.menuPingServer.Name = "menuPingServer"; resources.ApplyResources(this.menuPingServer, "menuPingServer"); + this.menuPingServer.Name = "menuPingServer"; this.menuPingServer.Click += new System.EventHandler(this.menuPingServer_Click); // // menuTcpingServer // - this.menuTcpingServer.Name = "menuTcpingServer"; resources.ApplyResources(this.menuTcpingServer, "menuTcpingServer"); + this.menuTcpingServer.Name = "menuTcpingServer"; this.menuTcpingServer.Click += new System.EventHandler(this.menuTcpingServer_Click); // // menuRealPingServer // - this.menuRealPingServer.Name = "menuRealPingServer"; resources.ApplyResources(this.menuRealPingServer, "menuRealPingServer"); + this.menuRealPingServer.Name = "menuRealPingServer"; this.menuRealPingServer.Click += new System.EventHandler(this.menuRealPingServer_Click); // // menuSpeedServer // - this.menuSpeedServer.Name = "menuSpeedServer"; resources.ApplyResources(this.menuSpeedServer, "menuSpeedServer"); + this.menuSpeedServer.Name = "menuSpeedServer"; this.menuSpeedServer.Click += new System.EventHandler(this.menuSpeedServer_Click); // // tsbTestMe // - this.tsbTestMe.Name = "tsbTestMe"; resources.ApplyResources(this.tsbTestMe, "tsbTestMe"); + this.tsbTestMe.Name = "tsbTestMe"; this.tsbTestMe.Click += new System.EventHandler(this.tsbTestMe_Click); // // menuClearServerStatistics // - this.menuClearServerStatistics.Name = "menuClearServerStatistics"; resources.ApplyResources(this.menuClearServerStatistics, "menuClearServerStatistics"); + this.menuClearServerStatistics.Name = "menuClearServerStatistics"; this.menuClearServerStatistics.Click += new System.EventHandler(this.menuClearStatistic_Click); // // toolStripSeparator6 // - this.toolStripSeparator6.Name = "toolStripSeparator6"; resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6"); + this.toolStripSeparator6.Name = "toolStripSeparator6"; // // menuExport2ClientConfig // - this.menuExport2ClientConfig.Name = "menuExport2ClientConfig"; resources.ApplyResources(this.menuExport2ClientConfig, "menuExport2ClientConfig"); + this.menuExport2ClientConfig.Name = "menuExport2ClientConfig"; this.menuExport2ClientConfig.Click += new System.EventHandler(this.menuExport2ClientConfig_Click); // // menuExport2ServerConfig // - this.menuExport2ServerConfig.Name = "menuExport2ServerConfig"; resources.ApplyResources(this.menuExport2ServerConfig, "menuExport2ServerConfig"); + this.menuExport2ServerConfig.Name = "menuExport2ServerConfig"; this.menuExport2ServerConfig.Click += new System.EventHandler(this.menuExport2ServerConfig_Click); // // menuExport2ShareUrl // - this.menuExport2ShareUrl.Name = "menuExport2ShareUrl"; resources.ApplyResources(this.menuExport2ShareUrl, "menuExport2ShareUrl"); + this.menuExport2ShareUrl.Name = "menuExport2ShareUrl"; this.menuExport2ShareUrl.Click += new System.EventHandler(this.menuExport2ShareUrl_Click); // // menuExport2SubContent // - this.menuExport2SubContent.Name = "menuExport2SubContent"; resources.ApplyResources(this.menuExport2SubContent, "menuExport2SubContent"); + this.menuExport2SubContent.Name = "menuExport2SubContent"; this.menuExport2SubContent.Click += new System.EventHandler(this.menuExport2SubContent_Click); // + // tsbServer + // + resources.ApplyResources(this.tsbServer, "tsbServer"); + this.tsbServer.DropDown = this.cmsLv; + this.tsbServer.Image = global::v2rayN.Properties.Resources.server; + this.tsbServer.Name = "tsbServer"; + // // qrCodeControl // resources.ApplyResources(this.qrCodeControl, "qrCodeControl"); this.qrCodeControl.Name = "qrCodeControl"; // - // tsbServer - // - this.tsbServer.DropDown = this.cmsLv; - this.tsbServer.Image = global::v2rayN.Properties.Resources.server; - resources.ApplyResources(this.tsbServer, "tsbServer"); - this.tsbServer.Name = "tsbServer"; - // // splitContainer1 // resources.ApplyResources(this.splitContainer1, "splitContainer1"); @@ -426,33 +429,35 @@ // // splitContainer1.Panel1 // + resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); this.splitContainer1.Panel1.Controls.Add(this.groupBox1); // // splitContainer1.Panel2 // + resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); this.splitContainer1.Panel2.Controls.Add(this.gbMsgTitle); // // groupBox1 // - this.groupBox1.Controls.Add(this.scMain); resources.ApplyResources(this.groupBox1, "groupBox1"); + this.groupBox1.Controls.Add(this.scMain); this.groupBox1.Name = "groupBox1"; this.groupBox1.TabStop = false; // // gbMsgTitle // + resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle"); this.gbMsgTitle.Controls.Add(this.txtMsgBox); this.gbMsgTitle.Controls.Add(this.ssMain); - resources.ApplyResources(this.gbMsgTitle, "gbMsgTitle"); this.gbMsgTitle.Name = "gbMsgTitle"; this.gbMsgTitle.TabStop = false; // // txtMsgBox // + resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); this.txtMsgBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(49)))), ((int)(((byte)(52))))); this.txtMsgBox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.txtMsgBox.ContextMenuStrip = this.cmsMsgBox; - resources.ApplyResources(this.txtMsgBox, "txtMsgBox"); this.txtMsgBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(226)))), ((int)(((byte)(228))))); this.txtMsgBox.Name = "txtMsgBox"; this.txtMsgBox.ReadOnly = true; @@ -460,6 +465,7 @@ // // cmsMsgBox // + resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox"); this.cmsMsgBox.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuMsgBoxSelectAll, this.menuMsgBoxCopy, @@ -468,46 +474,46 @@ this.menuMsgBoxAddRoutingRule, this.menuMsgBoxFilter}); this.cmsMsgBox.Name = "cmsMsgBox"; - resources.ApplyResources(this.cmsMsgBox, "cmsMsgBox"); // // menuMsgBoxSelectAll // - this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll"; resources.ApplyResources(this.menuMsgBoxSelectAll, "menuMsgBoxSelectAll"); + this.menuMsgBoxSelectAll.Name = "menuMsgBoxSelectAll"; this.menuMsgBoxSelectAll.Click += new System.EventHandler(this.menuMsgBoxSelectAll_Click); // // menuMsgBoxCopy // - this.menuMsgBoxCopy.Name = "menuMsgBoxCopy"; resources.ApplyResources(this.menuMsgBoxCopy, "menuMsgBoxCopy"); + this.menuMsgBoxCopy.Name = "menuMsgBoxCopy"; this.menuMsgBoxCopy.Click += new System.EventHandler(this.menuMsgBoxCopy_Click); // // menuMsgBoxCopyAll // - this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll"; resources.ApplyResources(this.menuMsgBoxCopyAll, "menuMsgBoxCopyAll"); + this.menuMsgBoxCopyAll.Name = "menuMsgBoxCopyAll"; this.menuMsgBoxCopyAll.Click += new System.EventHandler(this.menuMsgBoxCopyAll_Click); // // menuMsgBoxClear // - this.menuMsgBoxClear.Name = "menuMsgBoxClear"; resources.ApplyResources(this.menuMsgBoxClear, "menuMsgBoxClear"); + this.menuMsgBoxClear.Name = "menuMsgBoxClear"; this.menuMsgBoxClear.Click += new System.EventHandler(this.menuMsgBoxClear_Click); // // menuMsgBoxAddRoutingRule // - this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule"; resources.ApplyResources(this.menuMsgBoxAddRoutingRule, "menuMsgBoxAddRoutingRule"); + this.menuMsgBoxAddRoutingRule.Name = "menuMsgBoxAddRoutingRule"; this.menuMsgBoxAddRoutingRule.Click += new System.EventHandler(this.menuMsgBoxAddRoutingRule_Click); // // menuMsgBoxFilter // - this.menuMsgBoxFilter.Name = "menuMsgBoxFilter"; resources.ApplyResources(this.menuMsgBoxFilter, "menuMsgBoxFilter"); + this.menuMsgBoxFilter.Name = "menuMsgBoxFilter"; this.menuMsgBoxFilter.Click += new System.EventHandler(this.menuMsgBoxFilter_Click); // // ssMain // + resources.ApplyResources(this.ssMain, "ssMain"); this.ssMain.ImageScalingSize = new System.Drawing.Size(20, 20); this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolSslInboundInfo, @@ -516,14 +522,13 @@ this.toolSslBlank2, this.toolSslServerSpeed, this.toolSslBlank4}); - resources.ApplyResources(this.ssMain, "ssMain"); this.ssMain.Name = "ssMain"; this.ssMain.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.ssMain_ItemClicked); // // toolSslInboundInfo // - this.toolSslInboundInfo.Name = "toolSslInboundInfo"; resources.ApplyResources(this.toolSslInboundInfo, "toolSslInboundInfo"); + this.toolSslInboundInfo.Name = "toolSslInboundInfo"; // // toolSslBlank1 // @@ -533,13 +538,13 @@ // // toolSslRoutingRule // - this.toolSslRoutingRule.Name = "toolSslRoutingRule"; resources.ApplyResources(this.toolSslRoutingRule, "toolSslRoutingRule"); + this.toolSslRoutingRule.Name = "toolSslRoutingRule"; // // toolSslBlank2 // - this.toolSslBlank2.Name = "toolSslBlank2"; resources.ApplyResources(this.toolSslBlank2, "toolSslBlank2"); + this.toolSslBlank2.Name = "toolSslBlank2"; this.toolSslBlank2.Spring = true; // // toolSslServerSpeed @@ -550,19 +555,19 @@ // // toolSslBlank4 // - this.toolSslBlank4.Name = "toolSslBlank4"; resources.ApplyResources(this.toolSslBlank4, "toolSslBlank4"); + this.toolSslBlank4.Name = "toolSslBlank4"; // // notifyMain // - this.notifyMain.ContextMenuStrip = this.cmsMain; resources.ApplyResources(this.notifyMain, "notifyMain"); + this.notifyMain.ContextMenuStrip = this.cmsMain; this.notifyMain.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyMain_MouseClick); // // cmsMain // - this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20); resources.ApplyResources(this.cmsMain, "cmsMain"); + this.cmsMain.ImageScalingSize = new System.Drawing.Size(20, 20); this.cmsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuSysAgentMode, this.menuRoutings, @@ -582,87 +587,87 @@ // // menuSysAgentMode // + resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); this.menuSysAgentMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.menuKeepClear, this.menuGlobal, this.menuKeepNothing}); this.menuSysAgentMode.Name = "menuSysAgentMode"; - resources.ApplyResources(this.menuSysAgentMode, "menuSysAgentMode"); // // menuKeepClear // - this.menuKeepClear.Name = "menuKeepClear"; resources.ApplyResources(this.menuKeepClear, "menuKeepClear"); + this.menuKeepClear.Name = "menuKeepClear"; this.menuKeepClear.Click += new System.EventHandler(this.menuKeepClear_Click); // // menuGlobal // - this.menuGlobal.Name = "menuGlobal"; resources.ApplyResources(this.menuGlobal, "menuGlobal"); + this.menuGlobal.Name = "menuGlobal"; this.menuGlobal.Click += new System.EventHandler(this.menuGlobal_Click); // // menuKeepNothing // - this.menuKeepNothing.Name = "menuKeepNothing"; resources.ApplyResources(this.menuKeepNothing, "menuKeepNothing"); + this.menuKeepNothing.Name = "menuKeepNothing"; this.menuKeepNothing.Click += new System.EventHandler(this.menuKeepNothing_Click); // // menuRoutings // - this.menuRoutings.Name = "menuRoutings"; resources.ApplyResources(this.menuRoutings, "menuRoutings"); + this.menuRoutings.Name = "menuRoutings"; // // menuServers // - this.menuServers.Name = "menuServers"; resources.ApplyResources(this.menuServers, "menuServers"); + this.menuServers.Name = "menuServers"; // // menuServers2 // + resources.ApplyResources(this.menuServers2, "menuServers2"); this.menuServers2.BackColor = System.Drawing.SystemColors.Window; this.menuServers2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.menuServers2.DropDownWidth = 500; - resources.ApplyResources(this.menuServers2, "menuServers2"); this.menuServers2.Name = "menuServers2"; // // toolStripSeparator13 // - this.toolStripSeparator13.Name = "toolStripSeparator13"; resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13"); + this.toolStripSeparator13.Name = "toolStripSeparator13"; // // menuAddServers2 // - this.menuAddServers2.Name = "menuAddServers2"; resources.ApplyResources(this.menuAddServers2, "menuAddServers2"); + this.menuAddServers2.Name = "menuAddServers2"; this.menuAddServers2.Click += new System.EventHandler(this.menuAddServers_Click); // // menuScanScreen2 // - this.menuScanScreen2.Name = "menuScanScreen2"; resources.ApplyResources(this.menuScanScreen2, "menuScanScreen2"); + this.menuScanScreen2.Name = "menuScanScreen2"; this.menuScanScreen2.Click += new System.EventHandler(this.menuScanScreen_Click); // // menuUpdateSubscriptions // - this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions"; resources.ApplyResources(this.menuUpdateSubscriptions, "menuUpdateSubscriptions"); + this.menuUpdateSubscriptions.Name = "menuUpdateSubscriptions"; this.menuUpdateSubscriptions.Click += new System.EventHandler(this.menuUpdateSubscriptions_Click); // // menuUpdateSubViaProxy // - this.menuUpdateSubViaProxy.Name = "menuUpdateSubViaProxy"; resources.ApplyResources(this.menuUpdateSubViaProxy, "menuUpdateSubViaProxy"); + this.menuUpdateSubViaProxy.Name = "menuUpdateSubViaProxy"; this.menuUpdateSubViaProxy.Click += new System.EventHandler(this.menuUpdateSubViaProxy_Click); // // toolStripSeparator2 // - this.toolStripSeparator2.Name = "toolStripSeparator2"; resources.ApplyResources(this.toolStripSeparator2, "toolStripSeparator2"); + this.toolStripSeparator2.Name = "toolStripSeparator2"; // // menuExit // - this.menuExit.Name = "menuExit"; resources.ApplyResources(this.menuExit, "menuExit"); + this.menuExit.Name = "menuExit"; this.menuExit.Click += new System.EventHandler(this.menuExit_Click); // // bgwScan @@ -678,6 +683,7 @@ // // tsMain // + resources.ApplyResources(this.tsMain, "tsMain"); this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32); this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbServer, @@ -695,95 +701,101 @@ this.tsbPromotion, this.toolStripSeparator11, this.tsbClose}); - resources.ApplyResources(this.tsMain, "tsMain"); this.tsMain.Name = "tsMain"; this.tsMain.TabStop = true; // // toolStripSeparator4 // - this.toolStripSeparator4.Name = "toolStripSeparator4"; resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4"); + this.toolStripSeparator4.Name = "toolStripSeparator4"; // // tsbSub // + resources.ApplyResources(this.tsbSub, "tsbSub"); this.tsbSub.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbSubSetting, this.tsbSubUpdate, this.tsbSubUpdateViaProxy}); this.tsbSub.Image = global::v2rayN.Properties.Resources.sub; - resources.ApplyResources(this.tsbSub, "tsbSub"); this.tsbSub.Name = "tsbSub"; // // tsbSubSetting // - this.tsbSubSetting.Name = "tsbSubSetting"; resources.ApplyResources(this.tsbSubSetting, "tsbSubSetting"); + this.tsbSubSetting.Name = "tsbSubSetting"; this.tsbSubSetting.Click += new System.EventHandler(this.tsbSubSetting_Click); // // tsbSubUpdate // - this.tsbSubUpdate.Name = "tsbSubUpdate"; resources.ApplyResources(this.tsbSubUpdate, "tsbSubUpdate"); + this.tsbSubUpdate.Name = "tsbSubUpdate"; this.tsbSubUpdate.Click += new System.EventHandler(this.tsbSubUpdate_Click); // // tsbSubUpdateViaProxy // - this.tsbSubUpdateViaProxy.Name = "tsbSubUpdateViaProxy"; resources.ApplyResources(this.tsbSubUpdateViaProxy, "tsbSubUpdateViaProxy"); + this.tsbSubUpdateViaProxy.Name = "tsbSubUpdateViaProxy"; this.tsbSubUpdateViaProxy.Click += new System.EventHandler(this.tsbSubUpdateViaProxy_Click); // // tsbQRCodeSwitch // + resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch"); this.tsbQRCodeSwitch.CheckOnClick = true; this.tsbQRCodeSwitch.ForeColor = System.Drawing.Color.Black; this.tsbQRCodeSwitch.Image = global::v2rayN.Properties.Resources.share; - resources.ApplyResources(this.tsbQRCodeSwitch, "tsbQRCodeSwitch"); this.tsbQRCodeSwitch.Name = "tsbQRCodeSwitch"; this.tsbQRCodeSwitch.CheckedChanged += new System.EventHandler(this.tsbQRCodeSwitch_CheckedChanged); // // toolStripSeparator8 // - this.toolStripSeparator8.Name = "toolStripSeparator8"; resources.ApplyResources(this.toolStripSeparator8, "toolStripSeparator8"); + this.toolStripSeparator8.Name = "toolStripSeparator8"; // // tsbSetting // + resources.ApplyResources(this.tsbSetting, "tsbSetting"); this.tsbSetting.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbOptionSetting, this.tsbRoutingSetting, + this.tsbGlobalHotkeySetting, this.toolStripSeparator14, this.tsbBackupGuiNConfig}); this.tsbSetting.Image = global::v2rayN.Properties.Resources.option; - resources.ApplyResources(this.tsbSetting, "tsbSetting"); this.tsbSetting.Name = "tsbSetting"; // // tsbOptionSetting // - this.tsbOptionSetting.Name = "tsbOptionSetting"; resources.ApplyResources(this.tsbOptionSetting, "tsbOptionSetting"); + this.tsbOptionSetting.Name = "tsbOptionSetting"; this.tsbOptionSetting.Click += new System.EventHandler(this.tsbOptionSetting_Click); // // tsbRoutingSetting // - this.tsbRoutingSetting.Name = "tsbRoutingSetting"; resources.ApplyResources(this.tsbRoutingSetting, "tsbRoutingSetting"); + this.tsbRoutingSetting.Name = "tsbRoutingSetting"; this.tsbRoutingSetting.Click += new System.EventHandler(this.tsbRoutingSetting_Click); // + // tsbGlobalHotkeySetting + // + resources.ApplyResources(this.tsbGlobalHotkeySetting, "tsbGlobalHotkeySetting"); + this.tsbGlobalHotkeySetting.Name = "tsbGlobalHotkeySetting"; + this.tsbGlobalHotkeySetting.Click += new System.EventHandler(this.tsbGlobalHotkeySetting_Click); + // // toolStripSeparator14 // - this.toolStripSeparator14.Name = "toolStripSeparator14"; resources.ApplyResources(this.toolStripSeparator14, "toolStripSeparator14"); + this.toolStripSeparator14.Name = "toolStripSeparator14"; // // tsbBackupGuiNConfig // - this.tsbBackupGuiNConfig.Name = "tsbBackupGuiNConfig"; resources.ApplyResources(this.tsbBackupGuiNConfig, "tsbBackupGuiNConfig"); + this.tsbBackupGuiNConfig.Name = "tsbBackupGuiNConfig"; this.tsbBackupGuiNConfig.Click += new System.EventHandler(this.tsbBackupGuiNConfig_Click); // // toolStripSeparator5 // - this.toolStripSeparator5.Name = "toolStripSeparator5"; resources.ApplyResources(this.toolStripSeparator5, "toolStripSeparator5"); + this.toolStripSeparator5.Name = "toolStripSeparator5"; // // tsbReload // @@ -793,11 +805,12 @@ // // toolStripSeparator7 // - this.toolStripSeparator7.Name = "toolStripSeparator7"; resources.ApplyResources(this.toolStripSeparator7, "toolStripSeparator7"); + this.toolStripSeparator7.Name = "toolStripSeparator7"; // // tsbCheckUpdate // + resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); this.tsbCheckUpdate.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbCheckUpdateN, this.tsbCheckUpdateCore, @@ -806,51 +819,51 @@ this.tsbCheckUpdateGeoSite, this.tsbCheckUpdateGeoIP}); this.tsbCheckUpdate.Image = global::v2rayN.Properties.Resources.checkupdate; - resources.ApplyResources(this.tsbCheckUpdate, "tsbCheckUpdate"); this.tsbCheckUpdate.Name = "tsbCheckUpdate"; // // tsbCheckUpdateN // - this.tsbCheckUpdateN.Name = "tsbCheckUpdateN"; resources.ApplyResources(this.tsbCheckUpdateN, "tsbCheckUpdateN"); + this.tsbCheckUpdateN.Name = "tsbCheckUpdateN"; this.tsbCheckUpdateN.Click += new System.EventHandler(this.tsbCheckUpdateN_Click); // // tsbCheckUpdateCore // - this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore"; resources.ApplyResources(this.tsbCheckUpdateCore, "tsbCheckUpdateCore"); + this.tsbCheckUpdateCore.Name = "tsbCheckUpdateCore"; this.tsbCheckUpdateCore.Click += new System.EventHandler(this.tsbCheckUpdateCore_Click); // // tsbCheckUpdateXrayCore // - this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore"; resources.ApplyResources(this.tsbCheckUpdateXrayCore, "tsbCheckUpdateXrayCore"); + this.tsbCheckUpdateXrayCore.Name = "tsbCheckUpdateXrayCore"; this.tsbCheckUpdateXrayCore.Click += new System.EventHandler(this.tsbCheckUpdateXrayCore_Click); // // toolStripSeparator15 // - this.toolStripSeparator15.Name = "toolStripSeparator15"; resources.ApplyResources(this.toolStripSeparator15, "toolStripSeparator15"); + this.toolStripSeparator15.Name = "toolStripSeparator15"; // // tsbCheckUpdateGeoSite // - this.tsbCheckUpdateGeoSite.Name = "tsbCheckUpdateGeoSite"; resources.ApplyResources(this.tsbCheckUpdateGeoSite, "tsbCheckUpdateGeoSite"); + this.tsbCheckUpdateGeoSite.Name = "tsbCheckUpdateGeoSite"; this.tsbCheckUpdateGeoSite.Click += new System.EventHandler(this.tsbCheckUpdateGeoSite_Click); // // tsbCheckUpdateGeoIP // - this.tsbCheckUpdateGeoIP.Name = "tsbCheckUpdateGeoIP"; resources.ApplyResources(this.tsbCheckUpdateGeoIP, "tsbCheckUpdateGeoIP"); + this.tsbCheckUpdateGeoIP.Name = "tsbCheckUpdateGeoIP"; this.tsbCheckUpdateGeoIP.Click += new System.EventHandler(this.tsbCheckUpdateGeoIP_Click); // // toolStripSeparator10 // - this.toolStripSeparator10.Name = "toolStripSeparator10"; resources.ApplyResources(this.toolStripSeparator10, "toolStripSeparator10"); + this.toolStripSeparator10.Name = "toolStripSeparator10"; // // tsbHelp // + resources.ApplyResources(this.tsbHelp, "tsbHelp"); this.tsbHelp.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsbAbout, this.tsbV2rayWebsite, @@ -858,50 +871,49 @@ this.tsbLanguageDef, this.tsbLanguageZhHans}); this.tsbHelp.Image = global::v2rayN.Properties.Resources.help; - resources.ApplyResources(this.tsbHelp, "tsbHelp"); this.tsbHelp.Name = "tsbHelp"; // // tsbAbout // - this.tsbAbout.Name = "tsbAbout"; resources.ApplyResources(this.tsbAbout, "tsbAbout"); + this.tsbAbout.Name = "tsbAbout"; this.tsbAbout.Click += new System.EventHandler(this.tsbAbout_Click); // // tsbV2rayWebsite // - this.tsbV2rayWebsite.Name = "tsbV2rayWebsite"; resources.ApplyResources(this.tsbV2rayWebsite, "tsbV2rayWebsite"); + this.tsbV2rayWebsite.Name = "tsbV2rayWebsite"; this.tsbV2rayWebsite.Click += new System.EventHandler(this.tsbV2rayWebsite_Click); // // toolStripSeparator12 // - this.toolStripSeparator12.Name = "toolStripSeparator12"; resources.ApplyResources(this.toolStripSeparator12, "toolStripSeparator12"); + this.toolStripSeparator12.Name = "toolStripSeparator12"; // // tsbLanguageDef // - this.tsbLanguageDef.Name = "tsbLanguageDef"; resources.ApplyResources(this.tsbLanguageDef, "tsbLanguageDef"); + this.tsbLanguageDef.Name = "tsbLanguageDef"; this.tsbLanguageDef.Click += new System.EventHandler(this.tsbLanguageDef_Click); // // tsbLanguageZhHans // - this.tsbLanguageZhHans.Name = "tsbLanguageZhHans"; resources.ApplyResources(this.tsbLanguageZhHans, "tsbLanguageZhHans"); + this.tsbLanguageZhHans.Name = "tsbLanguageZhHans"; this.tsbLanguageZhHans.Click += new System.EventHandler(this.tsbLanguageZhHans_Click); // // tsbPromotion // + resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); this.tsbPromotion.ForeColor = System.Drawing.Color.Black; this.tsbPromotion.Image = global::v2rayN.Properties.Resources.promotion; - resources.ApplyResources(this.tsbPromotion, "tsbPromotion"); this.tsbPromotion.Name = "tsbPromotion"; this.tsbPromotion.Click += new System.EventHandler(this.tsbPromotion_Click); // // toolStripSeparator11 // - this.toolStripSeparator11.Name = "toolStripSeparator11"; resources.ApplyResources(this.toolStripSeparator11, "toolStripSeparator11"); + this.toolStripSeparator11.Name = "toolStripSeparator11"; // // tsbClose // @@ -1054,6 +1066,7 @@ private System.Windows.Forms.ToolStripMenuItem tsbSubUpdateViaProxy; private System.Windows.Forms.ToolStripMenuItem menuUpdateSubViaProxy; private System.Windows.Forms.ToolStripMenuItem menuMsgBoxClear; + private System.Windows.Forms.ToolStripMenuItem tsbGlobalHotkeySetting; } } diff --git a/v2rayN/v2rayN/Forms/MainForm.cs b/v2rayN/v2rayN/Forms/MainForm.cs index a2fec808..dcc36de7 100644 --- a/v2rayN/v2rayN/Forms/MainForm.cs +++ b/v2rayN/v2rayN/Forms/MainForm.cs @@ -1,4 +1,5 @@ -using System; +using NHotkey; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; @@ -53,7 +54,6 @@ namespace v2rayN.Forms { statistics = new StatisticsHandler(config, UpdateStatisticsHandler); } - MainFormHandler.Instance.UpdateTask(config, UpdateTaskHandler); } private void MainForm_VisibleChanged(object sender, EventArgs e) @@ -80,6 +80,8 @@ namespace v2rayN.Forms HideForm(); + MainFormHandler.Instance.UpdateTask(config, UpdateTaskHandler); + MainFormHandler.Instance.RegisterGlobalHotkey(config, OnHotkeyHandler, UpdateTaskHandler); } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) @@ -163,6 +165,26 @@ namespace v2rayN.Forms } } + private void OnHotkeyHandler(object sender, HotkeyEventArgs e) + { + switch (Utils.ToInt(e.Name)) + { + case (int)EGlobalHotkey.ShowForm: + ShowForm(); + break; + case (int)EGlobalHotkey.SystemProxyClear: + SetListenerType(ESysProxyType.ForcedClear); + break; + case (int)EGlobalHotkey.SystemProxySet: + SetListenerType(ESysProxyType.ForcedChange); + break; + case (int)EGlobalHotkey.SystemProxyUnchanged: + SetListenerType(ESysProxyType.Unchanged); + break; + } + e.Handled = true; + } + #endregion #region 显示服务器 listview 和 menu @@ -792,6 +814,18 @@ namespace v2rayN.Forms } } + private void tsbGlobalHotkeySetting_Click(object sender, EventArgs e) + { + var fm = new GlobalHotkeySettingForm(); + if (fm.ShowDialog() == DialogResult.OK) + { + RefreshRoutingsMenu(); + RefreshServers(); + LoadV2ray(); + } + + } + private void tsbReload_Click(object sender, EventArgs e) { Global.reloadV2ray = true; diff --git a/v2rayN/v2rayN/Forms/MainForm.resx b/v2rayN/v2rayN/Forms/MainForm.resx index 47687761..82b8d55d 100644 --- a/v2rayN/v2rayN/Forms/MainForm.resx +++ b/v2rayN/v2rayN/Forms/MainForm.resx @@ -117,203 +117,785 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill + + Remove duplicate servers - - 3, 17 - - - 327, 17 - - + 355, 22 - - Add [VMess] server + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + 355, 22 + + + 97, 53 + + 355, 22 Add [VLESS] server - - 355, 22 + + 0 - - Add [Shadowsocks] server + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 355, 22 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Restart service + + + 200, 25 + + + tsbSubSetting + + + 264, 22 + + + toolSslInboundInfo + + + gbMsgTitle + + + menuMoveUp Add [Socks] server + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuUpdateSubViaProxy + + + + ImageAboveText + + + 227, 22 + + + 语言-[中文简体] + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Settings + + + tsbHelp + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator6 + 355, 22 - - Add [Trojan] server + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 355, 22 + + 99, 53 - - Add a custom configuration server + + Update subscriptions - - 355, 22 + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Import bulk URL from clipboard (Ctrl+V) + + 187, 22 - - 355, 22 + + 67, 53 - - Scan QR code on the screen (Ctrl+S) + + tsbSetting - - 352, 6 + + toolSslBlank2 355, 22 - - Remove selected servers (Delete) - - + 355, 22 - - Remove duplicate servers + + tsbCheckUpdateN + + + 45, 53 + + + Do not change system proxy + + + tsbCheckUpdateGeoSite + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator7 + + + Update v2flyCore + + + Update GeoSite + + + Magenta + + + menuMsgBoxAddRoutingRule 355, 22 - - Clone selected server + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 355, 22 + + menuExport2SubContent - - Set as active server (Enter) + + Share - - 352, 6 + + 227, 22 + + + tsbQRCodeSwitch + + + Add Routing Rule (Ctrl+V) 355, 22 - - Move to top (T) - - - 355, 22 - - - Up (U) - - - 355, 22 - - - Down (D) - - - 355, 22 - - - Move to bottom (B) - - - 355, 22 - - - Select All (Ctrl+A) - - - 352, 6 - - - 355, 22 - - - Test servers ping (Ctrl+P) - - - 355, 22 - - - Test servers with tcping (Ctrl+O) - - - 355, 22 - - - Test servers real delay (Ctrl+R) - - - 355, 22 - - - Test servers download speed (Ctrl+T) - - - 355, 22 - - - Test current service status - - - 355, 22 - - - Clear all service statistics - - - 352, 6 - - - 355, 22 + + Horizontal Export selected server for client configuration - - 355, 22 + + tsbRoutingSetting + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 227, 22 Export selected server for server configuration - - 355, 22 + + splitContainer1 - - Export share URLs to clipboard (Ctrl+C) + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 355, 22 + + 128, 53 - - Export subscription (base64) share to clipboard + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + Test servers real delay (Ctrl+R) + + + menuTcpingServer + + + ImageAboveText + + + toolSslRoutingRule 356, 622 - - cmsLv + + tsbGlobalHotkeySetting + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN + + + 355, 22 + + + toolStripSeparator1 + + + 355, 22 + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 203, 22 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMsgBoxCopy + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbClose + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuPingServer + + + 200, 6 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbLanguageDef + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAATdJREFUWEftloENAiEMRW8ER3AEN9ANdARHcAPdwBF0A91AN9INtC+5JvUCJwWM + mvCTFw3QUiiU65qa/lUTYT6Ato9rJZyERwT6GFNdU+EihCYNwVhsqmgm3AR1fheOAitd9PCfNvp0HDbY + FolV2MmZZCzX9J0FG0TRTlwFdbahIVE7Qe1IR5bYVnXCyr2yO5F1MNUBec25YtjomcCXSxhr9DmrV2Gr + flyL4GSrYcm9tmnEZ7JsAC7DgWr5ydbXA8hOAcVjG8FTD6ocQgvXKrW8MqFWUfc1DAXgmRwVFaJQAHsh + VbYUU87diqWA934sl/TZ7wV2Lesx0gBwsO5/1Sl5PQhLQb+G+E+bfTm9KXsRAVgHrMK+jO9gbNEzzMSh + 6DlM9nANoa+kdCeLXLNLFtc9b2r6EXXdE4e4mdByNuG1AAAAAElFTkSuQmCC + + + + System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Export subscription (base64) share to clipboard + + + 3, 17 + + + 355, 22 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fill + + + 6, 56 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 250, 21 + + + menuAddCustomServer + + + menuMoveDown + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Import bulk URL from clipboard + + + gbMsgTitle + + + Move to bottom (B) + + + Move to top (T) + + + 6, 12 + + + 48, 53 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Copy All + + + System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + Fill + + + 0 + + + 686, 280 + + + toolStripSeparator4 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 195, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + scMain.Panel2 + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddServers2 + + + Fill + + + tsbServer + + + Add [VMess] server + + + $this + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + tsbAbout + + + 300, 21 + + + toolStripSeparator5 + + + 182, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + True + + + 352, 6 + + + tsbPromotion + + + 256, 280 + + + 355, 22 + + + 4, 4, 4, 4 + + + Test servers with tcping (Ctrl+O) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 56 + + + 352, 6 + + + groupBox1 + + + 300, 21 + + + 2 + + + 182, 22 + + + Clear all service statistics + + + scMain.Panel2 + + + 195, 22 + + + 3 + + + 187, 22 + + + 6, 56 + + + Test servers download speed (Ctrl+T) + + + ssMain + + + 686 + + + splitContainer1 + + + 265, 221 + + + 243, 22 + + + menuUpdateSubscriptions + + + scMain + + + Check for updates + + + tsbCheckUpdateXrayCore + + + Copy (Ctrl+C) + + + toolSslServerSpeed + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 4 + + + 182, 22 + + + GlobalHotkeySetting + + + scMain + + + 203, 22 + + + 2 + + + 952, 56 + + + tsbReload + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + Help + + + menuMsgBoxSelectAll + + + menuSelectAll + + + splitContainer1.Panel1 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Vertical + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Scan QR code on the screen (Ctrl+S) + + + ImageAboveText + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 187, 22 + + + menuAddServers + + + menuServers2 + + + 50 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbLanguageZhHans + + + menuRemoveDuplicateServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + BottomCenter + + + menuExport2ShareUrl + + + menuMsgBoxClear + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + v2rayN (this software) + + + tsbOptionSetting + + + Magenta + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + splitContainer1.Panel1 + + + 0, 0 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Server + + + v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + menuAddShadowsocksServer + + + txtMsgBox + + + toolSslBlank4 + + + menuAddTrojanServer + + + 355, 22 + + + 80, 21 + + + v2rayN + + + Language-[English] + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 264, 22 + + + menuScanScreen2 + + + 0 + + + Fill + + + Routing + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add [Trojan] server + + + 195, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ImageAboveText System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + Set message filters + + + 952, 593 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 352, 6 + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + V2Ray Website + + Fill + + No + + + 1 + + + cmsMsgBox + + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + OptionSetting + + + menuMoveTop + + + tsbCheckUpdateCore + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w @@ -331,1340 +913,770 @@ ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - 0, 0 + + 952, 300 - - 686, 280 + + tsbCheckUpdateGeoIP - - - 0 + + menuScanScreen - - lvServers - - - v2rayN.Base.ListViewFlickerFree, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - scMain.Panel1 - - - 0 - - - scMain.Panel1 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - scMain - - - 0 - - - Fill - - - 0, 0 - - - 4, 4, 4, 4 - - - 256, 280 - - - 2 - - - qrCodeControl - - - v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - - scMain.Panel2 - - - 0 - - - scMain.Panel2 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - scMain - - - 1 - - - 100 - - - 946, 280 - - - 686 - - - 0 - - - scMain - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox1 - - - 0 - - - Magenta - - - 64, 53 - - - Servers - - + ImageAboveText - - Fill + + cmsLv - - 0, 66 + + toolStripSeparator12 - - Horizontal + + 6, 56 Fill - - 0, 0 + + toolSslBlank1 - - 952, 300 + + tsbSubUpdate - + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsMain + + + 5 + + + SPEED Disabled + + + 355, 22 + + + Promotion + + + menuSysAgentMode + + + menuKeepNothing + + + 952, 527 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ImageAboveText + + + 227, 22 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + cmsMain + + + 264, 22 + + + menuServers + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + toolStripSeparator13 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuMsgBoxFilter + + + 203, 22 + + + RoutingSetting + + + Standard + + + Update GeoIP + + + 3, 194 + + + True + + + 355, 22 + + + 195, 22 + + + Subscriptions + + + 952, 10 + + + Updates + + + 264, 22 + + + toolStripSeparator14 + + 0 + + toolStripSeparator8 + + + menuMsgBoxCopyAll + + + menuExport2ServerConfig + + + 89, 53 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + BottomCenter + + + Test servers ping (Ctrl+P) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + gbMsgTitle + + + 264, 22 + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Top + + + menuSetDefaultServer + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 203, 22 + + + Settings + + + menuCopyServer + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System proxy + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 355, 22 + + + groupBox1 + + + MainForm + + + toolStripSeparator9 + + + menuExit + + + 227, 22 + + + tsbSubUpdateViaProxy + + + False + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Servers list - - groupBox1 + + lvServers - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuRealPingServer - - splitContainer1.Panel1 + + Magenta - + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuGlobal + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbV2rayWebsite + + + Magenta + + + 4, 4, 4, 4 + + + Magenta + + + 355, 22 + + + v2rayN Project + + + Servers + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Select All (Ctrl+A) + + + menuRoutings + + + 3 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuSpeedServer + + + 355, 22 + + + menuRemoveServer + + + tsbBackupGuiNConfig + + + tsbTestMe + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - - splitContainer1.Panel1 + + 946, 177 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddVmessServer + + + scMain + + + Down (D) + + + 0 + + + 352, 6 + + + Magenta + + + 243, 22 + + + Remove selected servers (Delete) + + + 952, 223 + + + 355, 22 + + + tsbSub + + + Magenta + + + toolStripSeparator11 + + + ImageAboveText + + + Clone selected server + + + 0, 0 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 355, 22 System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tsbCheckUpdate + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 227, 22 + + + Export share URLs to clipboard (Ctrl+C) + + + 243, 22 + + + 355, 22 + + + Server + + + v2rayN.Forms.QRCodeControl, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + + + 300 + + + System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Updates via proxy + + + 0 + + + $this + + + 0, 0 + + + qrCodeControl + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Update subscriptions via proxy + + + Clear system proxy + + + 355, 22 + + + 0 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ImageAboveText + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 21 + + + 203, 22 + + + 184, 6 + + + splitContainer1.Panel2 + + + 0, 0 + + + scMain.Panel1 + + + Up (U) + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + notifyMain + + + Set system proxy + + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MiddleRight + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Select All (Ctrl+A) + + + 0, 66 + + + 100 + + + System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + menuAddSocksServer + + + scMain.Panel1 + + + 微软雅黑, 8pt + + + 64, 53 + + + 228, 136 + + + 946, 26 + + + 5 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 355, 22 + + + Set as active server (Enter) + + + menuAddVlessServer + + + 946, 280 + + + 6, 56 + + + Add [Shadowsocks] server + + + 261, 6 + + + 微软雅黑, 8pt + + splitContainer1 0 - - 603, 17 - - - 227, 22 + + 261, 6 - - Select All (Ctrl+A) + + Test current service status - - 227, 22 + + NoControl - - Copy (Ctrl+C) + + toolStripSeparator10 - - 227, 22 + + menuMoveBottom - - Copy All + + 355, 22 - - 227, 22 + + 1 - - Clear All - - - 227, 22 - - - Add Routing Rule (Ctrl+V) - - - 227, 22 - - - Set message filters - - - 228, 136 - - - cmsMsgBox - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - 3, 17 - - - 0 - - - True - - - Vertical - - - 946, 177 - - - 3 - - - txtMsgBox - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbMsgTitle - - - 0 - - - 228, 18 - - - 80, 21 + + Magenta InboundInfo - - 微软雅黑, 8pt + + 355, 22 - - 300, 21 - - - 0, 21 - - - 300, 21 - - - False - - - 微软雅黑, 8pt - - - No - - - 250, 21 - - - SPEED Disabled - - - MiddleRight - - - 0, 21 - - - 3, 194 - - - 946, 26 - - - 0 - - - statusStrip1 - - - ssMain - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - gbMsgTitle - - - 1 - - - Fill - - - 0, 0 - - - 952, 223 - - - 3 - - - Informations - - - gbMsgTitle - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - splitContainer1.Panel2 - - - 0 - - - splitContainer1.Panel2 - - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - splitContainer1 - - - 1 - - - 952, 527 - - - 300 - - - 5 - - - splitContainer1 - - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - 17, 17 - - - 137, 17 - - - NoControl - - - 243, 22 - - - Clear system proxy - - - 243, 22 - - - Set system proxy - - - 243, 22 - - - Do not change system proxy - - - 264, 22 - - - Http proxy - - - 264, 22 - - - Routing - - - 264, 22 - - - Server - - - Standard - - - 50 - - - 200, 25 - - - Server - - - 261, 6 - - - 264, 22 - - - Import bulk URL from clipboard - - - 264, 22 - - - Scan QR code on the screen - - - 264, 22 - - - Update subscriptions - - - 264, 22 - - - Update subscriptions via proxy - - - 261, 6 - - - 264, 22 - - - Exit - - - 265, 243 - - - cmsMain - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - v2rayN - - - True - - - 498, 17 - - - Top - - - 0, 56 - - - 952, 10 - - - 2 - - - panel1 - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - 409, 17 - - - 6, 56 - - - 182, 22 - - - Settings - - - 182, 22 - - - Updates - - - 182, 22 - - - Updates via proxy - - - Magenta - - - 99, 53 - - - Subscriptions - - - ImageAboveText - - - Magenta - - - 45, 53 - - - Share - - - BottomCenter - - - ImageAboveText - - - 6, 56 - - - 176, 22 - - - OptionSetting - - - 176, 22 - - - RoutingSetting - - - 173, 6 - - - 176, 22 - - - BackupGuiConfig - - - Magenta - - - 67, 53 - - - Settings - - - ImageAboveText - - - 6, 56 - - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE3SURBVFhH7ZaBDQIhDEVvBEdwBDfQDXQER3AD3cARdAPd - QDfSDbQvuSb1AicFjJrwkxcN0FIolOuamv5VE2E+gLaPayWchEcE+hhTXVPhIoQmDcFYbKpoJtwEdX4X - jgIrXfTwnzb6dBw22BaJVdjJmWQs1/SdBRtE0U5cBXW2oSFRO0HtSEeW2FZ1wsq9sjuRdTDVAXnNuWLY - 6JnAl0sYa/Q5q1dhq35ci+Bkq2HJvbZpxGeybAAuw4Fq+cnW1wPITgHFYxvBUw+qHEIL1yq1vDKhVlH3 - NQwF4JkcFRWiUAB7IVW2FFPO3YqlgPd+LJf02e8Fdi3rMdIAcLDuf9UpeT0IS0G/hvhPm305vSl7EQFY - B6zCvozvYGzRM8zEoeg5TPZwDaGvpHQni1yzSxbXPW9q+hF13ROHuJnQcjbhtQAAAABJRU5ErkJggg== - - - - BottomCenter - - - Magenta - - - 97, 53 - - - Restart service - - - ImageAboveText - - - 6, 56 - - - 203, 22 - - - v2rayN (this software) - - - 203, 22 - - - Update v2flyCore - - - 203, 22 - - - Update XrayCore - - - 200, 6 - - - 203, 22 - - - Update GeoSite - - - 203, 22 - - - Update GeoIP - - - Magenta - - - 128, 53 - - - Check for updates - - - ImageAboveText - - - 6, 56 - - - 187, 22 - - - v2rayN Project - - - 187, 22 - - - V2Ray Website - - - 184, 6 + + menuExport2ClientConfig 187, 22 - - Language-[English] + + Informations - - 187, 22 + + 0 - - 语言-[中文简体] + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Magenta - - - 48, 53 - - - Help - - - ImageAboveText - - - Magenta - - - 89, 53 - - - Promotion - - - ImageAboveText + + 264, 22 6, 56 - - - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAySURBVFhH7c6xDQAgCEVBRnVTHU2ZABuMxV3yOvJDAAA/ - GqfZVG6X8mg1dfUAAPBQxAZd0SJruVXHWwAAAABJRU5ErkJggg== - + + splitContainer1.Panel2 - + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Magenta 52, 53 - - Close - - - ImageAboveText - - - 0, 0 - - - 952, 56 - - - 1 - - - tsMain - - - System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - True - - - 88 - - - 6, 12 - - - 952, 593 - - - 4, 4, 4, 4 - - - v2rayN - - - menuAddVmessServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddVlessServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddShadowsocksServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddSocksServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddTrojanServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddCustomServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddServers - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuScanScreen + + System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripSeparator1 + + Exit - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRemoveServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRemoveDuplicateServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuCopyServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSetDefaultServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator3 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveTop - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveUp - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveDown - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMoveBottom - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSelectAll - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator9 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuPingServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuTcpingServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRealPingServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSpeedServer - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbTestMe - - + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 menuClearServerStatistics - + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripSeparator6 + + Scan QR code on the screen - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0, 56 - - menuExport2ClientConfig + + Close - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 264, 22 - - menuExport2ServerConfig + + 0, 21 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - - menuExport2ShareUrl + + Import bulk URL from clipboard (Ctrl+V) - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this - - menuExport2SubContent - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbServer - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxSelectAll - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxCopy - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxCopyAll - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxClear - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxAddRoutingRule - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuMsgBoxFilter - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslInboundInfo - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslBlank1 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslRoutingRule - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslBlank2 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslServerSpeed - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolSslBlank4 - - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - notifyMain - - - System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuSysAgentMode - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuKeepClear - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuGlobal - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuKeepNothing - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuRoutings - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuServers - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuServers2 - - - System.Windows.Forms.ToolStripComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator13 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuAddServers2 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuScanScreen2 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuUpdateSubscriptions - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - menuUpdateSubViaProxy - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Update XrayCore toolStripSeparator2 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Add a custom configuration server - - menuExit + + 192, 6 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 bgwScan - - System.ComponentModel.BackgroundWorker, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator4 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbSub - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbSubSetting - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbSubUpdate - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbSubUpdateViaProxy + + System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tsbQRCodeSwitch + + statusStrip1 - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator8 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbSetting - - + System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tsbOptionSetting + + 0, 0 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - tsbRoutingSetting + + 3, 17 - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Clear All - - toolStripSeparator14 + + toolStripSeparator3 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + BackupGuiConfig - - tsbBackupGuiNConfig + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAADJJREFUWEftzrENACAIRUFGdVMdTZkAG4zFXfI68kMAAD8ap9lUbpfyaDV19QAA + 8FDEBl3RImu5VcdbAAAAAElFTkSuQmCC + - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 355, 22 - - toolStripSeparator5 + + 355, 22 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 264, 22 - - tsbReload + + ImageAboveText - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolStripSeparator7 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdate - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateN - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateCore - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateXrayCore - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + menuKeepClear toolStripSeparator15 - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateGeoSite - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbCheckUpdateGeoIP - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator10 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbHelp - - - System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbAbout - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbV2rayWebsite - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator12 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbLanguageDef - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbLanguageZhHans - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbPromotion - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - toolStripSeparator11 - - - System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tsbClose - - - System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MainForm - - - v2rayN.Forms.BaseForm, v2rayN, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - + + 228, 18 + + + True + + + 327, 17 + + + 88 + + + 137, 17 + + + 498, 17 + + + 17, 17 + + + 409, 17 + + + 603, 17 + \ No newline at end of file diff --git a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx index 3a4674fe..c68b28d2 100644 --- a/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx +++ b/v2rayN/v2rayN/Forms/MainForm.zh-Hans.resx @@ -118,6 +118,26 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 301, 622 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 + ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu + PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA + BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 + bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp + bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz + dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA + CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp + bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 + bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 + ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 + ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== + + 300, 22 @@ -298,29 +318,15 @@ 服务器 - - 301, 622 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkMAwAAAFFTeXN0 - ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu - PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACFTeXN0ZW0uV2luZG93cy5Gb3Jtcy5MaXN0Vmlld0l0ZW0HAAAA - BFRleHQKSW1hZ2VJbmRleAlCYWNrQ29sb3IHQ2hlY2tlZARGb250CUZvcmVDb2xvchdVc2VJdGVtU3R5 - bGVGb3JTdWJJdGVtcwEABAAEBAAIFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAETU3lzdGVtLkRyYXdp - bmcuRm9udAMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAAQIAAAAGBAAAAAD/////Bfv///8UU3lz - dGVtLkRyYXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAA - CgAAAAAAAAAAGAABAAAJBgAAAAH5////+////woAAAAAAAAAABoAAQABBQYAAAATU3lzdGVtLkRyYXdp - bmcuRm9udAQAAAAETmFtZQRTaXplBVN0eWxlBFVuaXQBAAQECxhTeXN0ZW0uRHJhd2luZy5Gb250U3R5 - bGUDAAAAG1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzVW5pdAMAAAADAAAABggAAAAG5a6L5L2TAAAQQQX3 - ////GFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQEAAAAHdmFsdWVfXwAIAwAAAAAAAAAF9v///xtTeXN0 - ZW0uRHJhd2luZy5HcmFwaGljc1VuaXQBAAAAB3ZhbHVlX18ACAMAAAADAAAACw== - - 服务器列表 + + 信息 + + + 222, 136 + 221, 22 @@ -339,6 +345,12 @@ 复制所有 + + 221, 22 + + + 清除所有 + 221, 22 @@ -351,14 +363,17 @@ 设置信息过滤器 - - 222, 114 - 网速显示未启用 - - 信息 + + 261, 221 + + + 260, 22 + + + 系统代理 172, 22 @@ -378,12 +393,6 @@ 不改变系统代理 - - 260, 22 - - - 系统代理 - 260, 22 @@ -435,8 +444,11 @@ 退出 - - 261, 227 + + 61, 53 + + + 订阅 180, 22 @@ -456,18 +468,18 @@ 更新订阅(通过代理) - - 61, 53 - - - 订阅 - 52, 53 分享 + + 61, 53 + + + 设置 + 189, 22 @@ -480,6 +492,12 @@ 路由设置 + + 189, 22 + + + 全局热键设置 + 186, 6 @@ -489,12 +507,6 @@ 备份v2rayN配置文件 - - 61, 53 - - - 设置 - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -512,6 +524,12 @@ 重启服务 + + 85, 53 + + + 检查更新 + 168, 22 @@ -539,11 +557,11 @@ 168, 22 - - 85, 53 + + 69, 53 - - 检查更新 + + 帮助 v2rayN 项目 @@ -551,12 +569,6 @@ V2Ray 官网 - - 69, 53 - - - 帮助 - 68, 53 diff --git a/v2rayN/v2rayN/Handler/MainFormHandler.cs b/v2rayN/v2rayN/Handler/MainFormHandler.cs index 499d1ec8..1895fcbb 100644 --- a/v2rayN/v2rayN/Handler/MainFormHandler.cs +++ b/v2rayN/v2rayN/Handler/MainFormHandler.cs @@ -1,10 +1,11 @@ -using System; +using NHotkey; +using NHotkey.WindowsForms; +using System; using System.Drawing; using System.IO; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; -using v2rayN.Base; using v2rayN.Mode; namespace v2rayN.Handler @@ -12,7 +13,7 @@ namespace v2rayN.Handler public sealed class MainFormHandler { private static readonly Lazy instance = new Lazy(() => new MainFormHandler()); - Action _updateUI; + //Action _updateUI; //private DownloadHandle downloadHandle2; //private Config _config; @@ -218,11 +219,10 @@ namespace v2rayN.Handler public void UpdateTask(Config config, Action update) { - _updateUI = update; - Task.Run(() => UpdateTaskRun(config)); + Task.Run(() => UpdateTaskRun(config, update)); } - private void UpdateTaskRun(Config config) + private void UpdateTaskRun(Config config, Action update) { var updateHandle = new UpdateHandle(); while (true) @@ -236,7 +236,7 @@ namespace v2rayN.Handler updateHandle.UpdateGeoFile("geosite", config, (bool success, string msg) => { - _updateUI(false, msg); + update(false, msg); if (success) Utils.SaveLog("geosite" + msg); }); @@ -245,7 +245,7 @@ namespace v2rayN.Handler updateHandle.UpdateGeoFile("geoip", config, (bool success, string msg) => { - _updateUI(false, msg); + update(false, msg); if (success) Utils.SaveLog("geoip" + msg); }); @@ -253,5 +253,49 @@ namespace v2rayN.Handler Thread.Sleep(1000 * 3600 * config.autoUpdateInterval); } } + + public void RegisterGlobalHotkey(Config config, EventHandler handler, Action update) + { + if (config.globalHotkeys == null) + { + return; + } + + foreach (var item in config.globalHotkeys) + { + if (item.KeyCode == null) + { + continue; + } + + Keys keys = (Keys)item.KeyCode; + if (item.Control) + { + keys |= Keys.Control; + } + if (item.Alt) + { + keys |= Keys.Alt; + } + if (item.Shift) + { + keys |= Keys.Shift; + } + + try + { + HotkeyManager.Current.AddOrReplace(((int)item.eGlobalHotkey).ToString(), keys, handler); + var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeySuccessfully"), $"{item.eGlobalHotkey.ToString()} = {keys}"); + update(false, msg); + } + catch (Exception ex) + { + var msg = string.Format(UIRes.I18N("RegisterGlobalHotkeyFailed"), $"{item.eGlobalHotkey.ToString()} = {keys}", ex.Message); + update(false, msg); + Utils.SaveLog(msg); + } + } + } + } } \ No newline at end of file diff --git a/v2rayN/v2rayN/Mode/Config.cs b/v2rayN/v2rayN/Mode/Config.cs index 6293fcc7..f940cf84 100644 --- a/v2rayN/v2rayN/Mode/Config.cs +++ b/v2rayN/v2rayN/Mode/Config.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Windows.Forms; using v2rayN.Base; @@ -147,7 +148,7 @@ namespace v2rayN.Mode { get; set; } - + #endregion #region other entities @@ -200,6 +201,11 @@ namespace v2rayN.Mode get; set; } + public List globalHotkeys + { + get; set; + } + #endregion #region function @@ -404,7 +410,7 @@ namespace v2rayN.Mode } return vmess.FindIndex(it => it.indexId == indexId); } - + #endregion } @@ -822,4 +828,19 @@ namespace v2rayN.Mode get; set; } } + + [Serializable] + public class KeyEventItem + { + public EGlobalHotkey eGlobalHotkey { get; set; } + + public bool Alt { get; set; } + + public bool Control { get; set; } + + public bool Shift { get; set; } + + public Keys? KeyCode { get; set; } + + } } diff --git a/v2rayN/v2rayN/Mode/EGlobalHotkey.cs b/v2rayN/v2rayN/Mode/EGlobalHotkey.cs new file mode 100644 index 00000000..de7cd336 --- /dev/null +++ b/v2rayN/v2rayN/Mode/EGlobalHotkey.cs @@ -0,0 +1,11 @@ + +namespace v2rayN.Mode +{ + public enum EGlobalHotkey + { + ShowForm = 0, + SystemProxyClear = 1, + SystemProxySet = 2, + SystemProxyUnchanged = 3, + } +} diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index fa3511a5..53145d83 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -771,6 +771,24 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Global hotkey {0} registered failed, reason {1} 的本地化字符串。 + /// + internal static string RegisterGlobalHotkeyFailed { + get { + return ResourceManager.GetString("RegisterGlobalHotkeyFailed", resourceCulture); + } + } + + /// + /// 查找类似 Global hotkey {0} registered successfully 的本地化字符串。 + /// + internal static string RegisterGlobalHotkeySuccessfully { + get { + return ResourceManager.GetString("RegisterGlobalHotkeySuccessfully", resourceCulture); + } + } + /// /// 查找类似 Servers deduplication completed. Old: {0}, New: {1}. 的本地化字符串。 /// diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index 638172c8..4c3ca750 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -439,4 +439,10 @@ *Kcp seed + + Global hotkey {0} registered failed, reason {1} + + + Global hotkey {0} registered successfully + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index b8466714..db8c9970 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -439,4 +439,10 @@ *Kcp seed + + 注册全局热键 {0} 失败,原因 {1} + + + 注册全局热键 {0} 成功 + \ No newline at end of file diff --git a/v2rayN/v2rayN/v2rayN.csproj b/v2rayN/v2rayN/v2rayN.csproj index 202d3e56..70b76468 100644 --- a/v2rayN/v2rayN/v2rayN.csproj +++ b/v2rayN/v2rayN/v2rayN.csproj @@ -137,6 +137,12 @@ RoutingRuleSettingDetailsForm.cs + + Form + + + GlobalHotkeySettingForm.cs + Form @@ -204,6 +210,7 @@ Component + @@ -308,6 +315,9 @@ BaseServerForm.cs Designer + + GlobalHotkeySettingForm.cs + MainForm.cs Designer @@ -337,6 +347,10 @@ RoutingRuleSettingDetailsForm.cs Designer + + GlobalHotkeySettingForm.cs + Designer + RoutingRuleSettingForm.cs Designer @@ -490,10 +504,10 @@ 3.19.4 - 2.43.0 + 2.44.0 - 2.43.0 + 2.44.0 runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -503,6 +517,12 @@ 13.0.1 + + 2.1.0 + + + 2.1.0 + 0.16.8