Compare commits

...

9 Commits
5.27 ... 5.28

Author SHA1 Message Date
2dust
069d47f01b Update AssemblyInfo.cs 2022-07-02 20:03:13 +08:00
2dust
3079f1c651 Improve subscription update 2022-07-02 20:02:20 +08:00
2dust
f5ecda9255 add exception log 2022-07-02 11:11:23 +08:00
2dust
d83ae315ed refactor traffic statistics 2022-07-02 10:54:27 +08:00
2dust
2b40e87eb9 read handle from reg and show the window 2022-07-01 20:50:47 +08:00
2dust
f7e3eb180b bug fix 2022-07-01 19:57:22 +08:00
2dust
209786cdb6 Vmess 2 VMess 2022-06-30 11:19:55 +08:00
2dust
d418f79d8f fix clash config 2022-06-28 14:44:46 +08:00
2dust
eddd38ff03 Update UpdateHandle.cs 2022-06-26 20:18:43 +08:00
24 changed files with 2434 additions and 2370 deletions

View File

@@ -45,16 +45,9 @@ namespace v2rayN.Base
{
return null;
}
try
{
HttpResponseMessage response = await httpClient.GetAsync(url);
HttpResponseMessage response = await httpClient.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
catch
{
}
return null;
return await response.Content.ReadAsStringAsync();
}
public async Task<string> GetAsync(HttpClient client, string url, CancellationToken token)
{
@@ -62,16 +55,12 @@ namespace v2rayN.Base
{
return null;
}
try
HttpResponseMessage response = await client.GetAsync(url, token);
if (!response.IsSuccessStatusCode)
{
HttpResponseMessage response = await client.GetAsync(url, token);
return await response.Content.ReadAsStringAsync();
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
}
catch (Exception ex)
{
Utils.SaveLog("GetAsync", ex);
}
return null;
return await response.Content.ReadAsStringAsync();
}
public async Task PutAsync(string url, Dictionary<string, string> headers)

View File

@@ -23,7 +23,7 @@ namespace v2rayN.Forms
switch (eConfigType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
panVmess.Dock = DockStyle.Fill;
panVmess.Visible = true;
@@ -84,7 +84,7 @@ namespace v2rayN.Forms
switch (eConfigType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
txtId.Text = vmessItem.id;
txtAlterId.Text = vmessItem.alterId.ToString();
cmbSecurity.Text = vmessItem.security;
@@ -124,7 +124,7 @@ namespace v2rayN.Forms
switch (eConfigType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
txtId.Text = "";
txtAlterId.Text = "0";
cmbSecurity.Text = Global.DefaultSecurity;
@@ -164,7 +164,7 @@ namespace v2rayN.Forms
switch (eConfigType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
id = txtId.Text;
alterId = txtAlterId.Text;
security = cmbSecurity.Text;
@@ -241,7 +241,7 @@ namespace v2rayN.Forms
int ret = -1;
switch (eConfigType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
ret = ConfigHandler.AddServer(ref config, vmessItem);
break;
case EConfigType.Shadowsocks:

View File

@@ -666,7 +666,7 @@ namespace v2rayN.Forms
private void menuAddVmessServer_Click(object sender, EventArgs e)
{
ShowServerForm(EConfigType.Vmess, -1);
ShowServerForm(EConfigType.VMess, -1);
}
private void menuAddVlessServer_Click(object sender, EventArgs e)
@@ -799,12 +799,20 @@ namespace v2rayN.Forms
private void menuExport2ClientConfig_Click(object sender, EventArgs e)
{
int index = GetLvSelectedIndex();
if (index < 0)
{
return;
}
MainFormHandler.Instance.Export2ClientConfig(lstVmess[index], config);
}
private void menuExport2ServerConfig_Click(object sender, EventArgs e)
{
int index = GetLvSelectedIndex();
if (index < 0)
{
return;
}
MainFormHandler.Instance.Export2ServerConfig(lstVmess[index], config);
}
@@ -1130,6 +1138,12 @@ namespace v2rayN.Forms
ShowInTaskbar = false;
SetVisibleCore(false);
//write Handle to reg
if (IsHandleCreated)
{
Utils.RegWriteValue(Global.MyRegPath, Utils.WindowHwndKey, Convert.ToString((long)Handle));
}
}
#endregion
@@ -1175,8 +1189,8 @@ namespace v2rayN.Forms
{
try
{
up /= (ulong)(config.statisticsFreshRate / 1000f);
down /= (ulong)(config.statisticsFreshRate / 1000f);
up /= (ulong)(config.statisticsFreshRate);
down /= (ulong)(config.statisticsFreshRate);
mainMsgControl.SetToolSslInfo("speed", string.Format("{0}/s↑ | {1}/s↓", Utils.HumanFy(up), Utils.HumanFy(down)));
foreach (var it in statistics)
@@ -1244,7 +1258,6 @@ namespace v2rayN.Forms
int index = GetLvSelectedIndex();
if (index < 0)
{
UI.Show(ResUI.PleaseSelectServer);
return;
}
if (ConfigHandler.MoveServer(ref config, ref lstVmess, index, eMove) == 0)

View File

@@ -68,6 +68,7 @@
this.txtKcpmtu = new System.Windows.Forms.TextBox();
this.label6 = new System.Windows.Forms.Label();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.numStatisticsFreshRate = new System.Windows.Forms.NumericUpDown();
this.txttrayMenuServersLimit = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.txtautoUpdateSubInterval = new System.Windows.Forms.TextBox();
@@ -79,7 +80,6 @@
this.label15 = new System.Windows.Forms.Label();
this.chkIgnoreGeoUpdateCore = new System.Windows.Forms.CheckBox();
this.chkKeepOlderDedupl = new System.Windows.Forms.CheckBox();
this.cbFreshrate = new System.Windows.Forms.ComboBox();
this.lbFreshrate = new System.Windows.Forms.Label();
this.chkEnableStatistics = new System.Windows.Forms.CheckBox();
this.chkAutoRun = new System.Windows.Forms.CheckBox();
@@ -112,6 +112,7 @@
this.tabPage2.SuspendLayout();
this.tabPage6.SuspendLayout();
this.tabPage7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).BeginInit();
this.tabPageCoreType.SuspendLayout();
this.tabPage3.SuspendLayout();
this.groupBox2.SuspendLayout();
@@ -120,33 +121,34 @@
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
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);
//
// tabControl1
//
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Controls.Add(this.tabPage1);
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage6);
this.tabControl1.Controls.Add(this.tabPage7);
this.tabControl1.Controls.Add(this.tabPageCoreType);
this.tabControl1.Controls.Add(this.tabPage3);
resources.ApplyResources(this.tabControl1, "tabControl1");
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
//
// tabPage1
//
this.tabPage1.Controls.Add(this.groupBox1);
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Controls.Add(this.groupBox1);
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.label16);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.txtpass);
@@ -163,7 +165,6 @@
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.txtlocalPort);
this.groupBox1.Controls.Add(this.label2);
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
@@ -213,8 +214,8 @@
//
// cmbprotocol
//
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
resources.ApplyResources(this.cmbprotocol, "cmbprotocol");
this.cmbprotocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbprotocol.FormattingEnabled = true;
this.cmbprotocol.Items.AddRange(new object[] {
resources.GetString("cmbprotocol.Items"),
@@ -240,6 +241,7 @@
//
// cmbloglevel
//
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbloglevel.FormattingEnabled = true;
this.cmbloglevel.Items.AddRange(new object[] {
@@ -248,7 +250,6 @@
resources.GetString("cmbloglevel.Items2"),
resources.GetString("cmbloglevel.Items3"),
resources.GetString("cmbloglevel.Items4")});
resources.ApplyResources(this.cmbloglevel, "cmbloglevel");
this.cmbloglevel.Name = "cmbloglevel";
//
// label5
@@ -268,10 +269,10 @@
//
// tabPage2
//
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.Controls.Add(this.linkDnsObjectDoc);
this.tabPage2.Controls.Add(this.txtremoteDNS);
this.tabPage2.Controls.Add(this.label14);
resources.ApplyResources(this.tabPage2, "tabPage2");
this.tabPage2.Name = "tabPage2";
this.tabPage2.UseVisualStyleBackColor = true;
//
@@ -294,6 +295,7 @@
//
// tabPage6
//
resources.ApplyResources(this.tabPage6, "tabPage6");
this.tabPage6.Controls.Add(this.chkKcpcongestion);
this.tabPage6.Controls.Add(this.txtKcpwriteBufferSize);
this.tabPage6.Controls.Add(this.label10);
@@ -307,7 +309,6 @@
this.tabPage6.Controls.Add(this.label7);
this.tabPage6.Controls.Add(this.txtKcpmtu);
this.tabPage6.Controls.Add(this.label6);
resources.ApplyResources(this.tabPage6, "tabPage6");
this.tabPage6.Name = "tabPage6";
this.tabPage6.UseVisualStyleBackColor = true;
//
@@ -379,6 +380,8 @@
//
// tabPage7
//
resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Controls.Add(this.numStatisticsFreshRate);
this.tabPage7.Controls.Add(this.txttrayMenuServersLimit);
this.tabPage7.Controls.Add(this.label17);
this.tabPage7.Controls.Add(this.txtautoUpdateSubInterval);
@@ -390,14 +393,17 @@
this.tabPage7.Controls.Add(this.label15);
this.tabPage7.Controls.Add(this.chkIgnoreGeoUpdateCore);
this.tabPage7.Controls.Add(this.chkKeepOlderDedupl);
this.tabPage7.Controls.Add(this.cbFreshrate);
this.tabPage7.Controls.Add(this.lbFreshrate);
this.tabPage7.Controls.Add(this.chkEnableStatistics);
this.tabPage7.Controls.Add(this.chkAutoRun);
resources.ApplyResources(this.tabPage7, "tabPage7");
this.tabPage7.Name = "tabPage7";
this.tabPage7.UseVisualStyleBackColor = true;
//
// numStatisticsFreshRate
//
resources.ApplyResources(this.numStatisticsFreshRate, "numStatisticsFreshRate");
this.numStatisticsFreshRate.Name = "numStatisticsFreshRate";
//
// txttrayMenuServersLimit
//
resources.ApplyResources(this.txttrayMenuServersLimit, "txttrayMenuServersLimit");
@@ -459,13 +465,6 @@
this.chkKeepOlderDedupl.Name = "chkKeepOlderDedupl";
this.chkKeepOlderDedupl.UseVisualStyleBackColor = true;
//
// cbFreshrate
//
this.cbFreshrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbFreshrate.FormattingEnabled = true;
resources.ApplyResources(this.cbFreshrate, "cbFreshrate");
this.cbFreshrate.Name = "cbFreshrate";
//
// lbFreshrate
//
resources.ApplyResources(this.lbFreshrate, "lbFreshrate");
@@ -485,6 +484,7 @@
//
// tabPageCoreType
//
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
this.tabPageCoreType.Controls.Add(this.cmbCoreType6);
this.tabPageCoreType.Controls.Add(this.labCoreType6);
this.tabPageCoreType.Controls.Add(this.cmbCoreType5);
@@ -497,15 +497,14 @@
this.tabPageCoreType.Controls.Add(this.labCoreType2);
this.tabPageCoreType.Controls.Add(this.cmbCoreType1);
this.tabPageCoreType.Controls.Add(this.labCoreType1);
resources.ApplyResources(this.tabPageCoreType, "tabPageCoreType");
this.tabPageCoreType.Name = "tabPageCoreType";
this.tabPageCoreType.UseVisualStyleBackColor = true;
//
// cmbCoreType6
//
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
this.cmbCoreType6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType6.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType6, "cmbCoreType6");
this.cmbCoreType6.Name = "cmbCoreType6";
//
// labCoreType6
@@ -515,9 +514,9 @@
//
// cmbCoreType5
//
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
this.cmbCoreType5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType5.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType5, "cmbCoreType5");
this.cmbCoreType5.Name = "cmbCoreType5";
//
// labCoreType5
@@ -527,9 +526,9 @@
//
// cmbCoreType4
//
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
this.cmbCoreType4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType4.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType4, "cmbCoreType4");
this.cmbCoreType4.Name = "cmbCoreType4";
//
// labCoreType4
@@ -539,9 +538,9 @@
//
// cmbCoreType3
//
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
this.cmbCoreType3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType3.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType3, "cmbCoreType3");
this.cmbCoreType3.Name = "cmbCoreType3";
//
// labCoreType3
@@ -551,9 +550,9 @@
//
// cmbCoreType2
//
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
this.cmbCoreType2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType2.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType2, "cmbCoreType2");
this.cmbCoreType2.Name = "cmbCoreType2";
//
// labCoreType2
@@ -563,9 +562,9 @@
//
// cmbCoreType1
//
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
this.cmbCoreType1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCoreType1.FormattingEnabled = true;
resources.ApplyResources(this.cmbCoreType1, "cmbCoreType1");
this.cmbCoreType1.Name = "cmbCoreType1";
//
// labCoreType1
@@ -575,19 +574,19 @@
//
// tabPage3
//
this.tabPage3.Controls.Add(this.groupBox2);
resources.ApplyResources(this.tabPage3, "tabPage3");
this.tabPage3.Controls.Add(this.groupBox2);
this.tabPage3.Name = "tabPage3";
this.tabPage3.UseVisualStyleBackColor = true;
//
// groupBox2
//
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Controls.Add(this.label18);
this.groupBox2.Controls.Add(this.cmbSystemProxyAdvancedProtocol);
this.groupBox2.Controls.Add(this.label13);
this.groupBox2.Controls.Add(this.label12);
this.groupBox2.Controls.Add(this.txtsystemProxyExceptions);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;
//
@@ -598,8 +597,8 @@
//
// cmbSystemProxyAdvancedProtocol
//
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
resources.ApplyResources(this.cmbSystemProxyAdvancedProtocol, "cmbSystemProxyAdvancedProtocol");
this.cmbSystemProxyAdvancedProtocol.FormattingEnabled = true;
this.cmbSystemProxyAdvancedProtocol.Name = "cmbSystemProxyAdvancedProtocol";
//
// label13
@@ -619,9 +618,9 @@
//
// panel2
//
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Controls.Add(this.btnClose);
this.panel2.Controls.Add(this.btnOK);
resources.ApplyResources(this.panel2, "panel2");
this.panel2.Name = "panel2";
//
// btnOK
@@ -657,6 +656,7 @@
this.tabPage6.PerformLayout();
this.tabPage7.ResumeLayout(false);
this.tabPage7.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numStatisticsFreshRate)).EndInit();
this.tabPageCoreType.ResumeLayout(false);
this.tabPageCoreType.PerformLayout();
this.tabPage3.ResumeLayout(false);
@@ -704,7 +704,6 @@
private System.Windows.Forms.CheckBox chkAllowLANConn;
private System.Windows.Forms.CheckBox chksniffingEnabled;
private System.Windows.Forms.CheckBox chkEnableStatistics;
private System.Windows.Forms.ComboBox cbFreshrate;
private System.Windows.Forms.Label lbFreshrate;
private System.Windows.Forms.CheckBox chkKeepOlderDedupl;
private System.Windows.Forms.CheckBox chkdefAllowInsecure;
@@ -746,5 +745,6 @@
private System.Windows.Forms.Label label17;
private System.Windows.Forms.ComboBox cmbSystemProxyAdvancedProtocol;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.NumericUpDown numStatisticsFreshRate;
}
}

View File

@@ -19,7 +19,7 @@ namespace v2rayN.Forms
private void OptionSettingForm_Load(object sender, EventArgs e)
{
cmbSystemProxyAdvancedProtocol.Items.AddRange(Global.IEProxyProtocols.ToArray());
InitBase();
InitKCP();
@@ -88,32 +88,9 @@ namespace v2rayN.Forms
chkAutoRun.Checked = Utils.IsAutoRun();
chkEnableStatistics.Checked = config.enableStatistics;
numStatisticsFreshRate.Value = config.statisticsFreshRate;
chkKeepOlderDedupl.Checked = config.keepOlderDedupl;
ComboItem[] cbSource = new ComboItem[]
{
new ComboItem{ID = (int)Global.StatisticsFreshRate.quick, Text = ResUI.QuickFresh},
new ComboItem{ID = (int)Global.StatisticsFreshRate.medium, Text = ResUI.MediumFresh},
new ComboItem{ID = (int)Global.StatisticsFreshRate.slow, Text = ResUI.SlowFresh},
};
cbFreshrate.DataSource = cbSource;
cbFreshrate.DisplayMember = "Text";
cbFreshrate.ValueMember = "ID";
switch (config.statisticsFreshRate)
{
case (int)Global.StatisticsFreshRate.quick:
cbFreshrate.SelectedItem = cbSource[0];
break;
case (int)Global.StatisticsFreshRate.medium:
cbFreshrate.SelectedItem = cbSource[1];
break;
case (int)Global.StatisticsFreshRate.slow:
cbFreshrate.SelectedItem = cbSource[2];
break;
}
chkIgnoreGeoUpdateCore.Checked = config.ignoreGeoUpdateCore;
chkEnableAutoAdjustMainLvColWidth.Checked = config.uiItem.enableAutoAdjustMainLvColWidth;
chkEnableSecurityProtocolTls13.Checked = config.enableSecurityProtocolTls13;
@@ -309,7 +286,8 @@ namespace v2rayN.Forms
bool lastEnableStatistics = config.enableStatistics;
config.enableStatistics = chkEnableStatistics.Checked;
config.statisticsFreshRate = (int)cbFreshrate.SelectedValue;
config.statisticsFreshRate = Convert.ToInt32(numStatisticsFreshRate.Value);
config.keepOlderDedupl = chkKeepOlderDedupl.Checked;
config.ignoreGeoUpdateCore = chkIgnoreGeoUpdateCore.Checked;

File diff suppressed because it is too large Load Diff

View File

@@ -121,123 +121,6 @@
<value>取消(&amp;C)</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value> Core:基础设置 </value>
</data>
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage2.Text" xml:space="preserve">
<value> Core:DNS设置 </value>
</data>
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage6.Text" xml:space="preserve">
<value> Core:KCP设置 </value>
</data>
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 211</value>
</data>
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
<value>185, 12</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>托盘右键菜单服务器展示数量限制</value>
</data>
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 184</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 12</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>自动更新订阅的间隔(单位小时)</value>
</data>
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
</data>
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 16</value>
</data>
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
<value>自动调整服务器列宽在更新订阅后</value>
</data>
<data name="btnSetLoopback.Text" xml:space="preserve">
<value>解除Windows10 UWP应用回环代理限制</value>
</data>
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 157</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 12</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>自动更新Geo文件的间隔(单位小时)</value>
</data>
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 16</value>
</data>
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
<value>更新Core时忽略Geo文件</value>
</data>
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 16</value>
</data>
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
<value>去重时保留序号较小的项</value>
</data>
<data name="cbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
<value>431, 37</value>
</data>
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
<value>339, 41</value>
</data>
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 12</value>
</data>
<data name="lbFreshrate.Text" xml:space="preserve">
<value>统计刷新频率</value>
</data>
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 16</value>
</data>
<data name="chkEnableStatistics.Text" xml:space="preserve">
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
</data>
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 16</value>
</data>
<data name="chkAutoRun.Text" xml:space="preserve">
<value>开机自动启动(可能会不成功)</value>
</data>
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage7.Text" xml:space="preserve">
<value> v2rayN设置 </value>
</data>
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPageCoreType.Text" xml:space="preserve">
<value> Core类型设置 </value>
</data>
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage3.Text" xml:space="preserve">
<value> 系统代理设置 </value>
</data>
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 469</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>648, 437</value>
</data>
<data name="label16.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 12</value>
</data>
@@ -325,6 +208,15 @@
<data name="label2.Text" xml:space="preserve">
<value>本地监听端口</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>648, 437</value>
</data>
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value> Core:基础设置 </value>
</data>
<data name="linkDnsObjectDoc.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 12</value>
</data>
@@ -337,11 +229,110 @@
<data name="label14.Text" xml:space="preserve">
<value>自定义DNS(可多个,用逗号(,)隔开)</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<data name="tabPage2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>例外</value>
<data name="tabPage2.Text" xml:space="preserve">
<value> Core:DNS设置 </value>
</data>
<data name="tabPage6.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage6.Text" xml:space="preserve">
<value> Core:KCP设置 </value>
</data>
<data name="numStatisticsFreshRate.Location" type="System.Drawing.Point, System.Drawing">
<value>472, 37</value>
</data>
<data name="txttrayMenuServersLimit.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 211</value>
</data>
<data name="label17.Size" type="System.Drawing.Size, System.Drawing">
<value>185, 12</value>
</data>
<data name="label17.Text" xml:space="preserve">
<value>托盘右键菜单服务器展示数量限制</value>
</data>
<data name="txtautoUpdateSubInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 184</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 12</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>自动更新订阅的间隔(单位小时)</value>
</data>
<data name="chkEnableSecurityProtocolTls13.Text" xml:space="preserve">
<value>启用安全协议TLS v1.3 (订阅/检查更新/测速)</value>
</data>
<data name="chkEnableAutoAdjustMainLvColWidth.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 16</value>
</data>
<data name="chkEnableAutoAdjustMainLvColWidth.Text" xml:space="preserve">
<value>自动调整服务器列宽在更新订阅后</value>
</data>
<data name="btnSetLoopback.Text" xml:space="preserve">
<value>解除Windows10 UWP应用回环代理限制</value>
</data>
<data name="txtautoUpdateInterval.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 157</value>
</data>
<data name="label15.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 12</value>
</data>
<data name="label15.Text" xml:space="preserve">
<value>自动更新Geo文件的间隔(单位小时)</value>
</data>
<data name="chkIgnoreGeoUpdateCore.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 16</value>
</data>
<data name="chkIgnoreGeoUpdateCore.Text" xml:space="preserve">
<value>更新Core时忽略Geo文件</value>
</data>
<data name="chkKeepOlderDedupl.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 16</value>
</data>
<data name="chkKeepOlderDedupl.Text" xml:space="preserve">
<value>去重时保留序号较小的项</value>
</data>
<data name="lbFreshrate.Location" type="System.Drawing.Point, System.Drawing">
<value>339, 41</value>
</data>
<data name="lbFreshrate.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 12</value>
</data>
<data name="lbFreshrate.Text" xml:space="preserve">
<value>统计刷新频率(单位秒)</value>
</data>
<data name="chkEnableStatistics.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 16</value>
</data>
<data name="chkEnableStatistics.Text" xml:space="preserve">
<value>启用统计(实时网速显示和使用流量显示,需要重启)</value>
</data>
<data name="chkAutoRun.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 16</value>
</data>
<data name="chkAutoRun.Text" xml:space="preserve">
<value>开机自动启动(可能会不成功)</value>
</data>
<data name="tabPage7.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage7.Text" xml:space="preserve">
<value> v2rayN设置 </value>
</data>
<data name="tabPageCoreType.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPageCoreType.Text" xml:space="preserve">
<value> Core类型设置 </value>
</data>
<data name="label18.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 12</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>高级代理设置, 协议选择(可选)</value>
</data>
<data name="label13.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 12</value>
@@ -355,15 +346,30 @@
<data name="label12.Text" xml:space="preserve">
<value>对于下列字符开头的地址不使用代理服务器:</value>
</data>
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="groupBox2.Text" xml:space="preserve">
<value>例外</value>
</data>
<data name="tabPage3.Size" type="System.Drawing.Size, System.Drawing">
<value>654, 443</value>
</data>
<data name="tabPage3.Text" xml:space="preserve">
<value> 系统代理设置 </value>
</data>
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 469</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>确定(&amp;O)</value>
</data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 479</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 60</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>确定(&amp;O)</value>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>662, 10</value>
</data>
@@ -373,7 +379,4 @@
<data name="$this.Text" xml:space="preserve">
<value>参数设置</value>
</data>
<data name="label18.Text" xml:space="preserve">
<value>高级代理设置, 协议选择(可选)</value>
</data>
</root>

View File

@@ -191,12 +191,6 @@ namespace v2rayN
/// </summary>
public const string CustomIconName = "v2rayN.ico";
public enum StatisticsFreshRate
{
quick = 1000,
medium = 2000,
slow = 3000
}
public const string StatisticLogOverall = "StatisticLogOverall.json";
public const string IEProxyExceptions = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*";

View File

@@ -54,11 +54,9 @@ namespace v2rayN.Handler
//Mux
muxEnabled = false,
// 默认不开启统计
enableStatistics = false,
// 默认中等刷新率
statisticsFreshRate = (int)Global.StatisticsFreshRate.medium,
statisticsFreshRate = 1,
enableRoutingAdvanced = true
};
@@ -158,7 +156,10 @@ namespace v2rayN.Handler
{
config.groupItem = new List<GroupItem>();
}
if (config.statisticsFreshRate > 100)
{
config.statisticsFreshRate = 1;
}
if (config == null
|| config.vmess.Count <= 0
@@ -245,7 +246,7 @@ namespace v2rayN.Handler
/// <returns></returns>
public static int AddServer(ref Config config, VmessItem vmessItem, bool toFile = true)
{
vmessItem.configType = EConfigType.Vmess;
vmessItem.configType = EConfigType.VMess;
vmessItem.address = vmessItem.address.TrimEx();
vmessItem.id = vmessItem.id.TrimEx();
@@ -480,8 +481,9 @@ namespace v2rayN.Handler
File.Delete(fileName);
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
return -1;
}
@@ -609,7 +611,7 @@ namespace v2rayN.Handler
{
return 0;
}
if (vmessItem.configType == EConfigType.Vmess)
if (vmessItem.configType == EConfigType.VMess)
{
string path = "";
string host = "";
@@ -896,7 +898,7 @@ namespace v2rayN.Handler
//groupId
vmessItem.groupId = groupId;
if (vmessItem.configType == EConfigType.Vmess)
if (vmessItem.configType == EConfigType.VMess)
{
if (AddServer(ref config, vmessItem, false) == 0)
{

View File

@@ -166,6 +166,7 @@ namespace v2rayN.Handler
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
Error?.Invoke(this, new ErrorEventArgs(ex));
}
return null;
}

View File

@@ -95,7 +95,7 @@ namespace v2rayN.Handler
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//graphics.FillRectangle(drawBrush, new Rectangle(0, 0, width, height));
graphics.DrawImage(new Bitmap(item.customIcon), 0, 0, width, height);
graphics.FillEllipse(drawBrush, width/2, width/2, width/2, width/2);
graphics.FillEllipse(drawBrush, width / 2, width / 2, width / 2, width / 2);
Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());
@@ -118,8 +118,7 @@ namespace v2rayN.Handler
{
return;
}
if (item.configType != EConfigType.Vmess
&& item.configType != EConfigType.VLESS)
if (item.configType == EConfigType.Custom)
{
UI.Show(ResUI.NonVmessService);
return;
@@ -158,7 +157,7 @@ namespace v2rayN.Handler
{
return;
}
if (item.configType != EConfigType.Vmess
if (item.configType != EConfigType.VMess
&& item.configType != EConfigType.VLESS)
{
UI.Show(ResUI.NonVmessService);

View File

@@ -1,4 +1,5 @@
using System.Drawing;
using System;
using System.Drawing;
using ZXing;
using ZXing.QrCode;
@@ -34,8 +35,9 @@ namespace v2rayN.Handler
img = (Image)bmp;
return img;
}
catch
catch(Exception ex)
{
Utils.SaveLog(ex.Message, ex);
return img;
}
}

View File

@@ -31,7 +31,7 @@ namespace v2rayN.Handler
switch (item.configType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
url = ShareVmess(item);
break;
case EConfigType.Shadowsocks:
@@ -51,8 +51,9 @@ namespace v2rayN.Handler
}
return url;
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
return "";
}
}
@@ -360,8 +361,9 @@ namespace v2rayN.Handler
return null;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
msg = ResUI.Incorrectconfiguration;
return null;
}
@@ -374,7 +376,7 @@ namespace v2rayN.Handler
msg = string.Empty;
var vmessItem = new VmessItem
{
configType = EConfigType.Vmess
configType = EConfigType.VMess
};
result = result.Substring(Global.vmessProtocol.Length);
@@ -422,7 +424,7 @@ namespace v2rayN.Handler
{
VmessItem vmessItem = new VmessItem
{
configType = EConfigType.Vmess
configType = EConfigType.VMess
};
result = result.Substring(Global.vmessProtocol.Length);
int indexSplit = result.IndexOf("?");
@@ -460,7 +462,7 @@ namespace v2rayN.Handler
{
VmessItem i = new VmessItem
{
configType = EConfigType.Vmess,
configType = EConfigType.VMess,
security = "auto"
};

View File

@@ -127,7 +127,7 @@ namespace v2rayN.Handler
}
}
}
Thread.Sleep(config_.statisticsFreshRate);
Thread.Sleep(1000 * config_.statisticsFreshRate);
channel_.ConnectAsync();
}
catch (Exception ex)

View File

@@ -198,16 +198,31 @@ namespace v2rayN.Handler
continue;
}
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
var result = await (new DownloadHandle()).DownloadStringAsync(url, blProxy, userAgent);
var downloadHandle = new DownloadHandle();
downloadHandle.Error += (sender2, args) =>
{
_updateFunc(false, $"{hashCode}{args.GetException().Message}");
};
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
var result = await downloadHandle.DownloadStringAsync(url, blProxy, userAgent);
if (blProxy && Utils.IsNullOrEmpty(result))
{
result = await downloadHandle.DownloadStringAsync(url, false, userAgent);
}
_updateFunc(false, $"{hashCode}{ResUI.MsgGetSubscriptionSuccessfully}");
if (Utils.IsNullOrEmpty(result))
{
_updateFunc(false, $"{hashCode}{ResUI.MsgSubscriptionDecodingFailed}");
}
else
{
_updateFunc(false, $"{hashCode}{ResUI.MsgGetSubscriptionSuccessfully}");
if (result.Length < 99)
{
_updateFunc(false, $"{hashCode}{result}");
}
int ret = ConfigHandler.AddBatchServers(ref config, result, id, groupId);
_updateFunc(false,
ret > 0

View File

@@ -83,8 +83,9 @@ namespace v2rayN.Handler
msg = string.Format(ResUI.SuccessfulConfiguration, $"[{config.GetGroupRemarks(node.groupId)}] {node.GetSummary()}");
}
catch
catch (Exception ex)
{
Utils.SaveLog("GenerateClientConfig", ex);
msg = ResUI.FailedGenDefaultConfiguration;
return -1;
}
@@ -130,8 +131,9 @@ namespace v2rayN.Handler
}
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -176,8 +178,9 @@ namespace v2rayN.Handler
}
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -246,8 +249,9 @@ namespace v2rayN.Handler
}
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -345,8 +349,9 @@ namespace v2rayN.Handler
}
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -363,7 +368,7 @@ namespace v2rayN.Handler
{
var config = LazyConfig.Instance.GetConfig();
Outbounds outbound = v2rayConfig.outbounds[0];
if (node.configType == EConfigType.Vmess)
if (node.configType == EConfigType.VMess)
{
VnextItem vnextItem;
if (outbound.settings.vnext.Count <= 0)
@@ -581,8 +586,9 @@ namespace v2rayN.Handler
outbound.settings.vnext = null;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -804,8 +810,9 @@ namespace v2rayN.Handler
break;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -849,8 +856,9 @@ namespace v2rayN.Handler
};
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -956,6 +964,18 @@ namespace v2rayN.Handler
break;
case ECoreType.clash:
case ECoreType.clash_meta:
//remove the original
var indexPort = fileContent.FindIndex(t => t.Contains("port:"));
if (indexPort >= 0)
{
fileContent.RemoveAt(indexPort);
}
indexPort = fileContent.FindIndex(t => t.Contains("socks-port:"));
if (indexPort >= 0)
{
fileContent.RemoveAt(indexPort);
}
fileContent.Add($"port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundHttp)}");
fileContent.Add($"socks-port: {LazyConfig.Instance.GetConfig().GetLocalPort(Global.InboundSocks)}");
break;
@@ -1028,8 +1048,9 @@ namespace v2rayN.Handler
msg = string.Format(ResUI.SuccessfulConfiguration, node.GetSummary());
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
msg = ResUI.FailedGenDefaultConfiguration;
return -1;
}
@@ -1064,7 +1085,7 @@ namespace v2rayN.Handler
usersItem.id = node.id;
usersItem.email = Global.userEMail;
if (node.configType == EConfigType.Vmess)
if (node.configType == EConfigType.VMess)
{
inbound.protocol = Global.vmessProtocolLite;
usersItem.alterId = node.alterId;
@@ -1079,8 +1100,9 @@ namespace v2rayN.Handler
boundStreamSettings(node, "in", inbound.streamSettings);
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -1100,8 +1122,9 @@ namespace v2rayN.Handler
v2rayConfig.outbounds[0].settings = null;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
return 0;
}
@@ -1246,8 +1269,9 @@ namespace v2rayN.Handler
vmessItem.streamSecurity = Global.StreamSecurity;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
msg = ResUI.IncorrectClientConfiguration;
return null;
}
@@ -1391,8 +1415,9 @@ namespace v2rayN.Handler
vmessItem.streamSecurity = Global.StreamSecurity;
}
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
msg = ResUI.IncorrectClientConfiguration;
return null;
}
@@ -1460,7 +1485,10 @@ namespace v2rayN.Handler
{
lstIpEndPoints = new List<IPEndPoint>(IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners());
}
catch { }
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
}
log(configCopy, ref v2rayConfig, false);
//routing(config, ref v2rayConfig);
@@ -1480,7 +1508,7 @@ namespace v2rayN.Handler
{
continue;
}
if (it.configType == EConfigType.Vmess || it.configType == EConfigType.VLESS)
if (it.configType == EConfigType.VMess || it.configType == EConfigType.VLESS)
{
if (!Utils.IsGuidByParse(configCopy.GetVmessItem(it.indexId).id))
{
@@ -1536,8 +1564,9 @@ namespace v2rayN.Handler
//msg = string.Format(ResUI.SuccessfulConfiguration"), node.getSummary());
return Utils.ToJson(v2rayConfig);
}
catch
catch (Exception ex)
{
Utils.SaveLog(ex.Message, ex);
msg = ResUI.FailedGenDefaultConfiguration;
return "";
}

View File

@@ -282,7 +282,7 @@ namespace v2rayN.Mode
public VmessItem()
{
indexId = string.Empty;
configType = EConfigType.Vmess;
configType = EConfigType.VMess;
configVersion = 2;
sort = 0;
address = string.Empty;
@@ -323,7 +323,7 @@ namespace v2rayN.Mode
}
switch (configType)
{
case EConfigType.Vmess:
case EConfigType.VMess:
case EConfigType.Shadowsocks:
case EConfigType.Socks:
case EConfigType.VLESS:

View File

@@ -3,7 +3,7 @@ namespace v2rayN.Mode
{
public enum EConfigType
{
Vmess = 1,
VMess = 1,
Custom = 2,
Shadowsocks = 3,
Socks = 4,

View File

@@ -1,18 +1,13 @@
using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using v2rayN.Forms;
using v2rayN.Properties;
using v2rayN.Tool;
namespace v2rayN
{
static class Program
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
/// <summary>
/// 应用程序的主入口点。
/// </summary>
@@ -21,7 +16,7 @@ namespace v2rayN
{
if (Environment.OSVersion.Version.Major >= 6)
{
SetProcessDPIAware();
Utils.SetProcessDPIAware();
}
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
@@ -47,6 +42,22 @@ namespace v2rayN
}
else
{
try
{
//read handle from reg and show the window
long.TryParse(Utils.RegReadValue(Global.MyRegPath, Utils.WindowHwndKey, ""), out long llong);
if (llong > 0)
{
var hwnd = (IntPtr)llong;
if (Utils.IsWindow(hwnd))
{
Utils.ShowWindow(hwnd, 4);
Utils.SwitchToThisWindow(hwnd, true);
return;
}
}
}
catch { }
UI.ShowWarning($"v2rayN is already running(v2rayN已经运行)");
}
}

View File

@@ -32,4 +32,4 @@ using System.Runtime.InteropServices;
// 方法是按如下所示使用“*”:
//[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
[assembly: AssemblyFileVersion("5.27")]
[assembly: AssemblyFileVersion("5.28")]

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
@@ -13,13 +13,13 @@ namespace v2rayN.Resx {
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class ResUI {
@@ -33,7 +33,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Do you want to append rules? Choose yes to append, choose otherwise to replace.
/// 查找类似 Do you want to append rules? Choose yes to append, choose otherwise to replace 的本地化字符串。
/// </summary>
internal static string AddBatchRoutingRulesYesNo {
get {
@@ -70,7 +70,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to All servers.
/// 查找类似 All servers 的本地化字符串。
/// </summary>
internal static string AllGroupServers {
get {
@@ -79,7 +79,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Batch export subscription to clipboard successfully.
/// 查找类似 Batch export subscription to clipboard successfully 的本地化字符串。
/// </summary>
internal static string BatchExportSubscriptionSuccessfully {
get {
@@ -88,7 +88,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Batch export share URL to clipboard successfully.
/// 查找类似 Batch export share URL to clipboard successfully 的本地化字符串。
/// </summary>
internal static string BatchExportURLSuccessfully {
get {
@@ -97,7 +97,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please check the server settings first.
/// 查找类似 Please check the server settings first 的本地化字符串。
/// </summary>
internal static string CheckServerSettings {
get {
@@ -106,7 +106,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Invalid configuration format.
/// 查找类似 Invalid configuration format 的本地化字符串。
/// </summary>
internal static string ConfigurationFormatIncorrect {
get {
@@ -115,7 +115,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually..
/// 查找类似 Note that custom configuration relies entirely on your own configuration and does not work with all settings. If you want to use the system proxy, please modify the listening port manually. 的本地化字符串。
/// </summary>
internal static string CustomServerTips {
get {
@@ -124,7 +124,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Downloading....
/// 查找类似 Downloading... 的本地化字符串。
/// </summary>
internal static string Downloading {
get {
@@ -133,7 +133,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Download.
/// 查找类似 Download 的本地化字符串。
/// </summary>
internal static string downloadSpeed {
get {
@@ -142,7 +142,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Whether to download? {0}.
/// 查找类似 Whether to download? {0} 的本地化字符串。
/// </summary>
internal static string DownloadYesNo {
get {
@@ -151,7 +151,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to convert configuration file.
/// 查找类似 Failed to convert configuration file 的本地化字符串。
/// </summary>
internal static string FailedConversionConfiguration {
get {
@@ -160,7 +160,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to generate default configuration file.
/// 查找类似 Failed to generate default configuration file 的本地化字符串。
/// </summary>
internal static string FailedGenDefaultConfiguration {
get {
@@ -169,7 +169,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to get the default configuration.
/// 查找类似 Failed to get the default configuration 的本地化字符串。
/// </summary>
internal static string FailedGetDefaultConfiguration {
get {
@@ -178,7 +178,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to import custom configuration server.
/// 查找类似 Failed to import custom configuration server 的本地化字符串。
/// </summary>
internal static string FailedImportedCustomServer {
get {
@@ -187,7 +187,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to read configuration file.
/// 查找类似 Failed to read configuration file 的本地化字符串。
/// </summary>
internal static string FailedReadConfiguration {
get {
@@ -196,7 +196,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the correct custom DNS.
/// 查找类似 Please fill in the correct custom DNS 的本地化字符串。
/// </summary>
internal static string FillCorrectDNSText {
get {
@@ -205,7 +205,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the correct format server port.
/// 查找类似 Please fill in the correct format server port 的本地化字符串。
/// </summary>
internal static string FillCorrectServerPort {
get {
@@ -214,7 +214,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the KCP parameters correctly.
/// 查找类似 Please fill in the KCP parameters correctly 的本地化字符串。
/// </summary>
internal static string FillKcpParameters {
get {
@@ -223,7 +223,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the local listening port.
/// 查找类似 Please fill in the local listening port 的本地化字符串。
/// </summary>
internal static string FillLocalListeningPort {
get {
@@ -232,7 +232,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the password.
/// 查找类似 Please fill in the password 的本地化字符串。
/// </summary>
internal static string FillPassword {
get {
@@ -241,7 +241,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the server address.
/// 查找类似 Please fill in the server address 的本地化字符串。
/// </summary>
internal static string FillServerAddress {
get {
@@ -250,7 +250,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please browse to import server configuration.
/// 查找类似 Please browse to import server configuration 的本地化字符串。
/// </summary>
internal static string FillServerAddressCustom {
get {
@@ -259,7 +259,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the user ID.
/// 查找类似 Please fill in the user ID 的本地化字符串。
/// </summary>
internal static string FillUUID {
get {
@@ -268,7 +268,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to is not the correct client configuration file, please check.
/// 查找类似 is not the correct client configuration file, please check 的本地化字符串。
/// </summary>
internal static string IncorrectClientConfiguration {
get {
@@ -277,7 +277,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to is not the correct configuration, please check.
/// 查找类似 is not the correct configuration, please check 的本地化字符串。
/// </summary>
internal static string Incorrectconfiguration {
get {
@@ -286,7 +286,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to is not the correct server configuration file, please check.
/// 查找类似 is not the correct server configuration file, please check 的本地化字符串。
/// </summary>
internal static string IncorrectServerConfiguration {
get {
@@ -295,7 +295,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Initial Configuration.
/// 查找类似 Initial Configuration 的本地化字符串。
/// </summary>
internal static string InitialConfiguration {
get {
@@ -304,7 +304,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to {0} already up to date..
/// 查找类似 {0} already up to date. 的本地化字符串。
/// </summary>
internal static string IsLatestCore {
get {
@@ -313,7 +313,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to {0} already up to date..
/// 查找类似 {0} already up to date. 的本地化字符串。
/// </summary>
internal static string IsLatestN {
get {
@@ -322,7 +322,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to LAN.
/// 查找类似 LAN 的本地化字符串。
/// </summary>
internal static string LabLAN {
get {
@@ -331,7 +331,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Local.
/// 查找类似 Local 的本地化字符串。
/// </summary>
internal static string LabLocal {
get {
@@ -340,7 +340,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Address.
/// 查找类似 Address 的本地化字符串。
/// </summary>
internal static string LvAddress {
get {
@@ -349,7 +349,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Alias.
/// 查找类似 Alias 的本地化字符串。
/// </summary>
internal static string LvAlias {
get {
@@ -358,7 +358,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Count.
/// 查找类似 Count 的本地化字符串。
/// </summary>
internal static string LvCount {
get {
@@ -367,7 +367,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Custom Icon.
/// 查找类似 Custom Icon 的本地化字符串。
/// </summary>
internal static string LvCustomIcon {
get {
@@ -376,7 +376,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Security.
/// 查找类似 Security 的本地化字符串。
/// </summary>
internal static string LvEncryptionMethod {
get {
@@ -385,7 +385,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Port.
/// 查找类似 Port 的本地化字符串。
/// </summary>
internal static string LvPort {
get {
@@ -394,7 +394,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to remarks.
/// 查找类似 remarks 的本地化字符串。
/// </summary>
internal static string LvRemarks {
get {
@@ -403,7 +403,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Type.
/// 查找类似 Type 的本地化字符串。
/// </summary>
internal static string LvServiceType {
get {
@@ -412,7 +412,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Subs.
/// 查找类似 Subs 的本地化字符串。
/// </summary>
internal static string LvSubscription {
get {
@@ -421,7 +421,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Test Results.
/// 查找类似 Test Results 的本地化字符串。
/// </summary>
internal static string LvTestResults {
get {
@@ -430,7 +430,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to TLS.
/// 查找类似 TLS 的本地化字符串。
/// </summary>
internal static string LvTLS {
get {
@@ -439,7 +439,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Download traffic today.
/// 查找类似 Download traffic today 的本地化字符串。
/// </summary>
internal static string LvTodayDownloadDataAmount {
get {
@@ -448,7 +448,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Upload traffic today.
/// 查找类似 Upload traffic today 的本地化字符串。
/// </summary>
internal static string LvTodayUploadDataAmount {
get {
@@ -457,7 +457,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Total download traffic.
/// 查找类似 Total download traffic 的本地化字符串。
/// </summary>
internal static string LvTotalDownloadDataAmount {
get {
@@ -466,7 +466,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Total upload traffic.
/// 查找类似 Total upload traffic 的本地化字符串。
/// </summary>
internal static string LvTotalUploadDataAmount {
get {
@@ -475,7 +475,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Transport.
/// 查找类似 Transport 的本地化字符串。
/// </summary>
internal static string LvTransportProtocol {
get {
@@ -484,7 +484,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Url.
/// 查找类似 Url 的本地化字符串。
/// </summary>
internal static string LvUrl {
get {
@@ -493,7 +493,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Medium.
/// 查找类似 Medium 的本地化字符串。
/// </summary>
internal static string MediumFresh {
get {
@@ -502,7 +502,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Clear original subscription content.
/// 查找类似 Clear original subscription content 的本地化字符串。
/// </summary>
internal static string MsgClearSubscription {
get {
@@ -511,7 +511,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Download GeoFile: {0} successfully.
/// 查找类似 Download GeoFile: {0} successfully 的本地化字符串。
/// </summary>
internal static string MsgDownloadGeoFileSuccessfully {
get {
@@ -520,7 +520,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Download Core successfully.
/// 查找类似 Download Core successfully 的本地化字符串。
/// </summary>
internal static string MsgDownloadV2rayCoreSuccessfully {
get {
@@ -529,7 +529,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Failed to import subscription content.
/// 查找类似 Failed to import subscription content 的本地化字符串。
/// </summary>
internal static string MsgFailedImportSubscription {
get {
@@ -538,7 +538,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Get subscription content successfully.
/// 查找类似 Get subscription content successfully 的本地化字符串。
/// </summary>
internal static string MsgGetSubscriptionSuccessfully {
get {
@@ -547,7 +547,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Information (Filter : {0}).
/// 查找类似 Information (Filter : {0}) 的本地化字符串。
/// </summary>
internal static string MsgInformationTitle {
get {
@@ -556,7 +556,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please fill in the address (Url).
/// 查找类似 Please fill in the address (Url) 的本地化字符串。
/// </summary>
internal static string MsgNeedUrl {
get {
@@ -565,7 +565,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to No valid subscriptions set.
/// 查找类似 No valid subscriptions set 的本地化字符串。
/// </summary>
internal static string MsgNoValidSubscription {
get {
@@ -574,7 +574,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to PAC update failed.
/// 查找类似 PAC update failed 的本地化字符串。
/// </summary>
internal static string MsgPACUpdateFailed {
get {
@@ -583,7 +583,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to PAC update succeeded.
/// 查找类似 PAC update succeeded 的本地化字符串。
/// </summary>
internal static string MsgPACUpdateSuccessfully {
get {
@@ -592,7 +592,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Resolve {0} successfully.
/// 查找类似 Resolve {0} successfully 的本地化字符串。
/// </summary>
internal static string MsgParsingSuccessfully {
get {
@@ -601,7 +601,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Servers (Filter : {0}).
/// 查找类似 Servers (Filter : {0}) 的本地化字符串。
/// </summary>
internal static string MsgServerTitle {
get {
@@ -610,7 +610,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Simplify PAC Success.
/// 查找类似 Simplify PAC Success 的本地化字符串。
/// </summary>
internal static string MsgSimplifyPAC {
get {
@@ -619,7 +619,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Start getting subscriptions.
/// 查找类似 Start getting subscriptions 的本地化字符串。
/// </summary>
internal static string MsgStartGettingSubscriptions {
get {
@@ -628,7 +628,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Start updating {0}....
/// 查找类似 Start updating {0}... 的本地化字符串。
/// </summary>
internal static string MsgStartUpdating {
get {
@@ -637,7 +637,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Start updating PAC....
/// 查找类似 Start updating PAC... 的本地化字符串。
/// </summary>
internal static string MsgStartUpdatingPAC {
get {
@@ -646,7 +646,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Invalid subscription content.
/// 查找类似 Invalid subscription content 的本地化字符串。
/// </summary>
internal static string MsgSubscriptionDecodingFailed {
get {
@@ -655,7 +655,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to is unpacking....
/// 查找类似 is unpacking... 的本地化字符串。
/// </summary>
internal static string MsgUnpacking {
get {
@@ -664,7 +664,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Update subscription end.
/// 查找类似 Update subscription end 的本地化字符串。
/// </summary>
internal static string MsgUpdateSubscriptionEnd {
get {
@@ -673,7 +673,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Update subscription starts.
/// 查找类似 Update subscription starts 的本地化字符串。
/// </summary>
internal static string MsgUpdateSubscriptionStart {
get {
@@ -682,7 +682,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Update Core successfully.
/// 查找类似 Update Core successfully 的本地化字符串。
/// </summary>
internal static string MsgUpdateV2rayCoreSuccessfully {
get {
@@ -691,7 +691,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Update Core successfully! Restarting service....
/// 查找类似 Update Core successfully! Restarting service... 的本地化字符串。
/// </summary>
internal static string MsgUpdateV2rayCoreSuccessfullyMore {
get {
@@ -700,7 +700,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to This feature relies on the Http global proxy, please set it correctly first..
/// 查找类似 This feature relies on the Http global proxy, please set it correctly first. 的本地化字符串。
/// </summary>
internal static string NeedHttpGlobalProxy {
get {
@@ -709,7 +709,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Non-vmess or ss protocol.
/// 查找类似 Non-VMess or ss protocol 的本地化字符串。
/// </summary>
internal static string NonvmessOrssProtocol {
get {
@@ -718,7 +718,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to non-Vmess service, this feature is invalid.
/// 查找类似 non-standard service, this feature is invalid 的本地化字符串。
/// </summary>
internal static string NonVmessService {
get {
@@ -727,7 +727,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Core not found, please download: {0}.
/// 查找类似 Core not found, please download: {0} 的本地化字符串。
/// </summary>
internal static string NotFoundCore {
get {
@@ -736,7 +736,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Scan completed, no valid QR code found.
/// 查找类似 Scan completed, no valid QR code found 的本地化字符串。
/// </summary>
internal static string NoValidQRcodeFound {
get {
@@ -745,7 +745,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to operation failed, please check and retry.
/// 查找类似 operation failed, please check and retry 的本地化字符串。
/// </summary>
internal static string OperationFailed {
get {
@@ -754,7 +754,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Operation success.
/// 查找类似 Operation success 的本地化字符串。
/// </summary>
internal static string OperationSuccess {
get {
@@ -763,7 +763,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please Fill Remarks.
/// 查找类似 Please Fill Remarks 的本地化字符串。
/// </summary>
internal static string PleaseFillRemarks {
get {
@@ -772,7 +772,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please select the encryption method.
/// 查找类似 Please select the encryption method 的本地化字符串。
/// </summary>
internal static string PleaseSelectEncryption {
get {
@@ -781,7 +781,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please select a protocol.
/// 查找类似 Please select a protocol 的本地化字符串。
/// </summary>
internal static string PleaseSelectProtocol {
get {
@@ -790,7 +790,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please select rules.
/// 查找类似 Please select rules 的本地化字符串。
/// </summary>
internal static string PleaseSelectRules {
get {
@@ -799,7 +799,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Please select the server first.
/// 查找类似 Please select the server first 的本地化字符串。
/// </summary>
internal static string PleaseSelectServer {
get {
@@ -808,7 +808,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Fast.
/// 查找类似 Fast 的本地化字符串。
/// </summary>
internal static string QuickFresh {
get {
@@ -817,7 +817,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Global hotkey {0} registered failed, reason {1}.
/// 查找类似 Global hotkey {0} registered failed, reason {1} 的本地化字符串。
/// </summary>
internal static string RegisterGlobalHotkeyFailed {
get {
@@ -826,7 +826,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Global hotkey {0} registered successfully.
/// 查找类似 Global hotkey {0} registered successfully 的本地化字符串。
/// </summary>
internal static string RegisterGlobalHotkeySuccessfully {
get {
@@ -835,7 +835,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Servers deduplication completed. Old: {0}, New: {1}..
/// 查找类似 Servers deduplication completed. Old: {0}, New: {1}. 的本地化字符串。
/// </summary>
internal static string RemoveDuplicateServerResult {
get {
@@ -844,7 +844,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Are you sure to remove the rules?.
/// 查找类似 Are you sure to remove the rules? 的本地化字符串。
/// </summary>
internal static string RemoveRules {
get {
@@ -853,7 +853,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Are you sure to remove the server?.
/// 查找类似 Are you sure to remove the server? 的本地化字符串。
/// </summary>
internal static string RemoveServer {
get {
@@ -862,7 +862,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to {0},One of the required..
/// 查找类似 {0},One of the required. 的本地化字符串。
/// </summary>
internal static string RoutingRuleDetailRequiredTips {
get {
@@ -871,7 +871,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to The client configuration file is saved at: {0}.
/// 查找类似 The client configuration file is saved at: {0} 的本地化字符串。
/// </summary>
internal static string SaveClientConfigurationIn {
get {
@@ -880,7 +880,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to The server configuration file is saved at: {0}.
/// 查找类似 The server configuration file is saved at: {0} 的本地化字符串。
/// </summary>
internal static string SaveServerConfigurationIn {
get {
@@ -889,7 +889,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Slow.
/// 查找类似 Slow 的本地化字符串。
/// </summary>
internal static string SlowFresh {
get {
@@ -898,7 +898,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Note: This feature relies on the Http global proxy. Please manually adjust the Http global proxy and active node after testing..
/// 查找类似 Note: This feature relies on the Http global proxy. Please manually adjust the Http global proxy and active node after testing. 的本地化字符串。
/// </summary>
internal static string SpeedServerTips {
get {
@@ -907,7 +907,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Speed Test....
/// 查找类似 Speed Test... 的本地化字符串。
/// </summary>
internal static string Speedtesting {
get {
@@ -916,7 +916,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to PAC failed to start. Please run this program as Administrator..
/// 查找类似 PAC failed to start. Please run this program as Administrator. 的本地化字符串。
/// </summary>
internal static string StartPacFailed {
get {
@@ -925,7 +925,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Start service ({0})....
/// 查找类似 Start service ({0})... 的本地化字符串。
/// </summary>
internal static string StartService {
get {
@@ -934,8 +934,8 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Configuration successful
///{0}.
/// 查找类似 Configuration successful
///{0} 的本地化字符串。
/// </summary>
internal static string SuccessfulConfiguration {
get {
@@ -944,7 +944,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Custom configuration server imported successfully..
/// 查找类似 Custom configuration server imported successfully. 的本地化字符串。
/// </summary>
internal static string SuccessfullyImportedCustomServer {
get {
@@ -953,7 +953,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to {0} servers have been imported from clipboard..
/// 查找类似 {0} servers have been imported from clipboard. 的本地化字符串。
/// </summary>
internal static string SuccessfullyImportedServerViaClipboard {
get {
@@ -962,7 +962,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Scan import URL successfully.
/// 查找类似 Scan import URL successfully 的本地化字符串。
/// </summary>
internal static string SuccessfullyImportedServerViaScan {
get {
@@ -971,7 +971,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to System proxy.
/// 查找类似 System proxy 的本地化字符串。
/// </summary>
internal static string SystemProxy {
get {
@@ -980,7 +980,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to The ping of current service: {0} ms.
/// 查找类似 The ping of current service: {0} ms 的本地化字符串。
/// </summary>
internal static string TestMeOutput {
get {
@@ -989,7 +989,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Too many servers, please open the main interface.
/// 查找类似 Too many servers, please open the main interface 的本地化字符串。
/// </summary>
internal static string TooManyServersTip {
get {
@@ -998,7 +998,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *tcp camouflage type.
/// 查找类似 *tcp camouflage type 的本地化字符串。
/// </summary>
internal static string TransportHeaderTypeTip1 {
get {
@@ -1007,7 +1007,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *kcp camouflage type.
/// 查找类似 *kcp camouflage type 的本地化字符串。
/// </summary>
internal static string TransportHeaderTypeTip2 {
get {
@@ -1016,7 +1016,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *QUIC camouflage type.
/// 查找类似 *QUIC camouflage type 的本地化字符串。
/// </summary>
internal static string TransportHeaderTypeTip3 {
get {
@@ -1025,7 +1025,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *grpc mode.
/// 查找类似 *grpc mode 的本地化字符串。
/// </summary>
internal static string TransportHeaderTypeTip4 {
get {
@@ -1034,7 +1034,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *ws path.
/// 查找类似 *ws path 的本地化字符串。
/// </summary>
internal static string TransportPathTip1 {
get {
@@ -1043,7 +1043,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *h2 path.
/// 查找类似 *h2 path 的本地化字符串。
/// </summary>
internal static string TransportPathTip2 {
get {
@@ -1052,7 +1052,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *QUIC key/Kcp seed.
/// 查找类似 *QUIC key/Kcp seed 的本地化字符串。
/// </summary>
internal static string TransportPathTip3 {
get {
@@ -1061,7 +1061,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *grpc serviceName.
/// 查找类似 *grpc serviceName 的本地化字符串。
/// </summary>
internal static string TransportPathTip4 {
get {
@@ -1070,7 +1070,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *Kcp seed.
/// 查找类似 *Kcp seed 的本地化字符串。
/// </summary>
internal static string TransportPathTip5 {
get {
@@ -1079,7 +1079,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *http host Separated by commas (,).
/// 查找类似 *http host Separated by commas (,) 的本地化字符串。
/// </summary>
internal static string TransportRequestHostTip1 {
get {
@@ -1088,7 +1088,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *ws host.
/// 查找类似 *ws host 的本地化字符串。
/// </summary>
internal static string TransportRequestHostTip2 {
get {
@@ -1097,7 +1097,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *h2 host Separated by commas (,).
/// 查找类似 *h2 host Separated by commas (,) 的本地化字符串。
/// </summary>
internal static string TransportRequestHostTip3 {
get {
@@ -1106,7 +1106,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to *QUIC securty.
/// 查找类似 *QUIC securty 的本地化字符串。
/// </summary>
internal static string TransportRequestHostTip4 {
get {
@@ -1115,7 +1115,7 @@ namespace v2rayN.Resx {
}
/// <summary>
/// Looks up a localized string similar to Ungrouped.
/// 查找类似 Ungrouped 的本地化字符串。
/// </summary>
internal static string UngroupedServers {
get {

View File

@@ -289,10 +289,10 @@
<value> This feature relies on the Http global proxy, please set it correctly first.</value>
</data>
<data name="NonvmessOrssProtocol" xml:space="preserve">
<value>Non-vmess or ss protocol</value>
<value>Non-VMess or ss protocol</value>
</data>
<data name="NonVmessService" xml:space="preserve">
<value> non-Vmess service, this feature is invalid</value>
<value> non-standard service, this feature is invalid</value>
</data>
<data name="NotFoundCore" xml:space="preserve">
<value>Core not found, please download: {0}</value>

View File

@@ -289,10 +289,10 @@
<value>此功能依赖Http全局代理,请先设置正确。</value>
</data>
<data name="NonvmessOrssProtocol" xml:space="preserve">
<value>非vmess或ss协议</value>
<value>非VMess或ss协议</value>
</data>
<data name="NonVmessService" xml:space="preserve">
<value>非Vmess服务,此功能无效</value>
<value>非标准服务,此功能无效</value>
</data>
<data name="NotFoundCore" xml:space="preserve">
<value>找不到Core下载地址: {0}</value>

View File

@@ -24,6 +24,7 @@ using System.Web;
using log4net;
using System.Linq;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
namespace v2rayN
{
@@ -1111,5 +1112,30 @@ namespace v2rayN
#endregion
#region Windows API
public static string WindowHwndKey
{
get
{
return $"WindowHwnd_{GetMD5(StartupPath())}";
}
}
[DllImport("user32.dll")]
public static extern bool SetProcessDPIAware();
[DllImport("user32.dll")]
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern int SwitchToThisWindow(IntPtr hwnd, bool fUnknown);
[DllImport("user32.dll")]
public static extern bool IsWindow(IntPtr hwnd);
#endregion
}
}