From 7c484b681e66b7f67982ed2e5e10b4a36f0a455a Mon Sep 17 00:00:00 2001
From: pdone <617941447@qq.com>
Date: Tue, 16 Jan 2024 10:11:49 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=BA=9Bbug=20=E7=A7=BB=E9=99=A4=E8=87=AA=E5=8A=A8=E5=88=87?=
=?UTF-8?q?=E6=8D=A2=E8=BE=93=E5=85=A5=E6=B3=95=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeControl/Controller.Designer.cs | 4 +-
FreeControl/Controller.cs | 1 +
FreeControl/FodyWeavers.xml | 3 +
FreeControl/FodyWeavers.xsd | 141 ++
FreeControl/FreeControl.csproj | 181 ++-
FreeControl/Loading.Designer.cs | 77 -
FreeControl/Loading.cs | 50 -
FreeControl/Loading.resx | 120 --
FreeControl/Main.Designer.cs | 13 +-
FreeControl/Main.cs | 83 +-
FreeControl/Main.en.resx | 18 +-
FreeControl/Main.resx | 1278 +++++++----------
FreeControl/Program.cs | 30 +-
FreeControl/Properties/AssemblyInfo.cs | 4 +-
FreeControl/Properties/Resources.Designer.cs | 20 +-
FreeControl/Properties/Resources.resx | 14 +-
FreeControl/Resources/SunnyUI.Common.dll | Bin 195072 -> 0 bytes
FreeControl/Resources/SunnyUI.dll | Bin 1788928 -> 0 bytes
.../Resources/en.FreeControl.resources.dll | Bin 40960 -> 40960 bytes
FreeControl/Resources/shortcut_en.jpg | Bin 88800 -> 0 bytes
FreeControl/Resources/shortcut_en.png | Bin 0 -> 28175 bytes
FreeControl/Resources/shortcut_en_dark.png | Bin 0 -> 35765 bytes
FreeControl/Resources/shortcut_zh.jpg | Bin 107081 -> 0 bytes
FreeControl/Resources/shortcut_zh.png | Bin 0 -> 24490 bytes
FreeControl/Resources/shortcut_zh_dark.png | Bin 0 -> 27767 bytes
FreeControl/Trusteeship.Designer.cs | 1 -
FreeControl/Trusteeship.cs | 13 +-
FreeControl/Update.en.md | 4 +
FreeControl/Update.md | 4 +
FreeControl/Utils/Extend.cs | 25 +
FreeControl/app.manifest | 79 -
FreeControl/en.FreeControl.resources.dll | Bin 40960 -> 0 bytes
FreeControl/packages.config | 53 +
33 files changed, 971 insertions(+), 1245 deletions(-)
create mode 100644 FreeControl/FodyWeavers.xml
create mode 100644 FreeControl/FodyWeavers.xsd
delete mode 100644 FreeControl/Loading.Designer.cs
delete mode 100644 FreeControl/Loading.cs
delete mode 100644 FreeControl/Loading.resx
delete mode 100644 FreeControl/Resources/SunnyUI.Common.dll
delete mode 100644 FreeControl/Resources/SunnyUI.dll
delete mode 100644 FreeControl/Resources/shortcut_en.jpg
create mode 100644 FreeControl/Resources/shortcut_en.png
create mode 100644 FreeControl/Resources/shortcut_en_dark.png
delete mode 100644 FreeControl/Resources/shortcut_zh.jpg
create mode 100644 FreeControl/Resources/shortcut_zh.png
create mode 100644 FreeControl/Resources/shortcut_zh_dark.png
delete mode 100644 FreeControl/app.manifest
delete mode 100644 FreeControl/en.FreeControl.resources.dll
create mode 100644 FreeControl/packages.config
diff --git a/FreeControl/Controller.Designer.cs b/FreeControl/Controller.Designer.cs
index 94be295..43c7396 100644
--- a/FreeControl/Controller.Designer.cs
+++ b/FreeControl/Controller.Designer.cs
@@ -163,7 +163,6 @@ private void InitializeComponent()
this.flowPanel.Size = new System.Drawing.Size(368, 373);
this.flowPanel.TabIndex = 9;
this.flowPanel.Text = null;
- this.flowPanel.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnScreenshot
//
@@ -190,10 +189,11 @@ private void InitializeComponent()
this.Name = "Controller";
this.Padding = new System.Windows.Forms.Padding(2, 0, 2, 2);
this.ShowDragStretch = true;
+ this.ShowIcon = true;
this.ShowInTaskbar = false;
this.ShowRadius = false;
this.ShowTitle = false;
- this.Text = "控制器";
+ this.Text = "Controller";
this.TopMost = true;
this.flowPanel.ResumeLayout(false);
this.ResumeLayout(false);
diff --git a/FreeControl/Controller.cs b/FreeControl/Controller.cs
index c2e3237..ad85920 100644
--- a/FreeControl/Controller.cs
+++ b/FreeControl/Controller.cs
@@ -11,6 +11,7 @@ public partial class Controller : UIForm
public Controller()
{
InitializeComponent();
+ Icon = Properties.Resources.pcm;
InitButton();
InitFormSizeAndLocation();
}
diff --git a/FreeControl/FodyWeavers.xml b/FreeControl/FodyWeavers.xml
new file mode 100644
index 0000000..5029e70
--- /dev/null
+++ b/FreeControl/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/FreeControl/FodyWeavers.xsd b/FreeControl/FodyWeavers.xsd
new file mode 100644
index 0000000..05e92c1
--- /dev/null
+++ b/FreeControl/FodyWeavers.xsd
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Controls if runtime assemblies are also embedded.
+
+
+
+
+ Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/FreeControl/FreeControl.csproj b/FreeControl/FreeControl.csproj
index 7e8de50..435f844 100644
--- a/FreeControl/FreeControl.csproj
+++ b/FreeControl/FreeControl.csproj
@@ -1,5 +1,6 @@
+
Debug
@@ -27,6 +28,8 @@
1.0.0.%2a
false
true
+
+
AnyCPU
@@ -34,7 +37,7 @@
full
false
bin\Debug\
- DEBUG;TRACE
+ TRACE;DEBUG
prompt
4
false
@@ -66,20 +69,150 @@
6D93BF546206628F86A07C83939C359B342D910D
+
- app.manifest
+ FreeControl.Program
-
- False
- DLL\SunnyUI.dll
- False
+
+ ..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll
+
+
+ ..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll
+ True
+ True
+
+
+ ..\packages\SunnyUI.3.0.3\lib\net40\SunnyUI.dll
+
+
+ ..\packages\SunnyUI.Common.3.0.3\lib\net40\SunnyUI.Common.dll
+
+ ..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll
+ True
+ True
+
+
+
+ ..\packages\System.Console.4.3.0\lib\net46\System.Console.dll
+ True
+ True
+
+
+ ..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll
+
+
+ ..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
+ True
+ True
+
+
+ ..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll
+ True
+ True
+
+
+ ..\packages\System.IO.4.3.0\lib\net462\System.IO.dll
+ True
+ True
+
+
+ ..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll
+ True
+ True
+
+
+ ..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll
+ True
+ True
+
+
+ ..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll
+ True
+ True
+
+
+ ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll
+ True
+ True
+
+
+ ..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll
+ True
+ True
+
+
+ ..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll
+ True
+ True
+
+
+ ..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll
+ True
+ True
+
+
+ ..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll
+ True
+ True
+
+
+
+ ..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
+ True
+ True
+
+
+ ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
+ True
+ True
+
+
+ ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll
+ True
+ True
+
+
+ ..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll
+ True
+ True
+
+
+ ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll
+ True
+ True
+
+
+ ..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll
+ True
+ True
+
+
+ ..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll
+ True
+ True
+
@@ -89,6 +222,11 @@
+
+ ..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll
+ True
+ True
+
@@ -97,12 +235,6 @@
Controller.cs
-
- Form
-
-
- Loading.cs
-
True
True
@@ -134,9 +266,6 @@
Controller.cs
-
- Loading.cs
-
Main.cs
@@ -152,8 +281,8 @@
Designer
Resources.Designer.cs
-
+
@@ -168,13 +297,13 @@
+
+
+
+
-
-
-
-
@@ -186,6 +315,16 @@
- copy $(TargetDir)en\FreeControl.resources.dll $(ProjectDir)en.FreeControl.resources.dll /Y
+ copy $(TargetDir)en\FreeControl.resources.dll $(ProjectDir)Resources\en.FreeControl.resources.dll /Y
+
+
+
+ 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FreeControl/Loading.Designer.cs b/FreeControl/Loading.Designer.cs
deleted file mode 100644
index 1715a27..0000000
--- a/FreeControl/Loading.Designer.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-namespace FreeControl
-{
- partial class Loading
- {
- ///
- /// 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.uiProgressIndicator1 = new Sunny.UI.UIProgressIndicator();
- this.SuspendLayout();
- //
- // uiProgressIndicator1
- //
- this.uiProgressIndicator1.BackColor = System.Drawing.Color.Transparent;
- this.uiProgressIndicator1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.uiProgressIndicator1.Font = new System.Drawing.Font("微软雅黑", 12F);
- this.uiProgressIndicator1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
- this.uiProgressIndicator1.Location = new System.Drawing.Point(0, 0);
- this.uiProgressIndicator1.MinimumSize = new System.Drawing.Size(1, 1);
- this.uiProgressIndicator1.Name = "uiProgressIndicator1";
- this.uiProgressIndicator1.Size = new System.Drawing.Size(100, 100);
- this.uiProgressIndicator1.Style = Sunny.UI.UIStyle.Gray;
- this.uiProgressIndicator1.StyleCustomMode = true;
- this.uiProgressIndicator1.TabIndex = 0;
- this.uiProgressIndicator1.Text = "uiProgressIndicator1";
- //
- // Loading
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.White;
- this.ClientSize = new System.Drawing.Size(100, 100);
- this.Controls.Add(this.uiProgressIndicator1);
- this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- this.Name = "Loading";
- this.Opacity = 0.9D;
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Loading";
- this.TopMost = true;
- this.Load += new System.EventHandler(this.Loading_Load);
- this.ResumeLayout(false);
-
- this.BackColor = System.Drawing.Color.Silver;//将窗体背景设置成红色
- this.TransparencyKey = System.Drawing.Color.Silver; //将红色设置成透明色
-
- }
-
- #endregion
-
- private Sunny.UI.UIProgressIndicator uiProgressIndicator1;
- }
-}
\ No newline at end of file
diff --git a/FreeControl/Loading.cs b/FreeControl/Loading.cs
deleted file mode 100644
index 035117f..0000000
--- a/FreeControl/Loading.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using FreeControl.Utils;
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Windows.Forms;
-
-namespace FreeControl
-{
- public partial class Loading : Form
- {
- private string UserDataPath;
- public string ScrcpyPath = string.Empty;
- public Loading(string UserDataPath)
- {
- this.UserDataPath = UserDataPath;
- InitializeComponent();
- }
-
- public Loading()
- {
- InitializeComponent();
- }
-
- private void Loading_Load(object sender, EventArgs e)
- {
- //ScrcpyPath = Path.Combine(UserDataPath, "scrcpy_win32_v1_16/");
- //string tempFileName = "temp.zip";
- //if (!Directory.Exists(ScrcpyPath))
- //{
- // Directory.CreateDirectory(ScrcpyPath);
- // File.WriteAllBytes(ScrcpyPath + tempFileName, Properties.Resources.scrcpy_win32_v1_16);
- // if (SharpZip.UnpackFiles(ScrcpyPath + tempFileName, ScrcpyPath))
- // {
- // File.Delete(ScrcpyPath + tempFileName);
- // this.DialogResult = DialogResult.OK;
- // }
- //}
- //else
- //{
- // this.DialogResult = DialogResult.OK;
- //}
- }
- }
-}
diff --git a/FreeControl/Loading.resx b/FreeControl/Loading.resx
deleted file mode 100644
index 1af7de1..0000000
--- a/FreeControl/Loading.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/FreeControl/Main.Designer.cs b/FreeControl/Main.Designer.cs
index 5389d2d..923f082 100644
--- a/FreeControl/Main.Designer.cs
+++ b/FreeControl/Main.Designer.cs
@@ -173,6 +173,7 @@ private void InitializeComponent()
this.tbxIp.RadiusSides = ((Sunny.UI.UICornerRadiusSides)((Sunny.UI.UICornerRadiusSides.LeftTop | Sunny.UI.UICornerRadiusSides.LeftBottom)));
this.tbxIp.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.tbxIp.RectDisableColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
+ this.tbxIp.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
this.tbxIp.Style = Sunny.UI.UIStyle.Custom;
this.tbxIp.StyleCustomMode = true;
this.tbxIp.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
@@ -265,6 +266,7 @@ private void InitializeComponent()
this.btnStart.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(130)))), ((int)(((byte)(130)))), ((int)(((byte)(130)))));
this.btnStart.Style = Sunny.UI.UIStyle.Custom;
this.btnStart.Symbol = 61671;
+ this.btnStart.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// comboIp
//
@@ -390,7 +392,6 @@ private void InitializeComponent()
this.rbtnShortcuts.Radius = 10;
this.rbtnShortcuts.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.rbtnShortcuts.Style = Sunny.UI.UIStyle.Custom;
- this.rbtnShortcuts.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// lbAllShortcut
//
@@ -412,7 +413,6 @@ private void InitializeComponent()
this.uiGroupBox1.Name = "uiGroupBox1";
this.uiGroupBox1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.uiGroupBox1.Style = Sunny.UI.UIStyle.Custom;
- this.uiGroupBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// uiLabel4
//
@@ -435,7 +435,6 @@ private void InitializeComponent()
this.updownWidth.Minimum = 0;
this.updownWidth.Name = "updownWidth";
this.updownWidth.Style = Sunny.UI.UIStyle.Custom;
- this.updownWidth.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// updownHeight
//
@@ -446,7 +445,6 @@ private void InitializeComponent()
this.updownHeight.Minimum = 0;
this.updownHeight.Name = "updownHeight";
this.updownHeight.Style = Sunny.UI.UIStyle.Custom;
- this.updownHeight.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// cbxOtherSetting
//
@@ -465,7 +463,6 @@ private void InitializeComponent()
this.cbxOtherSetting.Name = "cbxOtherSetting";
this.cbxOtherSetting.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.cbxOtherSetting.Style = Sunny.UI.UIStyle.Custom;
- this.cbxOtherSetting.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// cbxAudioEnabled
//
@@ -559,6 +556,7 @@ private void InitializeComponent()
resources.ApplyResources(this.btnClose, "btnClose");
this.btnClose.Name = "btnClose";
this.btnClose.Style = Sunny.UI.UIStyle.Custom;
+ this.btnClose.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// btnMini
//
@@ -566,6 +564,7 @@ private void InitializeComponent()
resources.ApplyResources(this.btnMini, "btnMini");
this.btnMini.Name = "btnMini";
this.btnMini.Style = Sunny.UI.UIStyle.Custom;
+ this.btnMini.TipsFont = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
//
// Main
//
@@ -580,7 +579,9 @@ private void InitializeComponent()
this.MaximizeBox = false;
this.Name = "Main";
this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
- this.ShowRect = false;
+ this.ShowIcon = true;
+ this.ShowRadius = false;
+ this.ShowShadow = true;
this.ShowTitle = false;
this.ShowTitleIcon = true;
this.Style = Sunny.UI.UIStyle.Custom;
diff --git a/FreeControl/Main.cs b/FreeControl/Main.cs
index 0f06868..d77f704 100644
--- a/FreeControl/Main.cs
+++ b/FreeControl/Main.cs
@@ -9,11 +9,9 @@
using System.IO.Compression;
using System.Linq;
using System.Reflection;
-using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
-using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace FreeControl
{
@@ -86,6 +84,11 @@ public class Info
}
public MultiLanguage i18n;
+
+ ///
+ /// 是否启用输入法切换
+ ///
+ public readonly bool EnableSwitchIME = false;
#endregion
#region 构造函数
@@ -103,7 +106,6 @@ public Main()
System.Globalization.CultureInfo UICulture = new System.Globalization.CultureInfo(lang);
Thread.CurrentThread.CurrentUICulture = UICulture;
InitializeComponent();
-
InitPdone();
IsInit = false;
}
@@ -193,6 +195,12 @@ public void InitPdone()
StartPosition = FormStartPosition.Manual;
Location = new Point(_Setting.MainWindowX, _Setting.MainWindowY);
}
+
+ #region 控件状态
+ uiLabel7.Visible = EnableSwitchIME;
+ linkIME.Visible = EnableSwitchIME;
+ #endregion
+
#region 事件绑定
// 退出时保存用户配置数据
Application.ApplicationExit += (sender, e) =>
@@ -248,7 +256,7 @@ public void InitPdone()
#endregion
#region 设置标题和图标
- Info.NameVersion = $"Free Control v{fvi.ProductVersion}";
+ Info.NameVersion = $"FreeControl v{fvi.ProductVersion}";
Text = Info.NameVersion;
ledTitle.Text = Info.NameVersion;
ledTitle.CharCount = 19;
@@ -263,6 +271,8 @@ public void InitPdone()
// 设置默认导航条图标
tabHome.ImageIndex = 0;
tabSetting.ImageIndex = 2;
+ this.BackColor = Color.FromArgb(140, 140, 140);
+ navTab.TabBackColor = Color.FromArgb(222, 222, 222);
#endregion
#region 切换tab事件
@@ -501,8 +511,7 @@ private void RunScrcpy()
scrcpy.Exited += (ss, ee) =>
{
SetUserData(_Setting);// 关闭scrcpy后保存一下配置文件
- string strOriginIme = _Setting.IMEOrigin;
- if (_Setting.IME != 0 && _Setting.IMEOrigin.IsNotNull())
+ if (EnableSwitchIME && _Setting.IME != 0 && _Setting.IMEOrigin.IsNotNull())
{
ADB.Execute($"shell ime set {_Setting.IMEOrigin}");
}
@@ -514,19 +523,19 @@ private void RunScrcpy()
};
scrcpy.BeginErrorReadLine();
scrcpy.BeginOutputReadLine();
- // 获取当前输入法
- string strCurIME = ADB.Execute($"adb shell settings get secure default_input_method");
- if (strCurIME.IsNotNull())
- {
- _Setting.IMEOrigin = strCurIME;
- }
- if (_Setting.IME != 0)
+
+ if (EnableSwitchIME && _Setting.IME != 0)
{
+ // 获取当前输入法
+ string strCurIME = ADB.Execute($"adb shell settings get secure default_input_method");
+ if (strCurIME.IsNotNull())
+ {
+ _Setting.IMEOrigin = strCurIME;
+ }
// 启动时切换到该输入法
ADB.Execute($"shell ime set {InputMethodPkgNames[(InputMethod)_Setting.IME]}");
}
}
-
///
/// 显示提示消息
///
@@ -612,7 +621,7 @@ void LoadHistoryIPs(bool isReload = false)
else
action();
}
- #endregion
+#endregion
#region 配置项改变事件
///
@@ -639,10 +648,15 @@ void UpdateStyle(bool isDark)
UIStyles.SetStyle(curStyle);
navTab.MenuStyle = UIMenuStyle.Black;
- btnStart.SetStyle(curStyle);
-
tabHome.ImageIndex = 1;
tabSetting.ImageIndex = 3;
+
+ btnStart.FillHoverColor = Color.FromArgb(20, 54, 94);
+ btnStart.FillDisableColor = tabBackColor;
+ btnStart.FillPressColor = Color.FromArgb(20, 54, 94);
+ btnStart.ForeHoverColor = Color.White;
+ btnStart.ForeDisableColor = Color.White;
+ btnStart.ForePressColor = Color.White;
}
else
{
@@ -652,8 +666,6 @@ void UpdateStyle(bool isDark)
UIStyles.SetStyle(curStyle);
navTab.MenuStyle = UIMenuStyle.White;
- btnStart.SetStyle(curStyle);
-
tabHome.ImageIndex = 0;
tabSetting.ImageIndex = 2;
@@ -914,7 +926,7 @@ private void linkIssues_Click(object sender, EventArgs e)
private void lbAllShortcut_Click(object sender, EventArgs e)
{
- Form shortcut = new Form()
+ Form dlgShortcut = new Form()
{
AutoSize = true,
StartPosition = FormStartPosition.CenterScreen,
@@ -922,26 +934,40 @@ private void lbAllShortcut_Click(object sender, EventArgs e)
MinimizeBox = false,
MaximizeBox = false,
};
- shortcut.KeyPress += (senderr, ee) =>
+ dlgShortcut.KeyPress += (senderr, ee) =>
{
if (ee.KeyChar == (char)Keys.Escape)
{
- shortcut.Close();
+ dlgShortcut.Close();
}
};
Image img = null;
+ dlgShortcut.Icon = Properties.Resources.pcm;
if (_Setting.Language == Lang.zh_cn)
- img = Properties.Resources.shortcut_zh;
+ {
+ if (_Setting.DarkMode)
+ img = Properties.Resources.shortcut_zh_dark;
+ else
+ img = Properties.Resources.shortcut_zh;
+ }
else if (_Setting.Language == Lang.en)
- img = Properties.Resources.shortcut_en;
+ {
+ if (_Setting.DarkMode)
+ img = Properties.Resources.shortcut_en_dark;
+ else
+ img = Properties.Resources.shortcut_en;
+ }
PictureBox pictureBox = new PictureBox
{
Image = img,
SizeMode = PictureBoxSizeMode.AutoSize,
};
- shortcut.Controls.Add(pictureBox);
- shortcut.ShowDialog();
+ pictureBox.MouseDown += (ss, ee) => Extend.DragWindow(dlgShortcut.Handle);
+ pictureBox.BorderStyle = BorderStyle.None;
+ pictureBox.Margin = new Padding(0);
+ dlgShortcut.Controls.Add(pictureBox);
+ dlgShortcut.ShowDialog();
}
private void linkIME_Click(object sender, EventArgs e)
@@ -974,6 +1000,7 @@ private void linkLang_Click(object sender, EventArgs e)
#endregion
}
+ #region 语言相关
///
/// 输入法
///
@@ -1030,6 +1057,9 @@ public MultiLanguage(Lang lang)
imes.Add(InputMethod.Sougou, "Sougou IME");
imes.Add(InputMethod.QQPinyin, "QQ IME");
+ UILocalize.OK = "OK";
+ UILocalize.Cancel = "Cancel";
+
break;
case Lang.zh_cn:
@@ -1073,4 +1103,5 @@ public MultiLanguage(Lang lang)
"English",
};
}
+ #endregion
}
diff --git a/FreeControl/Main.en.resx b/FreeControl/Main.en.resx
index 7864f21..90c1384 100644
--- a/FreeControl/Main.en.resx
+++ b/FreeControl/Main.en.resx
@@ -122,7 +122,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADG
- GgAAAk1TRnQBSQFMAgEBBAEAAZgBAgGYAQIBHgEAAR4BAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAF4
+ GgAAAk1TRnQBSQFMAgEBBAEAAaABAgGgAQIBHgEAAR4BAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAF4
AwABPAMAAQEBAAEgBQABgAFw/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AJ4AAzgBXQMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
@@ -203,7 +203,7 @@
AXgDvwH/AzcBWggABAEDAgEDMAAEAQMCAQMIAAMHAQkDXgHtA2oB+QMPARQYAANNAZIDXgH7AxoB/wNE
AXgDAgEDLAADEQEWA14B0gMaAf8DWgHpAyIBMSQAA00BkgNfAfsDvwH/A0QBeAMCAQMsAAMRARYDXgHS
A78B/wNjAekDIgExHAADXQHOAxoB/wMbASYDUQGfAxoB/wMaAf8DWgHHAyUBNiAAAwMBBANJAYcDGgH/
- AxoB/wNdAc8DKQE+A1ABnANoAf4DMQFNFAADXwHOA78B/wMbASYDUQGfA78B/wO/Af8DWgHHAyUBNiAA
+ AxoB/wNdAc8DKQE+A1ABnANpAf4DMQFNFAADXwHOA78B/wMbASYDUQGfA78B/wO/Af8DWgHHAyUBNiAA
AwMBBANJAYcDvwH/A78B/wNdAc8DKQE+A1EBnAOAAf4DMQFNIAADHgEqA10B3wMaAf8DWwHQAxgBICQA
AzkBXgNJAfYDGgH/A1UBrzAAAx4BKgNdAd8DvwH/A18B0AMYASAkAAM5AV4DYgH2A78B/wNVAa8kAAMc
AScDSQH2AxoB/wMaAf8DXwHaA10ByQNgAfMDGgH/AxwBJxwAA10B3AMaAf8DYQHrA1sBzQNeAfsDGgH/
@@ -344,9 +344,6 @@ If all of the above methods are useless, please send
MiddleRight
-
- Shortcuts ( )
-
89, 6
@@ -356,8 +353,8 @@ If all of the above methods are useless, please send
All
-
- Size
+
+ Shortcuts ( )
6, 35
@@ -389,8 +386,8 @@ If all of the above methods are useless, please send
108, 29
-
- Other
+
+ Size
455, 70
@@ -470,6 +467,9 @@ If all of the above methods are useless, please send
Close Screen
+
+ Other
+
419, 248
diff --git a/FreeControl/Main.resx b/FreeControl/Main.resx
index 7f67bae..d707c30 100644
--- a/FreeControl/Main.resx
+++ b/FreeControl/Main.resx
@@ -151,7 +151,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADG
- GgAAAk1TRnQBSQFMAgEBBAEAAfwBAgH8AQIBHgEAAR4BAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAF4
+ GgAAAk1TRnQBSQFMAgEBBAEAAWgBAwFoAQMBHgEAAR4BAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAF4
AwABPAMAAQEBAAEgBQABgAFw/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AJ4AAzgBXQMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/AxoB/wMaAf8DGgH/
@@ -232,7 +232,7 @@
AXgDvwH/AzcBWggABAEDAgEDMAAEAQMCAQMIAAMHAQkDXgHtA2oB+QMPARQYAANNAZIDXgH7AxoB/wNE
AXgDAgEDLAADEQEWA14B0gMaAf8DWgHpAyIBMSQAA00BkgNfAfsDvwH/A0QBeAMCAQMsAAMRARYDXgHS
A78B/wNjAekDIgExHAADXQHOAxoB/wMbASYDUQGfAxoB/wMaAf8DWgHHAyUBNiAAAwMBBANJAYcDGgH/
- AxoB/wNdAc8DKQE+A1ABnANmAf4DMQFNFAADXwHOA78B/wMbASYDUQGfA78B/wO/Af8DWgHHAyUBNiAA
+ AxoB/wNdAc8DKQE+A1ABnANzAf4DMQFNFAADXwHOA78B/wMbASYDUQGfA78B/wO/Af8DWgHHAyUBNiAA
AwMBBANJAYcDvwH/A78B/wNdAc8DKQE+A1EBnAOAAf4DMQFNIAADHgEqA10B3wMaAf8DWwHQAxgBICQA
AzkBXgNJAfYDGgH/A1UBrzAAAx4BKgNdAd8DvwH/A18B0AMYASAkAAM5AV4DYgH2A78B/wNVAa8kAAMc
AScDSQH2AxoB/wMaAf8DXwHaA10ByQNgAfMDGgH/AxwBJxwAA10B3AMaAf8DYQHrA1sBzQNeAfsDGgH/
@@ -272,6 +272,27 @@
Left
+
+ True
+
+
+ 微软雅黑, 10pt
+
+
+ 0, 12
+
+
+ 434, 37
+
+
+ 46, 23
+
+
+ 30
+
+
+ 未设置
+
linkIME
@@ -284,6 +305,27 @@
0
+
+ True
+
+
+ 微软雅黑, 10pt
+
+
+ 356, 35
+
+
+ 79, 20
+
+
+ 29
+
+
+ 自动切换为
+
+
+ MiddleLeft
+
uiLabel7
@@ -296,6 +338,27 @@
1
+
+ 微软雅黑, 11pt
+
+
+ 205, 231
+
+
+ 4, 5, 4, 5
+
+
+ 1, 1
+
+
+ 3, 3, 3, 3
+
+
+ 135, 27
+
+
+ 24
+
tbxIp
@@ -308,6 +371,27 @@
2
+
+ True
+
+
+ 微软雅黑, 9pt
+
+
+ 0, 12
+
+
+ 360, 200
+
+
+ 40, 21
+
+
+ 27
+
+
+ issues
+
linkIssues
@@ -320,6 +404,27 @@
3
+
+ 微软雅黑, 11pt
+
+
+ 372, 231
+
+
+ 4, 5, 4, 5
+
+
+ 1, 1
+
+
+ 5, 5, 5, 5
+
+
+ 67, 27
+
+
+ 26
+
tbxPort
@@ -332,6 +437,27 @@
4
+
+ 微软雅黑, 11pt
+
+
+ 113, 230
+
+
+ 1, 1
+
+
+ 22, 0, 0, 0
+
+
+ 85, 29
+
+
+ 25
+
+
+ 无线访问
+
cbxUseWireless
@@ -344,6 +470,27 @@
5
+
+ True
+
+
+ 微软雅黑, 9pt
+
+
+ 0, 12
+
+
+ 359, 181
+
+
+ 66, 21
+
+
+ 4
+
+
+ 设置端口号
+
linkSetPort
@@ -356,6 +503,27 @@
6
+
+ True
+
+
+ 微软雅黑, 9pt
+
+
+ 0, 12
+
+
+ 282, 81
+
+
+ 124, 17
+
+
+ 2
+
+
+ (开启USB调试的方法)
+
linkEnabledADB
@@ -368,6 +536,33 @@
7
+
+ True
+
+
+ 微软雅黑, 10pt
+
+
+ 142, 78
+
+
+ 232, 140
+
+
+ 1
+
+
+ 1、开启USB调试模式
+2、使用数据线将手机连接到电脑上
+3、点击启动按钮
+
+无线访问失败请确认IP地址是否正确
+若IP地址正确仍无法使用,请尝试
+若以上操作后仍无法使用,请提交
+
+
+ MiddleLeft
+
uiLabel1
@@ -380,6 +575,27 @@
8
+
+ 微软雅黑, 12pt
+
+
+ 203, 19
+
+
+ 1, 1
+
+
+ 28, 0, 0, 0
+
+
+ 145, 51
+
+
+ 0
+
+
+ 启动
+
btnStart
@@ -392,6 +608,27 @@
9
+
+ 微软雅黑, 12pt
+
+
+ 203, 230
+
+
+ 0, 0, 0, 0
+
+
+ 63, 0
+
+
+ 0, 0, 30, 2
+
+
+ 165, 29
+
+
+ 28
+
comboIp
@@ -680,809 +917,32 @@
4, 5, 4, 5
-
- 63, 0
-
-
- 0, 0, 30, 2
-
-
- 99, 29
-
-
- 27
-
-
- 帧数限制
-
-
- comboMaxFPS
-
-
- Sunny.UI.UIComboBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 6
-
-
- lbAllShortcut
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- rbtnShortcuts
-
-
- 0
-
-
- 微软雅黑, 11pt
-
-
- Ctrl
-
-
- Ctrl + Alt
-
-
- Alt
-
-
- 207, 5
-
-
- 4, 5, 4, 5
-
-
- 1, 1
-
-
- 0, 32, 0, 0
-
-
- 190, 114
-
-
- 25
-
-
- 快捷键( )
-
-
- rbtnShortcuts
-
-
- Sunny.UI.UIRadioButtonGroup, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 7
-
-
- uiLabel4
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- uiGroupBox1
-
-
- 0
-
-
- uiLabel3
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- uiGroupBox1
-
-
- 1
-
-
- updownWidth
-
-
- Sunny.UI.UIIntegerUpDown, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- uiGroupBox1
-
-
- 2
-
-
- updownHeight
-
-
- Sunny.UI.UIIntegerUpDown, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- uiGroupBox1
-
-
- 3
-
-
- 微软雅黑, 11pt
-
-
- 9, 5
-
-
- 4, 5, 4, 5
-
-
- 1, 1
-
-
- 0, 32, 0, 0
-
-
- 190, 114
-
-
- 22
-
-
- 窗口大小
-
-
- uiGroupBox1
-
-
- Sunny.UI.UIGroupBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 8
-
-
- cbxAudioEnabled
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 0
-
-
- cbxControllerEnabled
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 1
-
-
- cbxShowTouches
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 2
-
-
- cbxTopMost
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 3
-
-
- cbxReadOnly
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 4
-
-
- cbxFullScreen
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 5
-
-
- cbxHideBorder
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 6
-
-
- cbxUseLog
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 7
-
-
- cbxKeepAwake
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 8
-
-
- cbxCloseScreen
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- cbxOtherSetting
-
-
- 9
-
-
- 微软雅黑, 11pt
-
-
- 9, 129
-
-
- 4, 5, 4, 5
-
-
- 1, 1
-
-
- 0, 32, 0, 0
-
-
- 586, 110
-
-
- 3
-
-
- 其他设置
-
-
- cbxOtherSetting
-
-
- Sunny.UI.UIGroupBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 9
-
-
- True
-
-
- 微软雅黑, 11pt
-
-
- 440, 248
-
-
- 69, 20
-
-
- 16
-
-
- 深色模式
-
-
- MiddleLeft
-
-
- lbDarkMode
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 10
-
-
- 微软雅黑, 11pt
-
-
- 515, 245
-
-
- 1, 1
-
-
- 75, 29
-
-
- 17
-
-
- switchDarkMode
-
-
- Sunny.UI.UISwitch, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabSetting
-
-
- 11
-
-
- 2
-
-
- 51, 0
-
-
- 607, 278
-
-
- 1
-
-
- tabSetting
-
-
- System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- navTab
-
-
- 1
-
-
- 微软雅黑, 12pt
-
-
- 50, 50
-
-
- 0, 63
-
-
- 658, 278
-
-
- 6
-
-
- navTab
-
-
- Sunny.UI.UITabControlMenu, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- $this
-
-
- 3
-
-
- True
-
-
- 微软雅黑, 10pt
-
-
- 0, 12
-
-
- 434, 37
-
-
- 46, 23
-
-
- 30
-
-
- 未设置
-
-
- linkIME
-
-
- Sunny.UI.UILinkLabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 0
-
-
- True
-
-
- 微软雅黑, 10pt
-
-
- 356, 35
-
-
- 79, 20
-
-
- 29
-
-
- 自动切换为
-
-
- MiddleLeft
-
-
- uiLabel7
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 1
-
-
- 微软雅黑, 11pt
-
-
- 206, 229
-
-
- 4, 5, 4, 5
-
-
- 1, 1
-
-
- 5, 5, 5, 5
-
-
- 129, 29
-
-
- 24
-
-
- tbxIp
-
-
- Sunny.UI.UITextBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 2
-
-
- True
-
-
- 微软雅黑, 9pt
-
-
- 0, 12
-
-
- 360, 200
-
-
- 40, 21
-
-
- 27
-
-
- issues
-
-
- linkIssues
-
-
- Sunny.UI.UILinkLabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 3
-
-
- 微软雅黑, 11pt
-
-
- 373, 229
-
-
- 4, 5, 4, 5
-
-
- 1, 1
-
-
- 5, 5, 5, 5
-
-
- 67, 29
-
-
- 26
-
-
- tbxPort
-
-
- Sunny.UI.UITextBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 4
-
-
- 微软雅黑, 11pt
-
-
- 118, 229
-
-
- 1, 1
-
-
- 22, 0, 0, 0
-
-
- 85, 29
-
-
- 25
-
-
- 无线访问
-
-
- cbxUseWireless
-
-
- Sunny.UI.UICheckBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 5
-
-
- True
-
-
- 微软雅黑, 9pt
-
-
- 0, 12
-
-
- 359, 181
-
-
- 66, 21
-
-
- 4
-
-
- 设置端口号
-
-
- linkSetPort
-
-
- Sunny.UI.UILinkLabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 6
-
-
- True
-
-
- 微软雅黑, 9pt
-
-
- 0, 12
-
-
- 282, 81
-
-
- 124, 17
-
-
- 2
-
-
- (开启USB调试的方法)
-
-
- linkEnabledADB
-
-
- Sunny.UI.UILinkLabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 7
-
-
- True
-
-
- 微软雅黑, 10pt
-
-
- 142, 78
-
-
- 232, 140
-
-
- 1
-
-
- 1、开启USB调试模式
-2、使用数据线将手机连接到电脑上
-3、点击启动按钮
-
-无线访问失败请确认IP地址是否正确
-若IP地址正确仍无法使用,请尝试
-若以上操作后仍无法使用,请提交
-
-
- MiddleLeft
-
-
- uiLabel1
-
-
- Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 8
-
-
- 微软雅黑, 12pt
-
-
- 203, 19
-
-
- 1, 1
-
-
- 28, 0, 0, 0
-
-
- 145, 51
-
-
- 0
-
-
- 启动
-
-
- btnStart
-
-
- Sunny.UI.UISymbolButton, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
-
- tabHome
-
-
- 9
-
-
- 微软雅黑, 12pt
-
-
- 206, 229
-
-
- 0, 0, 0, 0
-
-
+
63, 0
-
+
0, 0, 30, 2
-
- 159, 29
+
+ 99, 29
-
- 28
+
+ 27
-
- comboIp
+
+ 帧数限制
-
+
+ comboMaxFPS
+
+
Sunny.UI.UIComboBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
-
- tabHome
+
+ tabSetting
-
- 10
+
+ 6
True
@@ -1517,6 +977,51 @@
0
+
+ 微软雅黑, 11pt
+
+
+ Ctrl
+
+
+ Ctrl + Alt
+
+
+ Alt
+
+
+ 207, 5
+
+
+ 4, 5, 4, 5
+
+
+ 1, 1
+
+
+ 0, 32, 0, 0
+
+
+ 190, 114
+
+
+ 25
+
+
+ 快捷键( )
+
+
+ rbtnShortcuts
+
+
+ Sunny.UI.UIRadioButtonGroup, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ tabSetting
+
+
+ 7
+
微软雅黑, 12pt
@@ -1643,6 +1148,42 @@
3
+
+ 微软雅黑, 11pt
+
+
+ 9, 5
+
+
+ 4, 5, 4, 5
+
+
+ 1, 1
+
+
+ 0, 32, 0, 0
+
+
+ 190, 114
+
+
+ 22
+
+
+ 窗口大小
+
+
+ uiGroupBox1
+
+
+ Sunny.UI.UIGroupBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ tabSetting
+
+
+ 8
+
微软雅黑, 11pt
@@ -1973,6 +1514,153 @@
9
+
+ 微软雅黑, 11pt
+
+
+ 9, 129
+
+
+ 4, 5, 4, 5
+
+
+ 1, 1
+
+
+ 0, 32, 0, 0
+
+
+ 586, 110
+
+
+ 3
+
+
+ 其他设置
+
+
+ cbxOtherSetting
+
+
+ Sunny.UI.UIGroupBox, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ tabSetting
+
+
+ 9
+
+
+ True
+
+
+ 微软雅黑, 11pt
+
+
+ 440, 248
+
+
+ 69, 20
+
+
+ 16
+
+
+ 深色模式
+
+
+ MiddleLeft
+
+
+ lbDarkMode
+
+
+ Sunny.UI.UILabel, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ tabSetting
+
+
+ 10
+
+
+ 微软雅黑, 11pt
+
+
+ 515, 245
+
+
+ 1, 1
+
+
+ 75, 29
+
+
+ 17
+
+
+ switchDarkMode
+
+
+ Sunny.UI.UISwitch, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ tabSetting
+
+
+ 11
+
+
+ 2
+
+
+ 51, 0
+
+
+ 607, 278
+
+
+ 1
+
+
+ tabSetting
+
+
+ System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ navTab
+
+
+ 1
+
+
+ 微软雅黑, 12pt
+
+
+ 50, 50
+
+
+ 0, 63
+
+
+ 658, 278
+
+
+ 6
+
+
+ navTab
+
+
+ Sunny.UI.UITabControlMenu, SunnyUI, Version=3.0.3.0, Culture=neutral, PublicKeyToken=null
+
+
+ $this
+
+
+ 3
+
微软雅黑, 18pt, style=Bold
diff --git a/FreeControl/Program.cs b/FreeControl/Program.cs
index 15b3730..2f9227c 100644
--- a/FreeControl/Program.cs
+++ b/FreeControl/Program.cs
@@ -1,8 +1,5 @@
using FreeControl.Utils;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
using System.Windows.Forms;
namespace FreeControl
@@ -15,13 +12,11 @@ static class Program
[STAThread]
static void Main()
{
- AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
-
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
- Application.Run(new Trusteeship());
+ Application.Run(Singleton.Instance);
}
catch (Exception ex)
{
@@ -33,28 +28,5 @@ static void Main()
}
}
}
- private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
- {
- string dllName = new AssemblyName(args.Name).Name;
- Assembly assembly = null;
- switch (dllName)
- {
- case "SunnyUI":
- assembly = Assembly.Load(Properties.Resources.SunnyUI);
- break;
- case "SunnyUI.Common":
- assembly = Assembly.Load(Properties.Resources.SunnyUI_Common);
- break;
- //case "ICSharpCode.SharpZipLib":
- // assembly = Assembly.Load(Properties.Resources.ICSharpCode_SharpZipLib);
- // break;
- //case "Newtonsoft.Json":
- // assembly = Assembly.Load(Properties.Resources.Newtonsoft_Json);
- // break;
- default:
- break;
- }
- return assembly;
- }
}
}
diff --git a/FreeControl/Properties/AssemblyInfo.cs b/FreeControl/Properties/AssemblyInfo.cs
index 6d9893a..d6a1e84 100644
--- a/FreeControl/Properties/AssemblyInfo.cs
+++ b/FreeControl/Properties/AssemblyInfo.cs
@@ -33,5 +33,5 @@
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0")]
-[assembly: AssemblyFileVersion("1.6.7")]
-[assembly: AssemblyVersion("1.6.7")]
+[assembly: AssemblyFileVersion("1.6.8")]
+[assembly: AssemblyVersion("1.6.8")]
diff --git a/FreeControl/Properties/Resources.Designer.cs b/FreeControl/Properties/Resources.Designer.cs
index c7fecd4..a28ca09 100644
--- a/FreeControl/Properties/Resources.Designer.cs
+++ b/FreeControl/Properties/Resources.Designer.cs
@@ -103,30 +103,30 @@ internal static System.Drawing.Bitmap shortcut_en {
///
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
///
- internal static System.Drawing.Bitmap shortcut_zh {
+ internal static System.Drawing.Bitmap shortcut_en_dark {
get {
- object obj = ResourceManager.GetObject("shortcut_zh", resourceCulture);
+ object obj = ResourceManager.GetObject("shortcut_en_dark", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
///
- /// 查找 System.Byte[] 类型的本地化资源。
+ /// 查找 System.Drawing.Bitmap 类型的本地化资源。
///
- internal static byte[] SunnyUI {
+ internal static System.Drawing.Bitmap shortcut_zh {
get {
- object obj = ResourceManager.GetObject("SunnyUI", resourceCulture);
- return ((byte[])(obj));
+ object obj = ResourceManager.GetObject("shortcut_zh", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
}
}
///
- /// 查找 System.Byte[] 类型的本地化资源。
+ /// 查找 System.Drawing.Bitmap 类型的本地化资源。
///
- internal static byte[] SunnyUI_Common {
+ internal static System.Drawing.Bitmap shortcut_zh_dark {
get {
- object obj = ResourceManager.GetObject("SunnyUI_Common", resourceCulture);
- return ((byte[])(obj));
+ object obj = ResourceManager.GetObject("shortcut_zh_dark", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
}
}
}
diff --git a/FreeControl/Properties/Resources.resx b/FreeControl/Properties/Resources.resx
index 6302777..6ebc932 100644
--- a/FreeControl/Properties/Resources.resx
+++ b/FreeControl/Properties/Resources.resx
@@ -128,15 +128,15 @@
..\Resources\scrcpy-win64-v2.3.1.zip;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- ..\Resources\shortcut_en.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+ ..\Resources\shortcut_en.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\shortcut_zh.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\shortcut_en_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\SunnyUI.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\shortcut_zh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\SunnyUI.Common.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\shortcut_zh_dark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
\ No newline at end of file
diff --git a/FreeControl/Resources/SunnyUI.Common.dll b/FreeControl/Resources/SunnyUI.Common.dll
deleted file mode 100644
index f11b8f4d32610af1cab0fb185f6a09ea206e9bc9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 195072
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