├── DarkMode ├── dark.ico ├── light.ico ├── FodyWeavers.xml ├── Properties │ ├── Settings.settings │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── Program.cs ├── App.config ├── CmdCommit.cs ├── IPAddress.cs ├── app.manifest ├── Form1.Designer.cs ├── DarkMode.csproj ├── SwitchTime.cs ├── Form1.cs ├── Form2.cs ├── Language.cs ├── Form2.Designer.cs └── Form1.resx ├── LICENSE ├── DarkMode.sln ├── .gitattributes ├── README.md ├── README_zh-TW.md ├── README_JP.md ├── README_EN.md └── .gitignore /DarkMode/dark.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lunova-Studio/DarkMode/HEAD/DarkMode/dark.ico -------------------------------------------------------------------------------- /DarkMode/light.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lunova-Studio/DarkMode/HEAD/DarkMode/light.ico -------------------------------------------------------------------------------- /DarkMode/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /DarkMode/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /DarkMode/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | 5 | namespace DarkMode 6 | { 7 | internal static class Program 8 | { 9 | /// 10 | /// 应用程序的主入口点。 11 | /// 12 | [STAThread] 13 | static void Main() 14 | { 15 | Application.EnableVisualStyles(); 16 | Application.SetCompatibleTextRenderingDefault(false); 17 | Application.Run(new Form1()); 18 | } 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /DarkMode/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // 有关程序集的一般信息由以下 5 | // 控制。更改这些特性值可修改 6 | // 与程序集关联的信息。 7 | [assembly: AssemblyTitle("DarkMode")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("XiaoFans,Melon Studio")] 11 | [assembly: AssemblyProduct("DarkMode")] 12 | [assembly: AssemblyCopyright("本程序版权归 Melon Studio - XiaoFans 所有。")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // 将 ComVisible 设置为 false 会使此程序集中的类型 17 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 18 | //请将此类型的 ComVisible 特性设置为 true。 19 | [assembly: ComVisible(false)] 20 | 21 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 22 | [assembly: Guid("bdef146a-29d3-4ddd-b4ae-832e1ba596d9")] 23 | 24 | // 程序集的版本信息由下列四个值组成: 25 | // 26 | // 主版本 27 | // 次版本 28 | // 生成号 29 | // 修订号 30 | // 31 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 32 | //通过使用 "*",如下所示: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.6.5")] 35 | [assembly: AssemblyFileVersion("1.6.5")] 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Melon Studio 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /DarkMode.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.32112.339 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DarkMode", "DarkMode\DarkMode.csproj", "{BDEF146A-29D3-4DDD-B4AE-832E1BA596D9}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {BDEF146A-29D3-4DDD-B4AE-832E1BA596D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {BDEF146A-29D3-4DDD-B4AE-832E1BA596D9}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {BDEF146A-29D3-4DDD-B4AE-832E1BA596D9}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {BDEF146A-29D3-4DDD-B4AE-832E1BA596D9}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {FB8500CF-5720-4F55-917B-86553413CCC9} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /DarkMode/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DarkMode.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DarkMode/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /DarkMode/CmdCommit.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.IO; 4 | 5 | namespace DarkMode 6 | { 7 | internal class CmdCommit 8 | { 9 | public static string WallpaperEnginePath() 10 | { 11 | try 12 | { 13 | string wallpaperEnginePath = Registry.GetValue("HKEY_CURRENT_USER\\Software\\WallpaperEngine", "installPath", "").ToString(); 14 | if (File.Exists(wallpaperEnginePath)) 15 | { 16 | return wallpaperEnginePath; 17 | } 18 | return "false"; 19 | } 20 | catch 21 | { 22 | return "false"; 23 | } 24 | 25 | } 26 | 27 | public static string WallpaperPath() 28 | { 29 | string wallpaperEnginePath = WallpaperEnginePath(); 30 | if(wallpaperEnginePath == "false") 31 | { 32 | return Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 33 | } 34 | string workshop = wallpaperEnginePath.Substring(0, wallpaperEnginePath.IndexOf("\\common")) + @"\workshop\content"; 35 | return workshop; 36 | } 37 | 38 | public static void CmdCommandLight(string mingling) 39 | { 40 | RegistryKey key; 41 | key = Registry.CurrentUser.OpenSubKey(@"Software\WallpaperEngine", true); 42 | string s = key.GetValue("installPath").ToString(); 43 | 44 | string zhilin = "\"" + s + "\"" + " -control openWallpaper -file " + "\"" + mingling + "\""; 45 | //执行cmd命令 46 | System.Diagnostics.Process process = new System.Diagnostics.Process() 47 | { 48 | StartInfo = 49 | { 50 | FileName = "cmd.exe", 51 | UseShellExecute = false, 52 | RedirectStandardInput = true, 53 | RedirectStandardOutput = true, 54 | RedirectStandardError = true, 55 | CreateNoWindow = true, 56 | } 57 | }; 58 | process.Start(); 59 | process.StandardInput.WriteLine(zhilin); 60 | process.StandardInput.WriteLine("exit"); 61 | process.StandardInput.AutoFlush = true; 62 | process.WaitForExit(); 63 | 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /DarkMode/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DarkMode.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DarkMode.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 重写当前线程的 CurrentUICulture 属性,对 56 | /// 使用此强类型资源类的所有资源查找执行重写。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 本仓库已进入只读模式,点击右侧链接转到DarkMode2仓库,https://github.com/Melon-Studio/DarkMode2 2 | # 🌙DarkMode 3 | 4 | ![](https://shields.io/badge/license-MIT-green) ![](https://img.shields.io/github/stars/Melon-Studio/DarkMode) ![](https://img.shields.io/github/issues/Melon-Studio/DarkMode) ![](https://img.shields.io/github/forks/Melon-Studio/DarkMode) 5 | 6 | 中文简体(zh-CN) | [中文繁體(zh-TW)](README_zh-TW.md) | [English(en-US)](README_EN.md) | [日本語(ja-JP)](README_JP.md) 7 | 8 | ## 📂介绍 9 | 10 | DarkMode是在 Windows11 系统下运行,提供自动切换深色模式的软件,使用 C# 编写。 11 | 12 | 13 | 14 | ## 🧡优势 15 | 16 | 实时更改——相较于市面上的使用任务计划来实现此功能,我认为该方法是不可取的,如果你开机处于这个时间段内时,任务计划不会去执行此次任务,所以实时就是本软件的一大特点。 17 | 18 | 体量小占用少——软件使用C# .NET Framework 4.7.2开发,软件仅有不到1MB大小,内存占用只有10MB左右,做到真正的轻量。 19 | 20 | 开机自启——软件可以设置开机自启,保证每次开机都会正常运行,服务用户,不想使用时可以随时关闭。 21 | 22 | 多语言支持——软件支持三个国家四种语言,简体中文、繁体中文、日语和英语。 23 | 24 | Wallpaper Engine壁纸切换——软件不仅支持切换原生壁纸,还可以切换Wallpaper Engine壁纸,帮助请查阅Wiki。 25 | 26 | 27 | 28 | ## 📀运行环境 29 | 30 | 操作系统:Windows 11 31 | 32 | 操作系统位数:x64 33 | 34 | 必要框架:.NET Framework 4.7.2 35 | 36 | 如果系统没有框架,请[点此安装](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-web-installer) 37 | 38 | 下载:[点击此处或者右侧Release](https://github.com/Melon-Studio/DarkMode/releases) 39 | 40 | 41 | 42 | ## 🎉贡献 43 | 44 | 1. Fork本仓库代码 45 | 2. 本地执行Git命令: 46 | 47 | ```shell 48 | git clone https://github.com/xxxxxxx/DarkMode.git 49 | ``` 50 | 51 | 3. 使用Visual Studio启动项目 52 | 4. 编写代码 53 | 5. 提交PR 54 | 55 | 56 | 57 | ## 🧷版权与许可 58 | 59 | 本开源项目遵循国际 MIT 开源协议,具体内容请详细阅读开源许可证 60 | 61 | ``` 62 | MIT License 63 | 64 | Copyright (c) 2022 Melon Studio 65 | 66 | Permission is hereby granted, free of charge, to any person obtaining a copy 67 | of this software and associated documentation files (the "Software"), to deal 68 | in the Software without restriction, including without limitation the rights 69 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 70 | copies of the Software, and to permit persons to whom the Software is 71 | furnished to do so, subject to the following conditions: 72 | 73 | The above copyright notice and this permission notice shall be included in all 74 | copies or substantial portions of the Software. 75 | 76 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 77 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 78 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 79 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 80 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 81 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 82 | SOFTWARE. 83 | ``` 84 | 85 | 本项目使用第三方库: Costura.Fody ,作者:geertvanhorrik,simoncropp,开源许可证:MIT 86 | 87 | 88 | 89 | ## 📶趋势 90 | 91 | 92 | [![Star History Chart](https://api.star-history.com/svg?repos=Melon-Studio/DarkMode&type=Date)](https://star-history.com/#Melon-Studio/DarkMode) 93 | 94 | ## 🌞鸣谢 95 | 96 | > 特别感谢Microsoft为广大开发者提供的免费IDE:Visual Studio 97 | 98 | ![](https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg) 99 | -------------------------------------------------------------------------------- /DarkMode/IPAddress.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json.Linq; 2 | using System.IO; 3 | using System.Net; 4 | using System.Text; 5 | 6 | namespace DarkMode 7 | { 8 | internal class IPAddress 9 | { 10 | public string IP() 11 | { 12 | try 13 | { 14 | string url = "https://www.ip.cn/api/index?ip=&type=0"; 15 | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 16 | request.Method = "GET"; 17 | request.ContentType = "application/json;charset=UTF-8"; 18 | request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"; 19 | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 20 | Stream myResponseStream = response.GetResponseStream(); 21 | StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); 22 | string retString = myStreamReader.ReadToEnd(); 23 | myStreamReader.Close(); 24 | myResponseStream.Close(); 25 | response.Close(); 26 | JObject json = JObject.Parse(retString); 27 | string ip = (string)json["ip"]; 28 | return ip; 29 | } 30 | catch { } 31 | return "127.0.0.1"; 32 | } 33 | 34 | public string Address() 35 | { 36 | string url = "https://www.ip.cn/api/index?ip=&type=0"; 37 | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 38 | request.Method = "GET"; 39 | request.ContentType = "application/json;charset=UTF-8"; 40 | request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"; 41 | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 42 | Stream myResponseStream = response.GetResponseStream(); 43 | StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); 44 | string retString = myStreamReader.ReadToEnd(); 45 | myStreamReader.Close(); 46 | myResponseStream.Close(); 47 | response.Close(); 48 | JObject json = JObject.Parse(retString); 49 | string address = (string)json["address"]; 50 | address = address.Replace("移动", ""); 51 | address = address.Replace("电信", ""); 52 | address = address.Replace("联通", ""); 53 | address = address.Replace("铁通", ""); 54 | address = address.Replace("鹏博士", ""); 55 | address = address.Replace("教育网", ""); 56 | address = address.Replace("长城", ""); 57 | address = address.Replace(" ", ""); 58 | address = address.Replace("省", ""); 59 | address = address.Replace("市", ""); 60 | address = address.Replace("区", ""); 61 | address = address.Replace("县", ""); 62 | return address; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /README_zh-TW.md: -------------------------------------------------------------------------------- 1 | # 🌙DarkMode 2 | 3 | ![](https://shields.io/badge/license-MIT-green) ![](https://img.shields.io/github/stars/Melon-Studio/DarkMode) ![](https://img.shields.io/github/issues/Melon-Studio/DarkMode) ![](https://img.shields.io/github/forks/Melon-Studio/DarkMode) 4 | 5 | [中文简体(zh-CN)](README.md) | 中文繁體(zh-TW) | [English(en-US)](README_EN.md) | [日本語(ja-JP)](README_JP.md) 6 | 7 | 註明:因大陸普通用語和台灣地區用語存在差異,所以部分詞彙翻譯使用機器翻譯 8 | 9 | ## 📂介紹 10 | 11 | DarkMode是在 Windows11 系統下運行,提供自動切換深色模式的軟體,使用 C# 編寫。 12 | 13 | 14 | 15 | ## 🧡優勢 16 | 17 | 實時更改——相較於市面上的使用任務計劃來實現此功能,我認為該方法是不可取的,如果你開機處於這個時間段內時,任務計劃不會去執行此次任務,所以實時就是本軟體的一大特點。 18 | 19 | 體量小占用少——軟體使用C# .NET Framework 4.7.2開發,軟體僅有不到1MB大小,內存佔用只有10MB左右,做到真正的輕量。 20 | 21 | 開機自啟——軟體可以設置開機自啟,保證每次開機都會正常運行,服務用戶,不想使用時可以隨時關閉。 22 | 23 | 多語言支持——軟體支持三個國家四種語言,簡體中文、繁體中文、日語和英語。 24 | 25 | Wallpaper Engine壁紙切換——軟體不僅支持切換原生壁紙,還可以切換Wallpaper Engine壁紙,幫助請查閱Wiki。 26 | 27 | 28 | 29 | ## 📀運行環境 30 | 31 | 操作系統:Windows 11 32 | 33 | 操作系統位數:x64 34 | 35 | 必要框架:.NET Framework 4.7.2 36 | 37 | 如果系統沒有框架,請[點此安裝](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-web-installer) 38 | 39 | 下載:[點擊此處或者右側Release](https://github.com/Melon-Studio/DarkMode/releases) 40 | 41 | 42 | 43 | ## 🎉貢獻 44 | 45 | 1. Fork本倉庫代碼 46 | 2. 本地執行Git命令: 47 | 48 | ```shell 49 | git clone https://github.com/xxxxxxx/DarkMode.git 50 | ``` 51 | 52 | 3. 使用Visual Studio啟動項目 53 | 4. 編寫代碼 54 | 5. 提交PR 55 | 56 | 57 | 58 | ## 🧷版權與許可 59 | 60 | 本開源項目遵循國際 MIT 開源協議,具體內容請詳細閱讀開源許可證 61 | 62 | ``` 63 | MIT License 64 | 65 | Copyright (c) 2022 Melon Studio 66 | 67 | Permission is hereby granted, free of charge, to any person obtaining a copy 68 | of this software and associated documentation files (the "Software"), to deal 69 | in the Software without restriction, including without limitation the rights 70 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 71 | copies of the Software, and to permit persons to whom the Software is 72 | furnished to do so, subject to the following conditions: 73 | 74 | The above copyright notice and this permission notice shall be included in all 75 | copies or substantial portions of the Software. 76 | 77 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 78 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 79 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 80 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 81 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 82 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 83 | SOFTWARE. 84 | ``` 85 | 86 | 本項目使用第三方庫: Costura.Fody ,作者:geertvanhorrik,simoncropp,開源許可證:MIT 87 | 88 | 89 | 90 | ## 📶趨勢 91 | 92 | [![Star History Chart](https://api.star-history.com/svg?repos=Melon-Studio/DarkMode&type=Date)](https://star-history.com/#Melon-Studio/DarkMode) 93 | 94 | 95 | 96 | ## 🌞鳴謝 97 | 98 | > 特別感謝Microsoft為廣大開發者提供的免費IDE:Visual Studio 99 | 100 | ![](https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg) 101 | -------------------------------------------------------------------------------- /DarkMode/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 50 | 58 | 59 | 73 | -------------------------------------------------------------------------------- /README_JP.md: -------------------------------------------------------------------------------- 1 | # 🌙DarkMode 2 | 3 | ![](https://shields.io/badge/license-MIT-green) ![](https://img.shields.io/github/stars/Melon-Studio/DarkMode) ![](https://img.shields.io/github/issues/Melon-Studio/DarkMode) ![](https://img.shields.io/github/forks/Melon-Studio/DarkMode) 4 | 5 | [中文简体(zh-CN)](README.md) | [中文繁體(zh-TW)](README_zh-TW.md) | [English(en-US)](README_EN.md) | 日本語(ja-JP) 6 | 7 | 注:一部の翻訳では機械翻訳を使用しています 8 | 9 | ## 📂説明 10 | 11 | DarkModeは、Windows 11で実行され、C#で記述されたダークモードの自動切り替えを提供するソフトウェアです。 12 | 13 | 14 | 15 | ## 🧡利点 16 | 17 | リアルタイムの変更——この機能を実現するためにタスクスケジューラを使用することはお勧めしません。コンピュータの電源を入れた後の夜間、タスクスケジューラはライトのテーマを切り替えないため、このソフトウェアの主な機能はリアルタイムです。 18 | 19 | 軽量——ソフトウェアはC#.NET Framework 4.7.2を使用して開発されており、ソフトウェアROMは1MB未満、RAMは約10 MBしか占有しないため、非常に軽量です。 20 | 21 | 起動時にセルフスタート——ソフトウェアを起動時にセルフスタートするように設定して、電源を入れるたびに正常に実行され、ユーザーにサービスを提供し、使用したくないときにソフトウェアを閉じることができます。 22 | 23 | 多言語サポート——簡体字中国語、繁体字中国語、日本語、英語の3か国で4つの言語をサポートしています。 24 | 25 | Wallpaper Engine壁紙の切り替え——このソフトウェアは、ネイティブの壁紙の切り替えだけでなく、Wallpaper Engineの壁紙もサポートしています。ヘルプについてはWikiを参照してください。 26 | 27 | 28 | 29 | ## 📀動作環境 30 | 31 | オペレーティング·システム:Windows 11 32 | 33 | オペレーティング·システムのビット:x64 34 | 35 | ランフレーム:.NET Framework 4.7.2 36 | 37 | システムにフレームワークがない場合は、[ここをクリックしてインストール](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-web-installer)してください。 38 | 39 | ダウンロード:[ここをクリックするか、右側のリリース]((https://github.com/Melon-Studio/DarkMode/releases) 40 | 41 | 42 | 43 | ## 🎉貢献する 44 | 45 | 1. この倉庫のコードをフォークします 46 | 2. Gitコマンドをローカルで実行します。 47 | 48 | ```shell 49 | git clone https://github.com/xxxxxxx/DarkMode.git 50 | ``` 51 | 52 | 3. VisualStudioでプロジェクトを開始します 53 | 4. コードを書く 54 | 5. PRを送信する 55 | 56 | 57 | 58 | ## 🧷著作権とライセンス 59 | 60 | このオープンソースプロジェクトは、国際MITオープンソース契約に準拠しています。詳細については、オープンソースライセンスをお読みください。 61 | 62 | ``` 63 | MIT License 64 | 65 | Copyright (c) 2022 Melon Studio 66 | 67 | Permission is hereby granted, free of charge, to any person obtaining a copy 68 | of this software and associated documentation files (the "Software"), to deal 69 | in the Software without restriction, including without limitation the rights 70 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 71 | copies of the Software, and to permit persons to whom the Software is 72 | furnished to do so, subject to the following conditions: 73 | 74 | The above copyright notice and this permission notice shall be included in all 75 | copies or substantial portions of the Software. 76 | 77 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 78 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 79 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 80 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 81 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 82 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 83 | SOFTWARE. 84 | ``` 85 | 86 | このプロジェクトでは、サードパーティのライブラリファイルを使用します:Costura.Fodyパッケージ、パッケージ作成者:geertvanhorrik、simoncropp、オープンソースライセンス:MIT 87 | 88 | 89 | 90 | ## 📶トレンド 91 | 92 | [![Star History Chart](https://api.star-history.com/svg?repos=Melon-Studio/DarkMode&type=Date)](https://star-history.com/#Melon-Studio/DarkMode) 93 | 94 | 95 | 96 | ## 🌞ありがとう 97 | 98 | >開発者向けの無料IDEを提供してくれたMicrosoftに特に感謝します:Visual Studio 99 | 100 | ![](https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg) 101 | -------------------------------------------------------------------------------- /README_EN.md: -------------------------------------------------------------------------------- 1 | # 🌙DarkMode 2 | 3 | ![](https://shields.io/badge/license-MIT-green) ![](https://img.shields.io/github/stars/Melon-Studio/DarkMode) ![](https://img.shields.io/github/issues/Melon-Studio/DarkMode) ![](https://img.shields.io/github/forks/Melon-Studio/DarkMode) 4 | 5 | [中文简体(zh-CN)](README.md) | [中文繁體(zh-TW)](README_zh-TW.md) | English(en-US) | [日本語(ja-JP)](README_JP.md) 6 | 7 | Note: Some translations use machine translation. 8 | 9 | ## 📂Discription 10 | 11 | DarkMode is a software that runs under Windows 11 and provides automatic switching of dark mode, written in C#. 12 | 13 | 14 | 15 | ## 🧡Software advantages 16 | 17 | real-time changes——Using the Task Scheduler to achieve this functionality is not desirable. If you are in the dark theme time period after booting, the task plan will not execute this task, so you will not switch the dark theme, so real-time change is a major feature of this software. 18 | 19 | Lightweight——The software is developed using the C# language .NET Framework 4.7.2 framework. The software only takes up less than 1MB of ROM and only about 10MB of RAM, making it truly lightweight software. 20 | 21 | Automatic start——The software can be set to start automatically when it is turned on, to ensure that it will run normally every time it is turned on, serve users, and can be turned off at any time when you don't want to use it. 22 | 23 | Multilingual Support——The software supports four languages in three countries, Simplified Chinese, Traditional Chinese, Japanese and English. 24 | 25 | Wallpaper Engine wallpaper switching——The software not only supports switching native wallpapers, but also can switch Wallpaper Engine wallpapers, please refer to Wiki for help. 26 | 27 | 28 | 29 | ## 📀Operating environment 30 | 31 | System OS: Windows 11 32 | 33 | System Bits: x64 34 | 35 | Run frame: .NET Framework 4.7.2 36 | 37 | If your computer is not running the framework, [click here](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-web-installer) to install. 38 | 39 | Download: [click here to install](https://github.com/Melon-Studio/DarkMode/releases) 40 | 41 | 42 | 43 | ## 🎉 Contribute 44 | 45 | 1. Fork the code of this warehouse 46 | 2. Execute the Git command locally: 47 | 48 | ```shell 49 | git clone https://github.com/xxxxxxx/DarkMode.git 50 | ```` 51 | 52 | 3. Start the project with Visual Studio 53 | 4. Write the code 54 | 5. Submit PR 55 | 56 | 57 | 58 | ## 🧷Copyright and License 59 | 60 | This open source project follows the international MIT open source agreement, please read the open source license for details. 61 | 62 | ```` 63 | MIT License 64 | 65 | Copyright (c) 2022 Melon Studio 66 | 67 | Permission is hereby granted, free of charge, to any person obtaining a copy 68 | of this software and associated documentation files (the "Software"), to deal 69 | in the Software without restriction, including without limitation the rights 70 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 71 | copies of the Software, and to permit persons to whom the Software is 72 | furnished to do so, subject to the following conditions: 73 | 74 | The above copyright notice and this permission notice shall be included in all 75 | copies or substantial portions of the Software. 76 | 77 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 78 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 79 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 80 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 81 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 82 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 83 | SOFTWARE. 84 | ```` 85 | 86 | This project uses third-party library files: Costura.Fody package, package author: geertvanhorrik, simoncropp, open source license: MIT 87 | 88 | 89 | ## 📶Trends 90 | 91 | 92 | [![Star History Chart](https://api.star-history.com/svg?repos=Melon-Studio/DarkMode&type=Date)](https://star-history.com/#Melon-Studio/DarkMode) 93 | 94 | 95 | ## 🌞Thanks 96 | 97 | > Special thanks to Microsoft for the free IDE for developers: Visual Studio 98 | 99 | ![](https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg) 100 | -------------------------------------------------------------------------------- /DarkMode/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace DarkMode 2 | { 3 | partial class Form1 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要修改 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 33 | this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); 34 | this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); 35 | this.SettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 36 | this.SelfOnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 37 | this.AboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 38 | this.ExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 39 | this.timer1 = new System.Windows.Forms.Timer(this.components); 40 | this.contextMenuStrip1.SuspendLayout(); 41 | this.SuspendLayout(); 42 | // 43 | // notifyIcon1 44 | // 45 | this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; 46 | resources.ApplyResources(this.notifyIcon1, "notifyIcon1"); 47 | this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick); 48 | // 49 | // contextMenuStrip1 50 | // 51 | this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 52 | this.SettingsToolStripMenuItem, 53 | this.SelfOnToolStripMenuItem, 54 | this.AboutToolStripMenuItem, 55 | this.ExitToolStripMenuItem}); 56 | this.contextMenuStrip1.Name = "contextMenuStrip1"; 57 | resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1"); 58 | // 59 | // SettingsToolStripMenuItem 60 | // 61 | this.SettingsToolStripMenuItem.Name = "SettingsToolStripMenuItem"; 62 | resources.ApplyResources(this.SettingsToolStripMenuItem, "SettingsToolStripMenuItem"); 63 | this.SettingsToolStripMenuItem.Click += new System.EventHandler(this.设置ToolStripMenuItem_Click); 64 | // 65 | // SelfOnToolStripMenuItem 66 | // 67 | this.SelfOnToolStripMenuItem.Name = "SelfOnToolStripMenuItem"; 68 | resources.ApplyResources(this.SelfOnToolStripMenuItem, "SelfOnToolStripMenuItem"); 69 | this.SelfOnToolStripMenuItem.Click += new System.EventHandler(this.开机自启ToolStripMenuItem_Click); 70 | // 71 | // AboutToolStripMenuItem 72 | // 73 | this.AboutToolStripMenuItem.Name = "AboutToolStripMenuItem"; 74 | resources.ApplyResources(this.AboutToolStripMenuItem, "AboutToolStripMenuItem"); 75 | this.AboutToolStripMenuItem.Click += new System.EventHandler(this.关于ToolStripMenuItem_Click); 76 | // 77 | // ExitToolStripMenuItem 78 | // 79 | this.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem"; 80 | resources.ApplyResources(this.ExitToolStripMenuItem, "ExitToolStripMenuItem"); 81 | this.ExitToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click); 82 | // 83 | // timer1 84 | // 85 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick); 86 | // 87 | // Form1 88 | // 89 | resources.ApplyResources(this, "$this"); 90 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 91 | this.Name = "Form1"; 92 | this.Opacity = 0D; 93 | this.Load += new System.EventHandler(this.Form1_Load); 94 | this.contextMenuStrip1.ResumeLayout(false); 95 | this.ResumeLayout(false); 96 | 97 | } 98 | 99 | #endregion 100 | 101 | private System.Windows.Forms.NotifyIcon notifyIcon1; 102 | private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; 103 | private System.Windows.Forms.ToolStripMenuItem AboutToolStripMenuItem; 104 | private System.Windows.Forms.ToolStripMenuItem SelfOnToolStripMenuItem; 105 | private System.Windows.Forms.ToolStripMenuItem ExitToolStripMenuItem; 106 | private System.Windows.Forms.Timer timer1; 107 | private System.Windows.Forms.ToolStripMenuItem SettingsToolStripMenuItem; 108 | } 109 | } 110 | 111 | -------------------------------------------------------------------------------- /DarkMode/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /DarkMode/DarkMode.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {BDEF146A-29D3-4DDD-B4AE-832E1BA596D9} 8 | WinExe 9 | DarkMode 10 | DarkMode 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | false 16 | publish\ 17 | true 18 | Disk 19 | false 20 | Foreground 21 | 7 22 | Days 23 | false 24 | false 25 | false 26 | zh-CN 27 | DarkMode - 吾爱破解论坛首发 28 | XiaoFans 29 | false 30 | true 31 | 2 32 | 1.0.0.%2a 33 | false 34 | true 35 | true 36 | 37 | 38 | 39 | 40 | x64 41 | true 42 | full 43 | false 44 | bin\Debug\ 45 | DEBUG;TRACE 46 | prompt 47 | 4 48 | 49 | 50 | x64 51 | pdbonly 52 | true 53 | bin\Release\ 54 | TRACE 55 | prompt 56 | 4 57 | 58 | 59 | 60 | 5D2CA5BDF32C2502C792966EB3D6AAFB6B1EB40B 61 | 62 | 63 | DarkMode_TemporaryKey.pfx 64 | 65 | 66 | false 67 | 68 | 69 | true 70 | 71 | 72 | LocalIntranet 73 | 74 | 75 | dark.ico 76 | 77 | 78 | app.manifest 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | Form 106 | 107 | 108 | Form1.cs 109 | 110 | 111 | Form 112 | 113 | 114 | Form2.cs 115 | 116 | 117 | 118 | 119 | 120 | Form1.cs 121 | 122 | 123 | Form2.cs 124 | 125 | 126 | ResXFileCodeGenerator 127 | Resources.Designer.cs 128 | Designer 129 | 130 | 131 | True 132 | Resources.resx 133 | 134 | 135 | 136 | 137 | SettingsSingleFileGenerator 138 | Settings.Designer.cs 139 | 140 | 141 | True 142 | Settings.settings 143 | True 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | False 152 | Microsoft .NET Framework 4.7.2 %28x86 和 x64%29 153 | true 154 | 155 | 156 | False 157 | .NET Framework 3.5 SP1 158 | false 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 5.7.0 171 | runtime; build; native; contentfiles; analyzers; buildtransitive 172 | all 173 | 174 | 175 | 7.1.2 176 | 177 | 178 | 13.0.1 179 | 180 | 181 | 14332.0.2 182 | 183 | 184 | 1.3.1 185 | 186 | 187 | 4.5.2 188 | 189 | 190 | 4.5.0 191 | 192 | 193 | 4.3.0 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /DarkMode/SwitchTime.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DarkMode 4 | { 5 | /// 6 | /// 日出日落时间类 7 | /// 8 | public static class SunTimes 9 | { 10 | #region 公共方法 11 | /// 12 | /// 计算日长 13 | /// 14 | /// 日期 15 | /// 经度 16 | /// 纬度 17 | /// 日长 18 | /// 19 | /// 注:日期最小为2000.1.1号 20 | /// 21 | public static double GetDayLength(DateTime date, double longitude, double latitude) 22 | { 23 | double result = DayLen(date.Year, date.Month, date.Day, longitude, latitude, -35.0 / 60.0, 1); 24 | return result; 25 | } 26 | 27 | /// 28 | /// 计算日出日没时间 29 | /// 30 | /// 日期 31 | /// 经度 32 | /// 纬度 33 | /// 日落日出时间 34 | /// 35 | /// 注:日期最小为2000.1.1号 36 | /// 37 | public static SunTimeResult GetSunTime(DateTime date, double longitude, double latitude) 38 | { 39 | double start = 0; 40 | double end = 0; 41 | SunRiset(date.Year, date.Month, date.Day, longitude, latitude, -35.0 / 60.0, 1, ref start, ref end); 42 | DateTime sunrise = ToLocalTime(date, start); 43 | DateTime sunset = ToLocalTime(date, end); 44 | return new SunTimeResult(sunrise, sunset); 45 | } 46 | #endregion 47 | 48 | #region 私有方法 49 | 50 | #region 时间转换 51 | private static DateTime ToLocalTime(DateTime time, double utTime) 52 | { 53 | int hour = Convert.ToInt32(Math.Floor(utTime)); 54 | double temp = utTime - hour; 55 | hour += 8;//转换为东8区北京时间 56 | temp = temp * 60; 57 | int minute = Convert.ToInt32(Math.Floor(temp)); 58 | try 59 | { 60 | return new DateTime(time.Year, time.Month, time.Day, hour, minute, 0); 61 | } 62 | catch 63 | { 64 | return new DateTime(time.Year, time.Month, time.Day, 0, 0, 0); 65 | } 66 | } 67 | #endregion 68 | 69 | #region 与日出日落时间相关计算 70 | private static double DayLen(int year, int month, int day, double lon, double lat, 71 | double altit, int upper_limb) 72 | { 73 | double d, /* Days since 2000 Jan 0.0 (negative before) */ 74 | obl_ecl, /* Obliquity (inclination) of Earth\'s axis */ 75 | //黄赤交角,在2000.0历元下国际规定为23度26分21.448秒,但有很小的时间演化。 76 | 77 | sr, /* Solar distance, astronomical units */ 78 | slon, /* True solar longitude */ 79 | sin_sdecl, /* Sine of Sun\'s declination */ 80 | //太阳赤纬的正弦值。 81 | cos_sdecl, /* Cosine of Sun\'s declination */ 82 | sradius, /* Sun\'s apparent radius */ 83 | t; /* Diurnal arc */ 84 | 85 | /* Compute d of 12h local mean solar time */ 86 | d = Days_since_2000_Jan_0(year, month, day) + 0.5 - lon / 360.0; 87 | 88 | /* Compute obliquity of ecliptic (inclination of Earth\'s axis) */ 89 | obl_ecl = 23.4393 - 3.563E-7 * d; 90 | //这个黄赤交角时变公式来历复杂,很大程度是经验性的,不必追究。 91 | 92 | /* Compute Sun\'s position */ 93 | slon = 0.0; 94 | sr = 0.0; 95 | Sunpos(d, ref slon, ref sr); 96 | 97 | /* Compute sine and cosine of Sun\'s declination */ 98 | sin_sdecl = Sind(obl_ecl) * Sind(slon); 99 | cos_sdecl = Math.Sqrt(1.0 - sin_sdecl * sin_sdecl); 100 | //用球面三角学公式计算太阳赤纬。 101 | 102 | /* Compute the Sun\'s apparent radius, degrees */ 103 | sradius = 0.2666 / sr; 104 | //视半径,同前。 105 | 106 | /* Do correction to upper limb, if necessary */ 107 | if (upper_limb != 0) 108 | altit -= sradius; 109 | 110 | /* Compute the diurnal arc that the Sun traverses to reach */ 111 | /* the specified altitide altit: */ 112 | //根据设定的地平高度判据计算周日弧长。 113 | double cost; 114 | cost = (Sind(altit) - Sind(lat) * sin_sdecl) / 115 | (Cosd(lat) * cos_sdecl); 116 | if (cost >= 1.0) 117 | t = 0.0; /* Sun always below altit */ 118 | //极夜。 119 | else if (cost <= -1.0) 120 | t = 24.0; /* Sun always above altit */ 121 | //极昼。 122 | else t = (2.0 / 15.0) * Acosd(cost); /* The diurnal arc, hours */ 123 | //周日弧换算成小时计。 124 | return t; 125 | 126 | } 127 | 128 | private static void Sunpos(double d, ref double lon, ref double r) 129 | { 130 | double M,//太阳的平均近点角,从太阳观察到的地球(=从地球看到太阳的)距近日点(近地点)的角度。 131 | w, //近日点的平均黄道经度。 132 | e, //地球椭圆公转轨道离心率。 133 | E, //太阳的偏近点角。计算公式见下面。 134 | 135 | x, y, 136 | v; //真近点角,太阳在任意时刻的真实近点角。 137 | 138 | 139 | M = Revolution(356.0470 + 0.9856002585 * d);//自变量的组成:2000.0时刻太阳黄经为356.0470度,此后每天约推进一度(360度/365天 140 | w = 282.9404 + 4.70935E-5 * d;//近日点的平均黄经。 141 | 142 | e = 0.016709 - 1.151E-9 * d;//地球公转椭圆轨道离心率的时间演化。以上公式和黄赤交角公式一样,不必深究。 143 | 144 | E = M + e * Radge * Sind(M) * (1.0 + e * Cosd(M)); 145 | x = Cosd(E) - e; 146 | y = Math.Sqrt(1.0 - e * e) * Sind(E); 147 | r = Math.Sqrt(x * x + y * y); 148 | v = Atan2d(y, x); 149 | lon = v + w; 150 | if (lon >= 360.0) 151 | lon -= 360.0; 152 | } 153 | 154 | private static void Sun_RA_dec(double d, ref double RA, ref double dec, ref double r) 155 | { 156 | double lon, obl_ecl, x, y, z; 157 | lon = 0.0; 158 | 159 | Sunpos(d, ref lon, ref r); 160 | //计算太阳的黄道坐标。 161 | 162 | x = r * Cosd(lon); 163 | y = r * Sind(lon); 164 | //计算太阳的直角坐标。 165 | 166 | obl_ecl = 23.4393 - 3.563E-7 * d; 167 | //黄赤交角,同前。 168 | 169 | z = y * Sind(obl_ecl); 170 | y = y * Cosd(obl_ecl); 171 | //把太阳的黄道坐标转换成赤道坐标(暂改用直角坐标)。 172 | 173 | RA = Atan2d(y, x); 174 | dec = Atan2d(z, Math.Sqrt(x * x + y * y)); 175 | //最后转成赤道坐标。显然太阳的位置是由黄道坐标方便地直接确定的,但必须转换到赤 176 | //道坐标里才能结合地球的自转确定我们需要的白昼长度。 177 | 178 | } 179 | /// 180 | /// 日出没时刻计算 181 | /// 182 | /// 年 183 | /// 月 184 | /// 日 185 | /// 186 | /// 187 | /// 188 | /// 189 | /// 日出时刻 190 | /// 日没时刻 191 | /// 太阳有出没现象,返回0 极昼,返回+1 极夜,返回-1 192 | private static int SunRiset(int year, int month, int day, double lon, double lat, 193 | double altit, int upper_limb, ref double trise, ref double tset) 194 | { 195 | double d, /* Days since 2000 Jan 0.0 (negative before) */ 196 | //以历元2000.0起算的日数。 197 | 198 | sr, /* Solar distance, astronomical units */ 199 | //太阳距离,以天文单位计算(约1.5亿公里)。 200 | 201 | sRA, /* Sun\'s Right Ascension */ 202 | //同前,太阳赤经。 203 | 204 | sdec, /* Sun\'s declination */ 205 | //太阳赤纬。 206 | 207 | sradius, /* Sun\'s apparent radius */ 208 | //太阳视半径,约16分(受日地距离、大气折射等诸多影响) 209 | 210 | t, /* Diurnal arc */ 211 | //周日弧,太阳一天在天上走过的弧长。 212 | 213 | tsouth, /* Time when Sun is at south */ 214 | sidtime; /* Local sidereal time */ 215 | //当地恒星时,即地球的真实自转周期。比平均太阳日(日常时间)长3分56秒。 216 | 217 | int rc = 0; /* Return cde from function - usually 0 */ 218 | 219 | /* Compute d of 12h local mean solar time */ 220 | d = Days_since_2000_Jan_0(year, month, day) + 0.5 - lon / 360.0; 221 | //计算观测地当日中午时刻对应2000.0起算的日数。 222 | 223 | /* Compute local sideral time of this moment */ 224 | sidtime = Revolution(GMST0(d) + 180.0 + lon); 225 | //计算同时刻的当地恒星时(以角度为单位)。以格林尼治为基准,用经度差校正。 226 | 227 | /* Compute Sun\'s RA + Decl at this moment */ 228 | sRA = 0.0; 229 | sdec = 0.0; 230 | sr = 0.0; 231 | Sun_RA_dec(d, ref sRA, ref sdec, ref sr); 232 | //计算同时刻太阳赤经赤纬。 233 | 234 | /* Compute time when Sun is at south - in hours UT */ 235 | tsouth = 12.0 - Rev180(sidtime - sRA) / 15.0; 236 | //计算太阳日的正午时刻,以世界时(格林尼治平太阳时)的小时计。 237 | 238 | /* Compute the Sun\'s apparent radius, degrees */ 239 | sradius = 0.2666 / sr; 240 | //太阳视半径。0.2666是一天文单位处的太阳视半径(角度)。 241 | 242 | /* Do correction to upper limb, if necessary */ 243 | if (upper_limb != 0) 244 | altit -= sradius; 245 | //如果要用上边缘,就要扣除一个视半径。 246 | 247 | /* Compute the diurnal arc that the Sun traverses to reach */ 248 | //计算周日弧。直接利用球面三角公式。如果碰到极昼极夜问题,同前处理。 249 | /* the specified altitide altit: */ 250 | 251 | double cost; 252 | cost = (Sind(altit) - Sind(lat) * Sind(sdec)) / 253 | (Cosd(lat) * Cosd(sdec)); 254 | if (cost >= 1.0) 255 | { 256 | rc = -1; 257 | t = 0.0; 258 | } 259 | else 260 | { 261 | if (cost <= -1.0) 262 | { 263 | rc = +1; 264 | t = 12.0; /* Sun always above altit */ 265 | } 266 | else 267 | t = Acosd(cost) / 15.0; /* The diurnal arc, hours */ 268 | } 269 | 270 | 271 | /* Store rise and set times - in hours UT */ 272 | trise = tsouth - t; 273 | tset = tsouth + t; 274 | 275 | return rc; 276 | } 277 | #endregion 278 | 279 | #region 辅助函数 280 | /// 281 | /// 历元2000.0,即以2000年第一天开端为计日起始(天文学以第一天为0日而非1日)。 282 | /// 它与UT(就是世界时,格林尼治平均太阳时)1999年末重合。 283 | /// 284 | /// 285 | /// 286 | /// 287 | /// 288 | private static long Days_since_2000_Jan_0(int y, int m, int d) 289 | { 290 | return (367L * (y) - ((7 * ((y) + (((m) + 9) / 12))) / 4) + ((275 * (m)) / 9) + (d) - 730530L); 291 | } 292 | 293 | private static double Revolution(double x) 294 | { 295 | return (x - 360.0 * Math.Floor(x * Inv360)); 296 | } 297 | 298 | private static double Rev180(double x) 299 | { 300 | return (x - 360.0 * Math.Floor(x * Inv360 + 0.5)); 301 | } 302 | 303 | private static double GMST0(double d) 304 | { 305 | double sidtim0; 306 | sidtim0 = Revolution((180.0 + 356.0470 + 282.9404) + 307 | (0.9856002585 + 4.70935E-5) * d); 308 | return sidtim0; 309 | } 310 | 311 | 312 | private static double Inv360 = 1.0 / 360.0; 313 | #endregion 314 | 315 | #region 度与弧度转换系数,为球面三角计算作准备 316 | private static double Sind(double x) 317 | { 318 | return Math.Sin(x * Degrad); 319 | } 320 | 321 | private static double Cosd(double x) 322 | { 323 | return Math.Cos(x * Degrad); 324 | } 325 | 326 | private static double Tand(double x) 327 | { 328 | return Math.Tan(x * Degrad); 329 | 330 | } 331 | 332 | private static double Atand(double x) 333 | { 334 | return Radge * Math.Atan(x); 335 | } 336 | 337 | private static double Asind(double x) 338 | { 339 | return Radge * Math.Asin(x); 340 | } 341 | 342 | private static double Acosd(double x) 343 | { 344 | return Radge * Math.Acos(x); 345 | } 346 | 347 | private static double Atan2d(double y, double x) 348 | { 349 | return Radge * Math.Atan2(y, x); 350 | 351 | } 352 | 353 | private static double Radge = 180.0 / Math.PI; 354 | private static double Degrad = Math.PI / 180.0; 355 | 356 | #endregion 357 | 358 | #endregion 359 | } 360 | 361 | /// 362 | /// 日出日落时间结果 363 | /// 364 | public class SunTimeResult 365 | { 366 | #region 构造与析构 367 | /// 368 | /// 构造函数 369 | /// 370 | /// 日出时间 371 | /// 日落时间 372 | public SunTimeResult(DateTime sunrise, DateTime sunset) 373 | { 374 | sunriseTime = sunrise; 375 | sunsetTime = sunset; 376 | } 377 | #endregion 378 | 379 | #region 属性定义 380 | /// 381 | /// 获取日出时间 382 | /// 383 | public DateTime SunriseTime 384 | { 385 | get 386 | { 387 | return sunriseTime; 388 | } 389 | } 390 | 391 | /// 392 | /// 获取日落时间 393 | /// 394 | public DateTime SunsetTime 395 | { 396 | get 397 | { 398 | return sunsetTime; 399 | } 400 | } 401 | #endregion 402 | 403 | 404 | #region 私成员 405 | private DateTime sunriseTime;//日出时间 406 | private DateTime sunsetTime;//日落时间 407 | #endregion 408 | } 409 | } 410 | -------------------------------------------------------------------------------- /DarkMode/Form1.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Management; 4 | using System.Windows.Forms; 5 | using System.Drawing; 6 | using Microsoft.Toolkit.Uwp.Notifications; 7 | 8 | namespace DarkMode 9 | { 10 | public partial class Form1 : Form 11 | { 12 | public Form1() 13 | { 14 | InitializeComponent(); 15 | this.WindowState = FormWindowState.Minimized; 16 | this.ShowInTaskbar = false; 17 | 18 | //注册表初始化 19 | try 20 | { 21 | RegistryKey pan; 22 | RegistryKey key; 23 | pan = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode"); 24 | 25 | if (pan == null) 26 | { 27 | key = Registry.CurrentUser.CreateSubKey(@"Software\DarkMode"); 28 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 29 | key.SetValue("startTime", "08:00"); 30 | key.SetValue("endTime", "19:00"); 31 | key.SetValue("Language", "zh-CN"); 32 | key.SetValue("SunRiseSet", "false"); 33 | key.SetValue("IsDark", "true"); 34 | key.SetValue("light_ys", ""); 35 | key.SetValue("light_we", ""); 36 | key.SetValue("dark_ys", ""); 37 | key.SetValue("dark_we", ""); 38 | key.SetValue("win_qs", "true"); 39 | key.SetValue("app_qs", "true"); 40 | key.SetValue("win_ss", "false"); 41 | key.SetValue("app_ss", "false"); 42 | key.Close();//关闭连接 43 | pan.Close();//关闭连接 44 | } 45 | 46 | } 47 | catch (Exception ex) 48 | { 49 | MessageBox.Show(Language.StringText("String7") + ex.Message, Language.StringText("String4"), MessageBoxButtons.OK, MessageBoxIcon.Error); 50 | Application.Exit(); 51 | } 52 | System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Language.NowLanguage().ToString()); 53 | } 54 | 55 | private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) 56 | { 57 | MessageBox.Show(Language.StringText("String1"), Language.StringText("String2")); 58 | } 59 | private void 开机自启ToolStripMenuItem_Click(object sender, EventArgs e) 60 | { 61 | //设置开机自启 62 | try 63 | { 64 | if ((sender as ToolStripMenuItem).Checked = !(sender as ToolStripMenuItem).Checked) 65 | { 66 | string path = Application.ExecutablePath; 67 | RegistryKey rk = Registry.LocalMachine; 68 | RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true); 69 | rk2.SetValue("DarkMode", path); 70 | rk2.Close(); 71 | rk.Close(); 72 | } 73 | else 74 | { 75 | RegistryKey rk = Registry.LocalMachine; 76 | RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true); 77 | rk2.DeleteValue("DarkMode", false); 78 | rk2.Close(); 79 | rk.Close(); 80 | } 81 | } 82 | catch (Exception ex) 83 | { 84 | MessageBox.Show(Language.StringText("String3") + ex.Message, Language.StringText("String4"), MessageBoxButtons.OK, MessageBoxIcon.Error); 85 | } 86 | } 87 | 88 | private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) 89 | { 90 | Close(); 91 | } 92 | 93 | #pragma warning disable IDE0052 // 删除未读的私有成员 94 | private bool windowsCreate = true; 95 | #pragma warning restore IDE0052 // 删除未读的私有成员 96 | 97 | private void Form1_Load(object sender, EventArgs e) 98 | { 99 | base.Visible = false; 100 | windowsCreate = false; 101 | string language = new System.Globalization.CultureInfo(Language.NowLanguage().ToString()).ToString(); 102 | if (language == "zh-CN") 103 | { 104 | SettingsToolStripMenuItem.Text = "设置"; 105 | SelfOnToolStripMenuItem.Text = "开机自启"; 106 | AboutToolStripMenuItem.Text = "关于"; 107 | ExitToolStripMenuItem.Text = "退出"; 108 | } 109 | if (language == "zh-TW") 110 | { 111 | SettingsToolStripMenuItem.Text = "設定"; 112 | SelfOnToolStripMenuItem.Text = "開機自啟"; 113 | AboutToolStripMenuItem.Text = "關於"; 114 | ExitToolStripMenuItem.Text = "登出"; 115 | } 116 | if (language == "ja-JP") 117 | { 118 | SettingsToolStripMenuItem.Text = "設定"; 119 | SelfOnToolStripMenuItem.Text = "自動スタート"; 120 | AboutToolStripMenuItem.Text = "約"; 121 | ExitToolStripMenuItem.Text = "終了する"; 122 | } 123 | if (language == "en-US") 124 | { 125 | SettingsToolStripMenuItem.Text = "Settings"; 126 | SelfOnToolStripMenuItem.Text = "Automatic start"; 127 | AboutToolStripMenuItem.Text = "About"; 128 | ExitToolStripMenuItem.Text = "Exit"; 129 | } 130 | 131 | //获取操作系统版本 132 | ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); 133 | string sCPUSerialNumber = ""; 134 | foreach (ManagementObject mo in searcher.Get()) 135 | { 136 | sCPUSerialNumber = mo["Name"].ToString().Trim();//获取操作系统名称 137 | } 138 | string a = sCPUSerialNumber.Substring(10, 10); 139 | //判断是否为Windows 11操作系统 140 | if (a != "Windows 11") 141 | { 142 | DialogResult error = MessageBox.Show(Language.StringText("String5"), Language.StringText("String6"), MessageBoxButtons.OK, MessageBoxIcon.Error); 143 | if (error == DialogResult.OK) 144 | { 145 | //结束程序 146 | Application.ExitThread(); 147 | } 148 | } 149 | 150 | //获取界面语言 151 | try 152 | { 153 | RegistryKey key; 154 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 155 | 156 | string lang = key.GetValue("Language").ToString(); 157 | key.Close(); 158 | } 159 | catch (Exception ex) 160 | { 161 | MessageBox.Show(Language.StringText("String8") + ex.Message, Language.StringText("String4"), MessageBoxButtons.OK, MessageBoxIcon.Error); 162 | } 163 | 164 | //新增功能注册表初始化 165 | RegistryKey key2; 166 | key2 = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 167 | string[] valueNames = key2.GetValueNames(); 168 | foreach (string ValueName in valueNames) 169 | { 170 | if(ValueName != "win_qs") 171 | { 172 | key2.SetValue("win_qs", "true"); 173 | key2.SetValue("app_qs", "true"); 174 | key2.SetValue("win_ss", "false"); 175 | key2.SetValue("app_ss", "false"); 176 | } 177 | } 178 | key2.Close(); 179 | 180 | //判断是否设置开机自启 181 | try 182 | { 183 | RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); 184 | string exist = rk.GetValue("DarkMode").ToString(); 185 | if (exist != "") 186 | { 187 | //如果存在启动项,则修改菜单选项为选中状态 188 | SelfOnToolStripMenuItem.Checked = true; 189 | } 190 | rk.Close(); 191 | } 192 | catch 193 | { 194 | 195 | } 196 | 197 | //判断系统主题是否为自定义模式 198 | //bool judge = judgeSystemColor(); 199 | //if (judge == true) 200 | //{ 201 | // MessageBox.Show(Language.StringText("String9"), Language.StringText("String10"), MessageBoxButtons.OK, MessageBoxIcon.Information); 202 | //} 203 | //启动计时器和定时器 204 | timer1.Interval = 1000; 205 | timer1.Start(); 206 | //发送通知 207 | new ToastContentBuilder() 208 | .AddArgument("action", "viewConversation") 209 | .AddArgument("conversationId", 9813) 210 | .AddText("通知") 211 | .AddText("DarkMode运行中,配置请点击DarkMode图标。") 212 | .Show(); 213 | } 214 | 215 | protected bool getTimeSpan(string timeStr) 216 | { 217 | //获取设置的时间 218 | RegistryKey set = Registry.CurrentUser; 219 | RegistryKey set2 = set.OpenSubKey(@"Software\DarkMode"); 220 | string start = set2.GetValue("startTime").ToString(); 221 | string finish = set2.GetValue("endTime").ToString(); 222 | set.Close(); 223 | set2.Close(); 224 | //判断当前时间是否不在工作时间段内 225 | string _strWorkingDayAM = start;//非工作时间上午08:00 226 | string _strWorkingDayPM = finish;//非工作时间下午19:00 227 | TimeSpan dspWorkingDayAM = DateTime.Parse(_strWorkingDayAM).TimeOfDay; 228 | TimeSpan dspWorkingDayPM = DateTime.Parse(_strWorkingDayPM).TimeOfDay; 229 | 230 | DateTime t1 = Convert.ToDateTime(timeStr); 231 | 232 | TimeSpan dspNow = t1.TimeOfDay; 233 | if (dspNow > dspWorkingDayAM && dspNow < dspWorkingDayPM) 234 | { 235 | return false; 236 | } 237 | return true; 238 | } 239 | 240 | private bool getSystemColor() 241 | { 242 | RegistryKey hkml = Registry.CurrentUser; 243 | RegistryKey personalize = hkml.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); 244 | string registDataOne = personalize.GetValue("AppsUseLightTheme").ToString(); 245 | hkml.Close(); 246 | personalize.Close(); 247 | //检测当前是什么模式(深色返回true) 248 | if (registDataOne == "0x00000000") 249 | { 250 | return false; 251 | } 252 | return true; 253 | } 254 | private bool judgeSystemColor() 255 | { 256 | //判断系统主题是否为自定义模式 257 | RegistryKey hkml = Registry.CurrentUser; 258 | RegistryKey personalize = hkml.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); 259 | string registDataOne = personalize.GetValue("AppsUseLightTheme").ToString(); 260 | string registDataTwo = personalize.GetValue("SystemUsesLightTheme").ToString(); 261 | hkml.Close(); 262 | personalize.Close(); 263 | if (registDataOne != registDataTwo) 264 | { 265 | return true; 266 | } 267 | return false; 268 | } 269 | 270 | private void timer1_Tick(object sender, EventArgs e) 271 | { 272 | //获取当前主题色是否对应(接口) 273 | //bool nowColor = getSystemColor(); 274 | //获取当前时间是否在区间 275 | bool Now = getTimeSpan(DateTime.Now.ToShortTimeString().ToString()); 276 | //判断修改主题色 277 | if (Now == true) 278 | { 279 | //深色 280 | RegistryKey hkml = Registry.CurrentUser; 281 | RegistryKey personalize = hkml.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); 282 | 283 | RegistryKey key; 284 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 285 | //自定义颜色模式 286 | if(key.GetValue("win_ss").ToString() == "false") 287 | { 288 | personalize.SetValue("SystemUsesLightTheme", 0x00000000); 289 | } 290 | else 291 | { 292 | personalize.SetValue("SystemUsesLightTheme", 0x00000001); 293 | } 294 | if (key.GetValue("app_ss").ToString() == "false") 295 | { 296 | personalize.SetValue("AppsUseLightTheme", 0x00000000); 297 | } 298 | else 299 | { 300 | personalize.SetValue("AppsUseLightTheme", 0x00000001); 301 | } 302 | //原生壁纸设置 303 | string dark_ys = key.GetValue("dark_ys").ToString(); 304 | RegistryKey key2; 305 | key2 = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); 306 | if (dark_ys != "") 307 | { 308 | key2.SetValue("WallPaper", dark_ys); 309 | } 310 | //Wallpaper Engine壁纸设置 311 | RegistryKey key3; 312 | key3 = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 313 | string dark_we = key3.GetValue("dark_we").ToString(); 314 | string isdark = key3.GetValue("IsDark").ToString(); 315 | if (dark_we != "") 316 | { 317 | if (isdark == "true") 318 | { 319 | CmdCommit.CmdCommandLight(dark_we); 320 | RegistryKey set; 321 | set = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 322 | set.SetValue("IsDark", "false"); 323 | } 324 | } 325 | hkml.Close(); 326 | personalize.Close(); 327 | key.Close(); 328 | key2.Close(); 329 | key3.Close(); 330 | } 331 | else 332 | { 333 | //浅色 334 | RegistryKey hkml = Registry.CurrentUser; 335 | RegistryKey personalize = hkml.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", true); 336 | 337 | RegistryKey key; 338 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 339 | //自定义颜色模式 340 | if (key.GetValue("win_qs").ToString() == "true") 341 | { 342 | personalize.SetValue("SystemUsesLightTheme", 0x00000001); 343 | } 344 | else 345 | { 346 | personalize.SetValue("SystemUsesLightTheme", 0x00000000); 347 | } 348 | if (key.GetValue("app_qs").ToString() == "true") 349 | { 350 | personalize.SetValue("AppsUseLightTheme", 0x00000001); 351 | } 352 | else 353 | { 354 | personalize.SetValue("AppsUseLightTheme", 0x00000000); 355 | } 356 | //原生壁纸设置 357 | string light_ys = key.GetValue("light_ys").ToString(); 358 | RegistryKey key2; 359 | key2 = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); 360 | if (light_ys != "") 361 | { 362 | key2.SetValue("WallPaper", light_ys); 363 | } 364 | //Wallpaper Engine壁纸设置 365 | RegistryKey key3; 366 | key3 = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 367 | string light_we = key3.GetValue("light_we").ToString(); 368 | string isdark = key3.GetValue("IsDark").ToString(); 369 | if (light_we != "") 370 | { 371 | if (isdark == "false") 372 | { 373 | CmdCommit.CmdCommandLight(light_we); 374 | RegistryKey set; 375 | set = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 376 | set.SetValue("IsDark", "true"); 377 | } 378 | } 379 | hkml.Close(); 380 | personalize.Close(); 381 | key.Close(); 382 | key2.Close(); 383 | key3.Close(); 384 | } 385 | } 386 | 387 | private void 设置ToolStripMenuItem_Click(object sender, EventArgs e) 388 | { 389 | Form form2 = new Form2(); 390 | form2.Text = Language.Form2Lang("String15"); 391 | form2.ShowDialog(); 392 | } 393 | 394 | private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) 395 | { 396 | Form form2 = new Form2(); 397 | form2.Text = Language.Form2Lang("String15"); 398 | form2.ShowDialog(); 399 | } 400 | } 401 | } 402 | -------------------------------------------------------------------------------- /DarkMode/Form2.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Device.Location; 4 | using System.Diagnostics; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | 8 | 9 | namespace DarkMode 10 | { 11 | public partial class Form2 : Form 12 | { 13 | public Form2() 14 | { 15 | InitializeComponent(); 16 | System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Language.NowLanguage().ToString()); 17 | } 18 | 19 | private void button1_Click(object sender, EventArgs e) 20 | { 21 | //写入时间数据到注册表 22 | string startTime = dateTimePicker1.Text.ToString(); 23 | string endTime = dateTimePicker2.Text.ToString(); 24 | string SunRiseSet = checkBox1.Checked.ToString(); 25 | RegistryKey set = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 26 | set.SetValue("startTime", startTime); 27 | set.SetValue("endTime", endTime); 28 | set.SetValue("SunRiseSet", SunRiseSet); 29 | set.Close(); 30 | } 31 | 32 | private void button2_Click(object sender, EventArgs e) 33 | { 34 | MessageBox.Show(StringText("String1"), StringText("String2"), MessageBoxButtons.OK, MessageBoxIcon.Information); 35 | //写入语言数据到注册表 36 | RegistryKey lang = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 37 | if (radioButton1.Checked == true) 38 | { 39 | lang.SetValue("Language", "zh-CN"); 40 | } 41 | if (radioButton2.Checked == true) 42 | { 43 | lang.SetValue("Language", "zh-TW"); 44 | } 45 | if (radioButton3.Checked == true) 46 | { 47 | lang.SetValue("Language", "ja-JP"); 48 | } 49 | if (radioButton4.Checked == true) 50 | { 51 | lang.SetValue("Language", "en-US"); 52 | } 53 | lang.Close(); 54 | Process.Start(Application.ExecutablePath); 55 | Process.GetCurrentProcess().Kill(); 56 | } 57 | 58 | private void Form2_Load(object sender, EventArgs e) 59 | { 60 | //语言设置 61 | tabPage1.Text = Language.Form2Lang("String1"); 62 | label1.Text = Language.Form2Lang("String2"); 63 | label2.Text = Language.Form2Lang("String3"); 64 | label4.Text = Language.Form2Lang("String4"); 65 | tabPage2.Text = Language.Form2Lang("String5"); 66 | label3.Text = Language.Form2Lang("String6"); 67 | tabPage3.Text = Language.Form2Lang("String7"); 68 | groupBox1.Text = Language.Form2Lang("String8"); 69 | label7.Text = Language.Form2Lang("String9"); 70 | label8.Text = Language.Form2Lang("String10"); 71 | label10.Text = Language.Form2Lang("String9"); 72 | label9.Text = Language.Form2Lang("String10"); 73 | groupBox2.Text = Language.Form2Lang("String11"); 74 | label12.Text = Language.Form2Lang("String12"); 75 | button3.Text = Language.Form2Lang("String13"); 76 | button4.Text = Language.Form2Lang("String13"); 77 | button5.Text = Language.Form2Lang("String13"); 78 | button6.Text = Language.Form2Lang("String13"); 79 | button1.Text = Language.Form2Lang("String14"); 80 | button2.Text = Language.Form2Lang("String14"); 81 | button7.Text = Language.Form2Lang("String14"); 82 | button8.Text = Language.Form2Lang("String14"); 83 | Text = Language.Form2Lang("String15"); 84 | tabPage4.Text = Language.Form2Lang("String16"); 85 | groupBox3.Text = Language.Form2Lang("String17"); 86 | groupBox4.Text = Language.Form2Lang("String18"); 87 | groupBox5.Text = Language.Form2Lang("String19"); 88 | groupBox6.Text = Language.Form2Lang("String20"); 89 | radioButton5.Text = Language.Form2Lang("String21"); 90 | radioButton8.Text = Language.Form2Lang("String21"); 91 | radioButton10.Text = Language.Form2Lang("String21"); 92 | radioButton12.Text = Language.Form2Lang("String21"); 93 | radioButton6.Text = Language.Form2Lang("String22"); 94 | radioButton7.Text = Language.Form2Lang("String22"); 95 | radioButton9.Text = Language.Form2Lang("String22"); 96 | radioButton11.Text = Language.Form2Lang("String22"); 97 | 98 | 99 | //初始化组件获取注册表值 100 | RegistryKey key; 101 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 102 | dateTimePicker1.Text = key.GetValue("startTime").ToString(); 103 | dateTimePicker2.Text = key.GetValue("endTime").ToString(); 104 | textBox1.Text = key.GetValue("light_ys").ToString(); 105 | textBox2.Text = key.GetValue("dark_ys").ToString(); 106 | textBox3.Text = key.GetValue("light_we").ToString(); 107 | textBox4.Text = key.GetValue("dark_we").ToString(); 108 | 109 | if (key.GetValue("SunRiseSet").ToString() == "True") 110 | { 111 | bool x = true; 112 | checkBox1.Checked = x; 113 | dateTimePicker1.Enabled = false; 114 | dateTimePicker2.Enabled = false; 115 | } 116 | else 117 | { 118 | bool x = false; 119 | checkBox1.Checked = x; 120 | dateTimePicker1.Enabled = true; 121 | dateTimePicker2.Enabled = true; 122 | } 123 | if (key.GetValue("Language").ToString() == "zh-CN") 124 | { 125 | radioButton1.Checked = true; 126 | } 127 | if (key.GetValue("Language").ToString() == "zh-TW") 128 | { 129 | radioButton2.Checked = true; 130 | } 131 | if (key.GetValue("Language").ToString() == "ja-JP") 132 | { 133 | radioButton3.Checked = true; 134 | } 135 | if (key.GetValue("Language").ToString() == "en-US") 136 | { 137 | radioButton4.Checked = true; 138 | } 139 | if(key.GetValue("win_qs").ToString() == "true") 140 | { 141 | radioButton5.Checked = true; 142 | } 143 | else 144 | { 145 | radioButton6.Checked = true; 146 | } 147 | if (key.GetValue("app_qs").ToString() == "true") 148 | { 149 | radioButton8.Checked = true; 150 | } 151 | else 152 | { 153 | radioButton7.Checked = true; 154 | } 155 | if (key.GetValue("win_ss").ToString() == "false") 156 | { 157 | radioButton9.Checked = true; 158 | } 159 | else 160 | { 161 | radioButton10.Checked = true; 162 | } 163 | if (key.GetValue("app_ss").ToString() == "false") 164 | { 165 | radioButton11.Checked = true; 166 | } 167 | else 168 | { 169 | radioButton12.Checked = true; 170 | } 171 | key.Close(); 172 | } 173 | //语言类 174 | public static string StringText(string str) 175 | { 176 | string language = Registry.GetValue("HKEY_CURRENT_USER\\Software\\DarkMode", "Language", "").ToString(); 177 | if (language == "zh-CN" && str == "String1") 178 | { 179 | return "点击确定后,重启程序生效。"; 180 | } 181 | if (language == "zh-TW" && str == "String1") 182 | { 183 | return "點擊確定後,重啓程式生效。"; 184 | } 185 | if (language == "ja-JP" && str == "String1") 186 | { 187 | return "[OK]をクリックした後、ソフトウェアを再起動して有効にします。"; 188 | } 189 | if (language == "en-US" && str == "String1") 190 | { 191 | return "After clicking OK, restart the software to take effect."; 192 | } 193 | 194 | if (language == "zh-CN" && str == "String2") 195 | { 196 | return "提示"; 197 | } 198 | if (language == "zh-TW" && str == "String2") 199 | { 200 | return "提示"; 201 | } 202 | if (language == "ja-JP" && str == "String2") 203 | { 204 | return "ソフト"; 205 | } 206 | if (language == "en-US" && str == "String2") 207 | { 208 | return "Tips"; 209 | } 210 | if (language == "zh-CN" && str == "String3") 211 | { 212 | return "经度:"; 213 | } 214 | if (language == "zh-TW" && str == "String3") 215 | { 216 | return "經度:"; 217 | } 218 | if (language == "ja-JP" && str == "String3") 219 | { 220 | return "経度:"; 221 | } 222 | if (language == "en-US" && str == "String3") 223 | { 224 | return "Longitude: "; 225 | } 226 | if (language == "zh-CN" && str == "String4") 227 | { 228 | return "纬度:"; 229 | } 230 | if (language == "zh-TW" && str == "String4") 231 | { 232 | return "緯度:"; 233 | } 234 | if (language == "ja-JP" && str == "String4") 235 | { 236 | return "緯度:"; 237 | } 238 | if (language == "en-US" && str == "String4") 239 | { 240 | return "Latitude: "; 241 | } 242 | //5 243 | if (language == "zh-CN" && str == "String5") 244 | { 245 | return "获取超时"; 246 | } 247 | if (language == "zh-TW" && str == "String5") 248 | { 249 | return "獲取超時"; 250 | } 251 | if (language == "ja-JP" && str == "String5") 252 | { 253 | return "タイムアウト"; 254 | } 255 | if (language == "en-US" && str == "String5") 256 | { 257 | return "Time out"; 258 | } 259 | if (language == "zh-CN" && str == "String6") 260 | { 261 | return "地址:"; 262 | } 263 | if (language == "zh-TW" && str == "String6") 264 | { 265 | return "地址:"; 266 | } 267 | if (language == "ja-JP" && str == "String6") 268 | { 269 | return "住所:"; 270 | } 271 | if (language == "en-US" && str == "String6") 272 | { 273 | return "Address: "; 274 | } 275 | return "null"; 276 | 277 | 278 | } 279 | 280 | 281 | GeoCoordinateWatcher watcher; 282 | 283 | public void GetLocationEvent() 284 | { 285 | watcher = new GeoCoordinateWatcher(); 286 | watcher.PositionChanged += new EventHandler>(watcher_PositionChanged); 287 | bool started = watcher.TryStart(false, TimeSpan.FromMilliseconds(2000)); 288 | if (!started) 289 | { 290 | label5.Text = StringText("String5"); 291 | } 292 | } 293 | 294 | void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs e) 295 | { 296 | PrintPosition(e.Position.Location.Latitude, e.Position.Location.Longitude); 297 | 298 | } 299 | 300 | async void PrintPosition(double Latitude, double Longitude) 301 | { 302 | IPAddress iP = new IPAddress(); 303 | SunTimeResult result = SunTimes.GetSunTime(DateTime.Now, double.Parse(Longitude.ToString()), double.Parse(Latitude.ToString())); 304 | RegistryKey set = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 305 | try 306 | { 307 | await Task.Run(() => 308 | { 309 | label5.Text = StringText("String3") + Longitude.ToString() + "\n" + StringText("String4") + Latitude.ToString() + "\n" + "IP: " + iP.IP() + "\n" + StringText("String6") + iP.Address(); 310 | watcher.Dispose(); 311 | set.SetValue("startTime", result.SunriseTime.ToString("HH:mm:ss")); 312 | set.SetValue("endTime", result.SunsetTime.ToString("HH:mm:ss")); 313 | dateTimePicker1.Text = set.GetValue("startTime").ToString(); 314 | dateTimePicker2.Text = set.GetValue("endTime").ToString(); 315 | }); 316 | } 317 | catch { } 318 | } 319 | private void checkBox1_CheckedChanged(object sender, EventArgs e) 320 | { 321 | if (checkBox1.Checked == true) 322 | { 323 | dateTimePicker1.Enabled = false; 324 | dateTimePicker2.Enabled = false; 325 | GetLocationEvent(); 326 | } 327 | else 328 | { 329 | dateTimePicker1.Enabled = true; 330 | dateTimePicker2.Enabled = true; 331 | label5.Text = null; 332 | } 333 | 334 | 335 | } 336 | 337 | private void button3_Click(object sender, EventArgs e) 338 | { 339 | OpenFileDialog ofd = new OpenFileDialog(); 340 | ofd.Filter = "图片文件|*.jpg;*.jpeg;*.bmp;*.dib;*.png;*.jfif;*.jpe;*.gif;*.tif;*.tiff;*.wdp;*.heic;*.heif;*.heics;*.heifs;*.hif;*.avci;*.avcs;*.avif;*.avifs;"; 341 | ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 342 | if (ofd.ShowDialog() == DialogResult.OK) 343 | { 344 | textBox1.Text = ofd.FileName; 345 | } 346 | else 347 | { 348 | textBox1.Text = null; 349 | } 350 | } 351 | 352 | private void button4_Click(object sender, EventArgs e) 353 | { 354 | OpenFileDialog ofd = new OpenFileDialog(); 355 | ofd.Filter = "图片文件|*.jpg;*.jpeg;*.bmp;*.dib;*.png;*.jfif;*.jpe;*.gif;*.tif;*.tiff;*.wdp;*.heic;*.heif;*.heics;*.heifs;*.hif;*.avci;*.avcs;*.avif;*.avifs;"; 356 | ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); 357 | if (ofd.ShowDialog() == DialogResult.OK) 358 | { 359 | textBox2.Text = ofd.FileName; 360 | } 361 | else 362 | { 363 | textBox2.Text = null; 364 | } 365 | } 366 | 367 | private void button6_Click(object sender, EventArgs e) 368 | { 369 | OpenFileDialog ofd = new OpenFileDialog(); 370 | ofd.Filter = "json文件|*.json;"; 371 | ofd.InitialDirectory = CmdCommit.WallpaperPath(); 372 | if (ofd.ShowDialog() == DialogResult.OK) 373 | { 374 | textBox4.Text = ofd.FileName; 375 | } 376 | else 377 | { 378 | textBox4.Text = null; 379 | } 380 | } 381 | 382 | private void button5_Click(object sender, EventArgs e) 383 | { 384 | OpenFileDialog ofd = new OpenFileDialog(); 385 | ofd.Filter = "json文件|*.json;"; 386 | ofd.InitialDirectory = CmdCommit.WallpaperPath(); 387 | if (ofd.ShowDialog() == DialogResult.OK) 388 | { 389 | textBox3.Text = ofd.FileName; 390 | } 391 | else 392 | { 393 | textBox3.Text = null; 394 | } 395 | } 396 | 397 | private void button7_Click(object sender, EventArgs e) 398 | { 399 | //原生壁纸设置 400 | RegistryKey Wallpaper = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 401 | if(textBox1.Text != "") 402 | { 403 | Wallpaper.SetValue("light_ys", textBox1.Text); 404 | } 405 | if(textBox2.Text != "") 406 | { 407 | Wallpaper.SetValue("dark_ys", textBox2.Text); 408 | } 409 | //Wallpaper Engine壁纸设置 410 | RegistryKey WE = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 411 | if (textBox1.Text != "") 412 | { 413 | WE.SetValue("light_we", textBox3.Text); 414 | } 415 | if (textBox2.Text != "") 416 | { 417 | WE.SetValue("dark_we", textBox4.Text); 418 | } 419 | 420 | } 421 | 422 | private void label12_Click(object sender, EventArgs e) 423 | { 424 | Process.Start("explorer.exe", "https://github.com/Melon-Studio/DarkMode/wiki/wallpaper-engine%E5%A3%81%E7%BA%B8%E8%AE%BE%E7%BD%AE"); 425 | } 426 | 427 | //自定义模式设置 428 | private void button8_Click(object sender, EventArgs e) 429 | { 430 | RegistryKey key; 431 | key = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode", true); 432 | //windows模式(浅色) 433 | if (radioButton5.Checked == true) 434 | { 435 | key.SetValue("win_qs", "true"); 436 | } 437 | else 438 | { 439 | key.SetValue("win_qs", "false"); 440 | } 441 | //App模式(浅色) 442 | if (radioButton8.Checked == true) 443 | { 444 | key.SetValue("app_qs", "true"); 445 | } 446 | else 447 | { 448 | key.SetValue("app_qs", "false"); 449 | } 450 | //windows模式(深色) 451 | if (radioButton9.Checked == true) 452 | { 453 | key.SetValue("win_ss", "false"); 454 | } 455 | else 456 | { 457 | key.SetValue("win_ss", "true"); 458 | } 459 | //App模式(深色) 460 | if (radioButton11.Checked == true) 461 | { 462 | key.SetValue("app_ss", "false"); 463 | } 464 | else 465 | { 466 | key.SetValue("app_ss", "true"); 467 | } 468 | } 469 | 470 | 471 | 472 | } 473 | } 474 | -------------------------------------------------------------------------------- /DarkMode/Language.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | 3 | namespace DarkMode 4 | { 5 | internal class Language 6 | { 7 | public static string NowLanguage() 8 | { 9 | RegistryKey set = Registry.CurrentUser.OpenSubKey(@"Software\DarkMode"); 10 | string lang = set.GetValue("Language").ToString(); 11 | return lang; 12 | } 13 | //语言类 14 | public static string StringText(string str) 15 | { 16 | string language = Registry.GetValue("HKEY_CURRENT_USER\\Software\\DarkMode", "Language", "").ToString(); 17 | //zh-CN 18 | if (language == "zh-CN" && str == "String1") 19 | { 20 | return "作者:Melon Studio - XiaoFans"; 21 | } 22 | if (language == "zh-CN" && str == "String2") 23 | { 24 | return "关于"; 25 | } 26 | if (language == "zh-CN" && str == "String3") 27 | { 28 | return "设置失败:"; 29 | } 30 | if (language == "zh-CN" && str == "String4") 31 | { 32 | return "错误"; 33 | } 34 | if (language == "zh-CN" && str == "String5") 35 | { 36 | return "本程序仅支持Windows 11操作系统,请升级为Windows 11后使用。"; 37 | } 38 | if (language == "zh-CN" && str == "String6") 39 | { 40 | return "暂不支持您的电脑"; 41 | } 42 | if (language == "zh-CN" && str == "String7") 43 | { 44 | return "注册表初始化失败。错误信息:"; 45 | } 46 | if (language == "zh-CN" && str == "String8") 47 | { 48 | return "读取注册表语言失败。错误信息:"; 49 | } 50 | if (language == "zh-CN" && str == "String9") 51 | { 52 | return "检测到系统设置了系统颜色模式为自定义,软件将修改您的自定义模式。"; 53 | } 54 | if (language == "zh-CN" && str == "String10") 55 | { 56 | return "提示"; 57 | } 58 | if(language == "zh-CN" && str == "String11") 59 | { 60 | return "DarkMode已进入后台"; 61 | } 62 | if (language == "zh-CN" && str == "String12") 63 | { 64 | return "DarkMode已进入后台,设置请右键托盘栏图标。"; 65 | } 66 | //zh-TW 67 | if (language == "zh-TW" && str == "String1") 68 | { 69 | return "作者:Melon Studio - XiaoFans"; 70 | } 71 | if (language == "zh-TW" && str == "String2") 72 | { 73 | return "關於"; 74 | } 75 | if (language == "zh-TW" && str == "String3") 76 | { 77 | return "設定失敗:"; 78 | } 79 | if (language == "zh-TW" && str == "String4") 80 | { 81 | return "錯誤"; 82 | } 83 | if (language == "zh-TW" && str == "String5") 84 | { 85 | return "本程式僅支持Windows 11作業系統,請陞級為Windows 11後使用。"; 86 | } 87 | if (language == "zh-TW" && str == "String6") 88 | { 89 | return "暫不支持您的電腦"; 90 | } 91 | if (language == "zh-TW" && str == "String7") 92 | { 93 | return "電腦資料庫初始化失敗。 錯誤資訊:"; 94 | } 95 | if (language == "zh-TW" && str == "String8") 96 | { 97 | return "讀取電腦資料庫語言失敗。 錯誤資訊:"; 98 | } 99 | if (language == "zh-TW" && str == "String9") 100 | { 101 | return "檢測到系統設置了系統顏色模式為自定義,軟體將修改您的自定義模式。"; 102 | } 103 | if (language == "zh-TW" && str == "String10") 104 | { 105 | return "提示"; 106 | } 107 | if (language == "zh-TW" && str == "String11") 108 | { 109 | return "DarkMode已進入後台"; 110 | } 111 | if (language == "zh-TW" && str == "String12") 112 | { 113 | return "DarkMode已進入後台,設置請右鍵托盤欄圖標。"; 114 | } 115 | //ja-JP 116 | if (language == "ja-JP" && str == "String1") 117 | { 118 | return "作成者:Melon Studio - XiaoFans"; 119 | } 120 | if (language == "ja-JP" && str == "String2") 121 | { 122 | return "について"; 123 | } 124 | if (language == "ja-JP" && str == "String3") 125 | { 126 | return "設定に失敗しました:"; 127 | } 128 | if (language == "ja-JP" && str == "String4") 129 | { 130 | return "エラー"; 131 | } 132 | if (language == "ja-JP" && str == "String5") 133 | { 134 | return "本プログラムはWindows 11オペレーティングシステムのみをサポートしておりますので、Windows 11にアップグレードしてご利用ください。"; 135 | } 136 | if (language == "ja-JP" && str == "String6") 137 | { 138 | return "お客様のPCのサポートは保留中です"; 139 | } 140 | if (language == "ja-JP" && str == "String7") 141 | { 142 | return "レジストリの初期化に失敗しました。エラーメッセージ:"; 143 | } 144 | if (language == "ja-JP" && str == "String8") 145 | { 146 | return "レジストリ言語の読み取りに失敗しました。エラーメッセージ:"; 147 | } 148 | if (language == "ja-JP" && str == "String9") 149 | { 150 | return "システムのカラーモードがカスタムに設定されていることが検出され、ソフトウェアはカスタムモードを変更します。"; 151 | } 152 | if (language == "ja-JP" && str == "String10") 153 | { 154 | return "ヒント"; 155 | } 156 | if (language == "ja-JP" && str == "String11") 157 | { 158 | return "DarkModeがバックグラウンドになりました"; 159 | } 160 | if (language == "ja-JP" && str == "String12") 161 | { 162 | return "DarkModeが背景に入ったので、トレイアイコンを右クリックして設定してください。"; 163 | } 164 | //en-US 165 | if (language == "en-US" && str == "String1") 166 | { 167 | return "Author: Melon Studio - XiaoFans"; 168 | } 169 | if (language == "en-US" && str == "String2") 170 | { 171 | return "About"; 172 | } 173 | if (language == "en-US" && str == "String3") 174 | { 175 | return "Setting failed: "; 176 | } 177 | if (language == "en-US" && str == "String4") 178 | { 179 | return "Error"; 180 | } 181 | if (language == "en-US" && str == "String5") 182 | { 183 | return "This program only supports windows 11 operating system. Please upgrade to windows 11 before using."; 184 | } 185 | if (language == "en-US" && str == "String6") 186 | { 187 | return "Your computer is temporarily not supported"; 188 | } 189 | if (language == "en-US" && str == "String7") 190 | { 191 | return "Registry initialization failed. Error message:"; 192 | } 193 | if (language == "en-US" && str == "String8") 194 | { 195 | return "Failed to read registry language. Error message:"; 196 | } 197 | if (language == "en-US" && str == "String9") 198 | { 199 | return "It is detected that the system has set the system color mode as custom, and the software will modify your custom mode."; 200 | } 201 | if (language == "en-US" && str == "String10") 202 | { 203 | return "Tips"; 204 | } 205 | if (language == "en-US" && str == "String11") 206 | { 207 | return "DarkMode has gone into the background"; 208 | } 209 | if (language == "en-US" && str == "String12") 210 | { 211 | return "DarkMode has entered the background, please right-click the tray icon to set."; 212 | } 213 | return "null"; 214 | } 215 | public static string Form2Lang(string str) 216 | { 217 | string language = Registry.GetValue("HKEY_CURRENT_USER\\Software\\DarkMode", "Language", "").ToString(); 218 | //zh-CN 219 | if (language == "zh-CN" && str == "String1") 220 | { 221 | return "时间"; 222 | } 223 | if (language == "zh-CN" && str == "String2") 224 | { 225 | return "开始时间(浅色模式)"; 226 | } 227 | if (language == "zh-CN" && str == "String3") 228 | { 229 | return "结束时间(浅色模式)"; 230 | } 231 | if (language == "zh-CN" && str == "String4") 232 | { 233 | return "日出日落模式"; 234 | } 235 | if (language == "zh-CN" && str == "String5") 236 | { 237 | return "语言"; 238 | } 239 | if (language == "zh-CN" && str == "String6") 240 | { 241 | return "部分翻译为机器翻译"; 242 | } 243 | if (language == "zh-CN" && str == "String7") 244 | { 245 | return "壁纸"; 246 | } 247 | if (language == "zh-CN" && str == "String8") 248 | { 249 | return "原生壁纸"; 250 | } 251 | if (language == "zh-CN" && str == "String9") 252 | { 253 | return "浅色时"; 254 | } 255 | if (language == "zh-CN" && str == "String10") 256 | { 257 | return "深色时"; 258 | } 259 | if (language == "zh-CN" && str == "String11") 260 | { 261 | return "Wallpaper Engine 壁纸"; 262 | } 263 | if (language == "zh-CN" && str == "String12") 264 | { 265 | return "设置文档"; 266 | } 267 | if (language == "zh-CN" && str == "String13") 268 | { 269 | return "浏览"; 270 | } 271 | if (language == "zh-CN" && str == "String14") 272 | { 273 | return "保存"; 274 | } 275 | if (language == "zh-CN" && str == "String15") 276 | { 277 | return "设置"; 278 | } 279 | if (language == "zh-CN" && str == "String16") 280 | { 281 | return "自定义"; 282 | } 283 | if (language == "zh-CN" && str == "String17") 284 | { 285 | return "浅色时 Windows 模式"; 286 | } 287 | if (language == "zh-CN" && str == "String18") 288 | { 289 | return "浅色时应用模式"; 290 | } 291 | if (language == "zh-CN" && str == "String19") 292 | { 293 | return "深色时 Windows 模式"; 294 | } 295 | if (language == "zh-CN" && str == "String20") 296 | { 297 | return "深色时应用模式"; 298 | } 299 | if (language == "zh-CN" && str == "String21") 300 | { 301 | return "浅色"; 302 | } 303 | if (language == "zh-CN" && str == "String22") 304 | { 305 | return "深色"; 306 | } 307 | //zh-TW 308 | if (language == "zh-TW" && str == "String1") 309 | { 310 | return "時間"; 311 | } 312 | if (language == "zh-TW" && str == "String2") 313 | { 314 | return "開始時間(淺色模式)"; 315 | } 316 | if (language == "zh-TW" && str == "String3") 317 | { 318 | return "結束時間(淺色模式)"; 319 | } 320 | if (language == "zh-TW" && str == "String4") 321 | { 322 | return "日出日落模式"; 323 | } 324 | if (language == "zh-TW" && str == "String5") 325 | { 326 | return "語言"; 327 | } 328 | if (language == "zh-TW" && str == "String6") 329 | { 330 | return "部分翻譯為機器翻譯"; 331 | } 332 | if (language == "zh-TW" && str == "String7") 333 | { 334 | return "壁紙"; 335 | } 336 | if (language == "zh-TW" && str == "String8") 337 | { 338 | return "原生壁紙"; 339 | } 340 | if (language == "zh-TW" && str == "String9") 341 | { 342 | return "淺色時"; 343 | } 344 | if (language == "zh-TW" && str == "String10") 345 | { 346 | return "深色時"; 347 | } 348 | if (language == "zh-TW" && str == "String11") 349 | { 350 | return "Wallpaper Engine 壁紙"; 351 | } 352 | if (language == "zh-TW" && str == "String12") 353 | { 354 | return "設定文檔"; 355 | } 356 | if (language == "zh-TW" && str == "String13") 357 | { 358 | return "瀏覽"; 359 | } 360 | if (language == "zh-TW" && str == "String14") 361 | { 362 | return "保存"; 363 | } 364 | if (language == "zh-TW" && str == "String15") 365 | { 366 | return "設定"; 367 | } 368 | if (language == "zh-TW" && str == "String16") 369 | { 370 | return "個性化"; 371 | } 372 | if (language == "zh-TW" && str == "String17") 373 | { 374 | return "淺色時 Windows 模式"; 375 | } 376 | if (language == "zh-TW" && str == "String18") 377 | { 378 | return "淺色時應用程式模式"; 379 | } 380 | if (language == "zh-TW" && str == "String19") 381 | { 382 | return "深色時 Windows 模式"; 383 | } 384 | if (language == "zh-TW" && str == "String20") 385 | { 386 | return "深色時應用程式模式"; 387 | } 388 | if (language == "zh-TW" && str == "String21") 389 | { 390 | return "淺色"; 391 | } 392 | if (language == "zh-TW" && str == "String22") 393 | { 394 | return "深色"; 395 | } 396 | //ja-JP 397 | if (language == "ja-JP" && str == "String1") 398 | { 399 | return "時間"; 400 | } 401 | if (language == "ja-JP" && str == "String2") 402 | { 403 | return "開始時間(ライトモード)"; 404 | } 405 | if (language == "ja-JP" && str == "String3") 406 | { 407 | return "終了時間(ライトモード)"; 408 | } 409 | if (language == "ja-JP" && str == "String4") 410 | { 411 | return "サンライズサンセットモード"; 412 | } 413 | if (language == "ja-JP" && str == "String5") 414 | { 415 | return "言語"; 416 | } 417 | if (language == "ja-JP" && str == "String6") 418 | { 419 | return "部分的に機械翻訳に翻訳"; 420 | } 421 | if (language == "ja-JP" && str == "String7") 422 | { 423 | return "壁紙"; 424 | } 425 | if (language == "ja-JP" && str == "String8") 426 | { 427 | return "ネイティブ壁紙"; 428 | } 429 | if (language == "ja-JP" && str == "String9") 430 | { 431 | return "明色時"; 432 | } 433 | if (language == "ja-JP" && str == "String10") 434 | { 435 | return "暗色時"; 436 | } 437 | if (language == "ja-JP" && str == "String11") 438 | { 439 | return "Wallpaper Engine 壁紙"; 440 | } 441 | if (language == "ja-JP" && str == "String12") 442 | { 443 | return "セットアップドキュメント"; 444 | } 445 | if (language == "ja-JP" && str == "String13") 446 | { 447 | return "検索"; 448 | } 449 | if (language == "ja-JP" && str == "String14") 450 | { 451 | return "保存"; 452 | } 453 | if (language == "ja-JP" && str == "String15") 454 | { 455 | return "設定"; 456 | } 457 | if (language == "ja-JP" && str == "String16") 458 | { 459 | return "自设"; 460 | } 461 | if (language == "ja-JP" && str == "String17") 462 | { 463 | return "明るい色の Windows モード"; 464 | } 465 | if (language == "ja-JP" && str == "String18") 466 | { 467 | return "淡色用ソフトウェアモード"; 468 | } 469 | if (language == "ja-JP" && str == "String19") 470 | { 471 | return "暗闇での Windows モード"; 472 | } 473 | if (language == "ja-JP" && str == "String20") 474 | { 475 | return "暗いときのソフトウェアモード"; 476 | } 477 | if (language == "ja-JP" && str == "String21") 478 | { 479 | return "明色"; 480 | } 481 | if (language == "ja-JP" && str == "String22") 482 | { 483 | return "暗い"; 484 | } 485 | //en-US 486 | if (language == "en-US" && str == "String1") 487 | { 488 | return "Time"; 489 | } 490 | if (language == "en-US" && str == "String2") 491 | { 492 | return "Start time(light mode)"; 493 | } 494 | if (language == "en-US" && str == "String3") 495 | { 496 | return "End time(dark mode)"; 497 | } 498 | if (language == "en-US" && str == "String4") 499 | { 500 | return "Sunrise Sunset Mode"; 501 | } 502 | if (language == "en-US" && str == "String5") 503 | { 504 | return "Language"; 505 | } 506 | if (language == "en-US" && str == "String6") 507 | { 508 | return "Partial machine translation"; 509 | } 510 | if (language == "en-US" && str == "String7") 511 | { 512 | return "wallpaper"; 513 | } 514 | if (language == "en-US" && str == "String8") 515 | { 516 | return "native wallpaper"; 517 | } 518 | if (language == "en-US" && str == "String9") 519 | { 520 | return "light"; 521 | } 522 | if (language == "en-US" && str == "String10") 523 | { 524 | return "dark"; 525 | } 526 | if (language == "en-US" && str == "String11") 527 | { 528 | return "Wallpaper Engine"; 529 | } 530 | if (language == "en-US" && str == "String12") 531 | { 532 | return "setup document"; 533 | } 534 | if (language == "en-US" && str == "String13") 535 | { 536 | return "Browse"; 537 | } 538 | if (language == "en-US" && str == "String14") 539 | { 540 | return "Save"; 541 | } 542 | if (language == "en-US" && str == "String15") 543 | { 544 | return "Settings"; 545 | } 546 | if (language == "en-US" && str == "String16") 547 | { 548 | return "customize"; 549 | } 550 | if (language == "en-US" && str == "String17") 551 | { 552 | return "Windows mode in light"; 553 | } 554 | if (language == "en-US" && str == "String18") 555 | { 556 | return "APP mode when light color"; 557 | } 558 | if (language == "en-US" && str == "String19") 559 | { 560 | return "Windows mode in dark"; 561 | } 562 | if (language == "en-US" && str == "String20") 563 | { 564 | return "APP mode when dark"; 565 | } 566 | if (language == "en-US" && str == "String21") 567 | { 568 | return "Light"; 569 | } 570 | if (language == "en-US" && str == "String22") 571 | { 572 | return "Dark"; 573 | } 574 | return null; 575 | } 576 | } 577 | 578 | } 579 | -------------------------------------------------------------------------------- /DarkMode/Form2.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace DarkMode 2 | { 3 | partial class Form2 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2)); 32 | this.tab1 = new System.Windows.Forms.TabControl(); 33 | this.tabPage1 = new System.Windows.Forms.TabPage(); 34 | this.label5 = new System.Windows.Forms.Label(); 35 | this.label4 = new System.Windows.Forms.Label(); 36 | this.checkBox1 = new System.Windows.Forms.CheckBox(); 37 | this.button1 = new System.Windows.Forms.Button(); 38 | this.label2 = new System.Windows.Forms.Label(); 39 | this.dateTimePicker2 = new System.Windows.Forms.DateTimePicker(); 40 | this.label1 = new System.Windows.Forms.Label(); 41 | this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); 42 | this.tabPage2 = new System.Windows.Forms.TabPage(); 43 | this.label3 = new System.Windows.Forms.Label(); 44 | this.button2 = new System.Windows.Forms.Button(); 45 | this.radioButton4 = new System.Windows.Forms.RadioButton(); 46 | this.radioButton3 = new System.Windows.Forms.RadioButton(); 47 | this.radioButton2 = new System.Windows.Forms.RadioButton(); 48 | this.radioButton1 = new System.Windows.Forms.RadioButton(); 49 | this.tabPage3 = new System.Windows.Forms.TabPage(); 50 | this.button7 = new System.Windows.Forms.Button(); 51 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 52 | this.label12 = new System.Windows.Forms.Label(); 53 | this.textBox4 = new System.Windows.Forms.TextBox(); 54 | this.textBox3 = new System.Windows.Forms.TextBox(); 55 | this.button5 = new System.Windows.Forms.Button(); 56 | this.button6 = new System.Windows.Forms.Button(); 57 | this.label9 = new System.Windows.Forms.Label(); 58 | this.label10 = new System.Windows.Forms.Label(); 59 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 60 | this.textBox2 = new System.Windows.Forms.TextBox(); 61 | this.textBox1 = new System.Windows.Forms.TextBox(); 62 | this.button4 = new System.Windows.Forms.Button(); 63 | this.button3 = new System.Windows.Forms.Button(); 64 | this.label8 = new System.Windows.Forms.Label(); 65 | this.label7 = new System.Windows.Forms.Label(); 66 | this.tabPage4 = new System.Windows.Forms.TabPage(); 67 | this.groupBox3 = new System.Windows.Forms.GroupBox(); 68 | this.radioButton5 = new System.Windows.Forms.RadioButton(); 69 | this.radioButton6 = new System.Windows.Forms.RadioButton(); 70 | this.groupBox4 = new System.Windows.Forms.GroupBox(); 71 | this.radioButton7 = new System.Windows.Forms.RadioButton(); 72 | this.radioButton8 = new System.Windows.Forms.RadioButton(); 73 | this.groupBox5 = new System.Windows.Forms.GroupBox(); 74 | this.radioButton9 = new System.Windows.Forms.RadioButton(); 75 | this.radioButton10 = new System.Windows.Forms.RadioButton(); 76 | this.groupBox6 = new System.Windows.Forms.GroupBox(); 77 | this.radioButton11 = new System.Windows.Forms.RadioButton(); 78 | this.radioButton12 = new System.Windows.Forms.RadioButton(); 79 | this.button8 = new System.Windows.Forms.Button(); 80 | this.tab1.SuspendLayout(); 81 | this.tabPage1.SuspendLayout(); 82 | this.tabPage2.SuspendLayout(); 83 | this.tabPage3.SuspendLayout(); 84 | this.groupBox2.SuspendLayout(); 85 | this.groupBox1.SuspendLayout(); 86 | this.tabPage4.SuspendLayout(); 87 | this.groupBox3.SuspendLayout(); 88 | this.groupBox4.SuspendLayout(); 89 | this.groupBox5.SuspendLayout(); 90 | this.groupBox6.SuspendLayout(); 91 | this.SuspendLayout(); 92 | // 93 | // tab1 94 | // 95 | this.tab1.Controls.Add(this.tabPage1); 96 | this.tab1.Controls.Add(this.tabPage4); 97 | this.tab1.Controls.Add(this.tabPage3); 98 | this.tab1.Controls.Add(this.tabPage2); 99 | resources.ApplyResources(this.tab1, "tab1"); 100 | this.tab1.Multiline = true; 101 | this.tab1.Name = "tab1"; 102 | this.tab1.SelectedIndex = 0; 103 | // 104 | // tabPage1 105 | // 106 | this.tabPage1.Controls.Add(this.label5); 107 | this.tabPage1.Controls.Add(this.label4); 108 | this.tabPage1.Controls.Add(this.checkBox1); 109 | this.tabPage1.Controls.Add(this.button1); 110 | this.tabPage1.Controls.Add(this.label2); 111 | this.tabPage1.Controls.Add(this.dateTimePicker2); 112 | this.tabPage1.Controls.Add(this.label1); 113 | this.tabPage1.Controls.Add(this.dateTimePicker1); 114 | resources.ApplyResources(this.tabPage1, "tabPage1"); 115 | this.tabPage1.Name = "tabPage1"; 116 | this.tabPage1.UseVisualStyleBackColor = true; 117 | // 118 | // label5 119 | // 120 | resources.ApplyResources(this.label5, "label5"); 121 | this.label5.Name = "label5"; 122 | // 123 | // label4 124 | // 125 | resources.ApplyResources(this.label4, "label4"); 126 | this.label4.Name = "label4"; 127 | // 128 | // checkBox1 129 | // 130 | resources.ApplyResources(this.checkBox1, "checkBox1"); 131 | this.checkBox1.Name = "checkBox1"; 132 | this.checkBox1.UseVisualStyleBackColor = true; 133 | this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); 134 | // 135 | // button1 136 | // 137 | resources.ApplyResources(this.button1, "button1"); 138 | this.button1.Name = "button1"; 139 | this.button1.UseVisualStyleBackColor = true; 140 | this.button1.Click += new System.EventHandler(this.button1_Click); 141 | // 142 | // label2 143 | // 144 | resources.ApplyResources(this.label2, "label2"); 145 | this.label2.Name = "label2"; 146 | // 147 | // dateTimePicker2 148 | // 149 | resources.ApplyResources(this.dateTimePicker2, "dateTimePicker2"); 150 | this.dateTimePicker2.Format = System.Windows.Forms.DateTimePickerFormat.Time; 151 | this.dateTimePicker2.Name = "dateTimePicker2"; 152 | this.dateTimePicker2.ShowUpDown = true; 153 | // 154 | // label1 155 | // 156 | resources.ApplyResources(this.label1, "label1"); 157 | this.label1.Name = "label1"; 158 | // 159 | // dateTimePicker1 160 | // 161 | resources.ApplyResources(this.dateTimePicker1, "dateTimePicker1"); 162 | this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Time; 163 | this.dateTimePicker1.Name = "dateTimePicker1"; 164 | this.dateTimePicker1.ShowUpDown = true; 165 | // 166 | // tabPage2 167 | // 168 | this.tabPage2.Controls.Add(this.label3); 169 | this.tabPage2.Controls.Add(this.button2); 170 | this.tabPage2.Controls.Add(this.radioButton4); 171 | this.tabPage2.Controls.Add(this.radioButton3); 172 | this.tabPage2.Controls.Add(this.radioButton2); 173 | this.tabPage2.Controls.Add(this.radioButton1); 174 | resources.ApplyResources(this.tabPage2, "tabPage2"); 175 | this.tabPage2.Name = "tabPage2"; 176 | this.tabPage2.UseVisualStyleBackColor = true; 177 | // 178 | // label3 179 | // 180 | resources.ApplyResources(this.label3, "label3"); 181 | this.label3.ForeColor = System.Drawing.SystemColors.ButtonShadow; 182 | this.label3.Name = "label3"; 183 | // 184 | // button2 185 | // 186 | resources.ApplyResources(this.button2, "button2"); 187 | this.button2.Name = "button2"; 188 | this.button2.UseVisualStyleBackColor = true; 189 | this.button2.Click += new System.EventHandler(this.button2_Click); 190 | // 191 | // radioButton4 192 | // 193 | resources.ApplyResources(this.radioButton4, "radioButton4"); 194 | this.radioButton4.Name = "radioButton4"; 195 | this.radioButton4.TabStop = true; 196 | this.radioButton4.UseVisualStyleBackColor = true; 197 | // 198 | // radioButton3 199 | // 200 | resources.ApplyResources(this.radioButton3, "radioButton3"); 201 | this.radioButton3.Name = "radioButton3"; 202 | this.radioButton3.TabStop = true; 203 | this.radioButton3.UseVisualStyleBackColor = true; 204 | // 205 | // radioButton2 206 | // 207 | resources.ApplyResources(this.radioButton2, "radioButton2"); 208 | this.radioButton2.Name = "radioButton2"; 209 | this.radioButton2.TabStop = true; 210 | this.radioButton2.UseVisualStyleBackColor = true; 211 | // 212 | // radioButton1 213 | // 214 | resources.ApplyResources(this.radioButton1, "radioButton1"); 215 | this.radioButton1.Name = "radioButton1"; 216 | this.radioButton1.TabStop = true; 217 | this.radioButton1.UseVisualStyleBackColor = true; 218 | // 219 | // tabPage3 220 | // 221 | this.tabPage3.Controls.Add(this.button7); 222 | this.tabPage3.Controls.Add(this.groupBox2); 223 | this.tabPage3.Controls.Add(this.groupBox1); 224 | resources.ApplyResources(this.tabPage3, "tabPage3"); 225 | this.tabPage3.Name = "tabPage3"; 226 | this.tabPage3.UseVisualStyleBackColor = true; 227 | // 228 | // button7 229 | // 230 | resources.ApplyResources(this.button7, "button7"); 231 | this.button7.Name = "button7"; 232 | this.button7.UseVisualStyleBackColor = true; 233 | this.button7.Click += new System.EventHandler(this.button7_Click); 234 | // 235 | // groupBox2 236 | // 237 | this.groupBox2.Controls.Add(this.label12); 238 | this.groupBox2.Controls.Add(this.textBox4); 239 | this.groupBox2.Controls.Add(this.textBox3); 240 | this.groupBox2.Controls.Add(this.button5); 241 | this.groupBox2.Controls.Add(this.button6); 242 | this.groupBox2.Controls.Add(this.label9); 243 | this.groupBox2.Controls.Add(this.label10); 244 | resources.ApplyResources(this.groupBox2, "groupBox2"); 245 | this.groupBox2.Name = "groupBox2"; 246 | this.groupBox2.TabStop = false; 247 | // 248 | // label12 249 | // 250 | resources.ApplyResources(this.label12, "label12"); 251 | this.label12.ForeColor = System.Drawing.SystemColors.HotTrack; 252 | this.label12.Name = "label12"; 253 | this.label12.Click += new System.EventHandler(this.label12_Click); 254 | // 255 | // textBox4 256 | // 257 | resources.ApplyResources(this.textBox4, "textBox4"); 258 | this.textBox4.Name = "textBox4"; 259 | this.textBox4.ReadOnly = true; 260 | // 261 | // textBox3 262 | // 263 | resources.ApplyResources(this.textBox3, "textBox3"); 264 | this.textBox3.Name = "textBox3"; 265 | this.textBox3.ReadOnly = true; 266 | // 267 | // button5 268 | // 269 | resources.ApplyResources(this.button5, "button5"); 270 | this.button5.Name = "button5"; 271 | this.button5.UseVisualStyleBackColor = true; 272 | this.button5.Click += new System.EventHandler(this.button5_Click); 273 | // 274 | // button6 275 | // 276 | resources.ApplyResources(this.button6, "button6"); 277 | this.button6.Name = "button6"; 278 | this.button6.UseVisualStyleBackColor = true; 279 | this.button6.Click += new System.EventHandler(this.button6_Click); 280 | // 281 | // label9 282 | // 283 | resources.ApplyResources(this.label9, "label9"); 284 | this.label9.Name = "label9"; 285 | // 286 | // label10 287 | // 288 | resources.ApplyResources(this.label10, "label10"); 289 | this.label10.Name = "label10"; 290 | // 291 | // groupBox1 292 | // 293 | this.groupBox1.Controls.Add(this.textBox2); 294 | this.groupBox1.Controls.Add(this.textBox1); 295 | this.groupBox1.Controls.Add(this.button4); 296 | this.groupBox1.Controls.Add(this.button3); 297 | this.groupBox1.Controls.Add(this.label8); 298 | this.groupBox1.Controls.Add(this.label7); 299 | resources.ApplyResources(this.groupBox1, "groupBox1"); 300 | this.groupBox1.Name = "groupBox1"; 301 | this.groupBox1.TabStop = false; 302 | // 303 | // textBox2 304 | // 305 | resources.ApplyResources(this.textBox2, "textBox2"); 306 | this.textBox2.Name = "textBox2"; 307 | this.textBox2.ReadOnly = true; 308 | // 309 | // textBox1 310 | // 311 | resources.ApplyResources(this.textBox1, "textBox1"); 312 | this.textBox1.Name = "textBox1"; 313 | this.textBox1.ReadOnly = true; 314 | // 315 | // button4 316 | // 317 | resources.ApplyResources(this.button4, "button4"); 318 | this.button4.Name = "button4"; 319 | this.button4.UseVisualStyleBackColor = true; 320 | this.button4.Click += new System.EventHandler(this.button4_Click); 321 | // 322 | // button3 323 | // 324 | resources.ApplyResources(this.button3, "button3"); 325 | this.button3.Name = "button3"; 326 | this.button3.UseVisualStyleBackColor = true; 327 | this.button3.Click += new System.EventHandler(this.button3_Click); 328 | // 329 | // label8 330 | // 331 | resources.ApplyResources(this.label8, "label8"); 332 | this.label8.Name = "label8"; 333 | // 334 | // label7 335 | // 336 | resources.ApplyResources(this.label7, "label7"); 337 | this.label7.Name = "label7"; 338 | // 339 | // tabPage4 340 | // 341 | this.tabPage4.Controls.Add(this.button8); 342 | this.tabPage4.Controls.Add(this.groupBox6); 343 | this.tabPage4.Controls.Add(this.groupBox5); 344 | this.tabPage4.Controls.Add(this.groupBox4); 345 | this.tabPage4.Controls.Add(this.groupBox3); 346 | resources.ApplyResources(this.tabPage4, "tabPage4"); 347 | this.tabPage4.Name = "tabPage4"; 348 | this.tabPage4.UseVisualStyleBackColor = true; 349 | // 350 | // groupBox3 351 | // 352 | this.groupBox3.Controls.Add(this.radioButton6); 353 | this.groupBox3.Controls.Add(this.radioButton5); 354 | resources.ApplyResources(this.groupBox3, "groupBox3"); 355 | this.groupBox3.Name = "groupBox3"; 356 | this.groupBox3.TabStop = false; 357 | // 358 | // radioButton5 359 | // 360 | resources.ApplyResources(this.radioButton5, "radioButton5"); 361 | this.radioButton5.Name = "radioButton5"; 362 | this.radioButton5.TabStop = true; 363 | this.radioButton5.UseVisualStyleBackColor = true; 364 | // 365 | // radioButton6 366 | // 367 | resources.ApplyResources(this.radioButton6, "radioButton6"); 368 | this.radioButton6.Name = "radioButton6"; 369 | this.radioButton6.TabStop = true; 370 | this.radioButton6.UseVisualStyleBackColor = true; 371 | // 372 | // groupBox4 373 | // 374 | this.groupBox4.Controls.Add(this.radioButton7); 375 | this.groupBox4.Controls.Add(this.radioButton8); 376 | resources.ApplyResources(this.groupBox4, "groupBox4"); 377 | this.groupBox4.Name = "groupBox4"; 378 | this.groupBox4.TabStop = false; 379 | // 380 | // radioButton7 381 | // 382 | resources.ApplyResources(this.radioButton7, "radioButton7"); 383 | this.radioButton7.Name = "radioButton7"; 384 | this.radioButton7.TabStop = true; 385 | this.radioButton7.UseVisualStyleBackColor = true; 386 | // 387 | // radioButton8 388 | // 389 | resources.ApplyResources(this.radioButton8, "radioButton8"); 390 | this.radioButton8.Name = "radioButton8"; 391 | this.radioButton8.TabStop = true; 392 | this.radioButton8.UseVisualStyleBackColor = true; 393 | // 394 | // groupBox5 395 | // 396 | this.groupBox5.Controls.Add(this.radioButton9); 397 | this.groupBox5.Controls.Add(this.radioButton10); 398 | resources.ApplyResources(this.groupBox5, "groupBox5"); 399 | this.groupBox5.Name = "groupBox5"; 400 | this.groupBox5.TabStop = false; 401 | // 402 | // radioButton9 403 | // 404 | resources.ApplyResources(this.radioButton9, "radioButton9"); 405 | this.radioButton9.Name = "radioButton9"; 406 | this.radioButton9.TabStop = true; 407 | this.radioButton9.UseVisualStyleBackColor = true; 408 | // 409 | // radioButton10 410 | // 411 | resources.ApplyResources(this.radioButton10, "radioButton10"); 412 | this.radioButton10.Name = "radioButton10"; 413 | this.radioButton10.TabStop = true; 414 | this.radioButton10.UseVisualStyleBackColor = true; 415 | // 416 | // groupBox6 417 | // 418 | this.groupBox6.Controls.Add(this.radioButton11); 419 | this.groupBox6.Controls.Add(this.radioButton12); 420 | resources.ApplyResources(this.groupBox6, "groupBox6"); 421 | this.groupBox6.Name = "groupBox6"; 422 | this.groupBox6.TabStop = false; 423 | // 424 | // radioButton11 425 | // 426 | resources.ApplyResources(this.radioButton11, "radioButton11"); 427 | this.radioButton11.Name = "radioButton11"; 428 | this.radioButton11.TabStop = true; 429 | this.radioButton11.UseVisualStyleBackColor = true; 430 | // 431 | // radioButton12 432 | // 433 | resources.ApplyResources(this.radioButton12, "radioButton12"); 434 | this.radioButton12.Name = "radioButton12"; 435 | this.radioButton12.TabStop = true; 436 | this.radioButton12.UseVisualStyleBackColor = true; 437 | // 438 | // button8 439 | // 440 | resources.ApplyResources(this.button8, "button8"); 441 | this.button8.Name = "button8"; 442 | this.button8.UseVisualStyleBackColor = true; 443 | this.button8.Click += new System.EventHandler(this.button8_Click); 444 | // 445 | // Form2 446 | // 447 | resources.ApplyResources(this, "$this"); 448 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 449 | this.Controls.Add(this.tab1); 450 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 451 | this.MaximizeBox = false; 452 | this.MinimizeBox = false; 453 | this.Name = "Form2"; 454 | this.Load += new System.EventHandler(this.Form2_Load); 455 | this.tab1.ResumeLayout(false); 456 | this.tabPage1.ResumeLayout(false); 457 | this.tabPage1.PerformLayout(); 458 | this.tabPage2.ResumeLayout(false); 459 | this.tabPage2.PerformLayout(); 460 | this.tabPage3.ResumeLayout(false); 461 | this.groupBox2.ResumeLayout(false); 462 | this.groupBox2.PerformLayout(); 463 | this.groupBox1.ResumeLayout(false); 464 | this.groupBox1.PerformLayout(); 465 | this.tabPage4.ResumeLayout(false); 466 | this.groupBox3.ResumeLayout(false); 467 | this.groupBox3.PerformLayout(); 468 | this.groupBox4.ResumeLayout(false); 469 | this.groupBox4.PerformLayout(); 470 | this.groupBox5.ResumeLayout(false); 471 | this.groupBox5.PerformLayout(); 472 | this.groupBox6.ResumeLayout(false); 473 | this.groupBox6.PerformLayout(); 474 | this.ResumeLayout(false); 475 | 476 | } 477 | 478 | #endregion 479 | 480 | private System.Windows.Forms.TabControl tab1; 481 | private System.Windows.Forms.TabPage tabPage1; 482 | private System.Windows.Forms.TabPage tabPage2; 483 | private System.Windows.Forms.Label label2; 484 | private System.Windows.Forms.DateTimePicker dateTimePicker2; 485 | private System.Windows.Forms.Label label1; 486 | private System.Windows.Forms.DateTimePicker dateTimePicker1; 487 | private System.Windows.Forms.Button button1; 488 | private System.Windows.Forms.Button button2; 489 | private System.Windows.Forms.RadioButton radioButton4; 490 | private System.Windows.Forms.RadioButton radioButton3; 491 | private System.Windows.Forms.RadioButton radioButton2; 492 | private System.Windows.Forms.RadioButton radioButton1; 493 | private System.Windows.Forms.Label label3; 494 | private System.Windows.Forms.Label label4; 495 | private System.Windows.Forms.CheckBox checkBox1; 496 | private System.Windows.Forms.Label label5; 497 | private System.Windows.Forms.TabPage tabPage3; 498 | private System.Windows.Forms.Label label12; 499 | private System.Windows.Forms.Button button7; 500 | private System.Windows.Forms.GroupBox groupBox2; 501 | private System.Windows.Forms.TextBox textBox4; 502 | private System.Windows.Forms.TextBox textBox3; 503 | private System.Windows.Forms.Button button5; 504 | private System.Windows.Forms.Button button6; 505 | private System.Windows.Forms.Label label9; 506 | private System.Windows.Forms.Label label10; 507 | private System.Windows.Forms.GroupBox groupBox1; 508 | private System.Windows.Forms.TextBox textBox2; 509 | private System.Windows.Forms.TextBox textBox1; 510 | private System.Windows.Forms.Button button4; 511 | private System.Windows.Forms.Button button3; 512 | private System.Windows.Forms.Label label8; 513 | private System.Windows.Forms.Label label7; 514 | private System.Windows.Forms.TabPage tabPage4; 515 | private System.Windows.Forms.Button button8; 516 | private System.Windows.Forms.GroupBox groupBox6; 517 | private System.Windows.Forms.RadioButton radioButton11; 518 | private System.Windows.Forms.RadioButton radioButton12; 519 | private System.Windows.Forms.GroupBox groupBox5; 520 | private System.Windows.Forms.RadioButton radioButton9; 521 | private System.Windows.Forms.RadioButton radioButton10; 522 | private System.Windows.Forms.GroupBox groupBox4; 523 | private System.Windows.Forms.RadioButton radioButton7; 524 | private System.Windows.Forms.RadioButton radioButton8; 525 | private System.Windows.Forms.GroupBox groupBox3; 526 | private System.Windows.Forms.RadioButton radioButton6; 527 | private System.Windows.Forms.RadioButton radioButton5; 528 | } 529 | } -------------------------------------------------------------------------------- /DarkMode/Form1.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 135, 17 125 | 126 | 127 | 128 | 124, 22 129 | 130 | 131 | 设置 132 | 133 | 134 | 180, 22 135 | 136 | 137 | 开机自启 138 | 139 | 140 | 180, 22 141 | 142 | 143 | 关于 144 | 145 | 146 | 180, 22 147 | 148 | 149 | 退出 150 | 151 | 152 | 125, 92 153 | 154 | 155 | contextMenuStrip1 156 | 157 | 158 | System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 159 | 160 | 161 | 162 | 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 317 | YII= 318 | 319 | 320 | 321 | DarkMode 322 | 323 | 324 | 325 | True 326 | 327 | 328 | 300, 17 329 | 330 | 331 | True 332 | 333 | 334 | 6, 12 335 | 336 | 337 | 156, 127 338 | 339 | 340 | 341 | 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 496 | YII= 497 | 498 | 499 | 500 | DarkMode 501 | 502 | 503 | notifyIcon1 504 | 505 | 506 | System.Windows.Forms.NotifyIcon, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 507 | 508 | 509 | SettingsToolStripMenuItem 510 | 511 | 512 | System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 513 | 514 | 515 | SelfOnToolStripMenuItem 516 | 517 | 518 | System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 519 | 520 | 521 | AboutToolStripMenuItem 522 | 523 | 524 | System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 525 | 526 | 527 | ExitToolStripMenuItem 528 | 529 | 530 | System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 531 | 532 | 533 | timer1 534 | 535 | 536 | System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 537 | 538 | 539 | Form1 540 | 541 | 542 | System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 543 | 544 | --------------------------------------------------------------------------------