├── ossmsettings.reg ├── SimpleClassicTheme ├── SCT Logo.ico ├── Resources │ ├── ctm.exe │ ├── deskn.cpl │ ├── fox.exe │ ├── upm.reg │ ├── win7.bmp │ ├── win9x.png │ ├── msiexec.png │ ├── scttask.xml │ ├── taskbar.png │ ├── SCT Logo.ico │ ├── fixstrips.exe │ ├── ossettings.reg │ ├── ShellPayload.dll │ ├── ossmsettings.reg │ ├── sibsettings.reg │ ├── winxp_wizard.png │ ├── Classic3.msstyles │ ├── RestoreColors.reg │ ├── RibbonDisabler.exe │ ├── SCT Logo x164.png │ ├── SCT Logo x275.png │ ├── WindowMetrics.reg │ ├── reg disable upm.reg │ ├── SCT Banner 400x73.png │ ├── SCT Banner 400x81.png │ ├── SCT Logo Dark x164.png │ ├── SCT Logo Dark x275.png │ ├── null_classic3small.bmp │ ├── reg_windowmetrics_81.reg │ ├── OpenShellSetup_4_4_166.exe │ ├── SCT Banner Dark 400x73.png │ ├── ExplorerContextMenuTweaker.dll │ ├── ostbsettings.reg │ ├── restoreMetrics.reg │ ├── EnableThemeScript.bat │ └── DisableThemeScript.bat ├── FodyWeavers.xml ├── app.config ├── Other Files │ ├── App.config │ ├── packages.config │ ├── README.md │ └── app.manifest ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ └── AHKScripts.Designer.cs ├── packages.config ├── Forms │ ├── Information │ │ ├── CommandLineHelpForm.cs │ │ ├── AboutForm.cs │ │ ├── CommandLineHelpForm.Designer.cs │ │ └── AboutForm.Designer.cs │ ├── Unfinished │ │ ├── WMITest.cs │ │ ├── ThemeConfigurationForm.cs │ │ ├── WMITest.Designer.cs │ │ └── WMITest.resx │ ├── OptionsForm.cs │ ├── UpdateForm.Designer.cs │ ├── Utility │ │ ├── UtilityManagerForm.cs │ │ ├── GithubDownloader.Designer.cs │ │ ├── TaskbarTypeSelector.Designer.cs │ │ ├── TaskbarTypeSelector.resx │ │ ├── AHKScriptManager.Designer.cs │ │ └── GithubDownloader.cs │ └── LoaderForm.resx ├── Function Classes │ ├── SystemMenuForm.cs │ ├── UsefulRegistryKeys.cs │ ├── WinApi.cs │ ├── SystemMenu.cs │ └── Configuration.cs ├── SetupWizard │ ├── WelcomePage.cs │ ├── InstallPathPage.cs │ ├── FinishedPage.cs │ ├── LicensePage.cs │ ├── WelcomePage.Designer.cs │ ├── InstallationPage.cs │ ├── InstallOptionsPage.cs │ ├── UtilitiesPage.cs │ ├── LicensePage.Designer.cs │ ├── FinishedPage.Designer.cs │ ├── WelcomePage.resx │ ├── FinishedPage.resx │ ├── UtilitiesPage.resx │ ├── InstallOptionsPage.resx │ ├── InstallationPage.Designer.cs │ ├── InstallationPage.resx │ ├── InstallPathPage.resx │ └── InstallPathPage.Designer.cs ├── SimpleClassicTheme f.csproj └── ApplicationEntryPoint.cs ├── ostbsettings.reg ├── .github └── ISSUE_TEMPLATE │ └── sct-bug.md ├── README.md ├── SimpleClassicTheme.sln ├── README.htm └── .gitattributes /ossmsettings.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/ossmsettings.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/SCT Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/SCT Logo.ico -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ctm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/ctm.exe -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/deskn.cpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/deskn.cpl -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/fox.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/fox.exe -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/upm.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/upm.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/win7.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/win7.bmp -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/win9x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/win9x.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/msiexec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/msiexec.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/scttask.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/scttask.xml -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/taskbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/taskbar.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Logo.ico -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/fixstrips.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/fixstrips.exe -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ossettings.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/ossettings.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ShellPayload.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/ShellPayload.dll -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ossmsettings.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/ossmsettings.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/sibsettings.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/sibsettings.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/winxp_wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/winxp_wizard.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/Classic3.msstyles: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/Classic3.msstyles -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/RestoreColors.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/RestoreColors.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/RibbonDisabler.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/RibbonDisabler.exe -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Logo x164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Logo x164.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Logo x275.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Logo x275.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/WindowMetrics.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/WindowMetrics.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/reg disable upm.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/reg disable upm.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Banner 400x73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Banner 400x73.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Banner 400x81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Banner 400x81.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Logo Dark x164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Logo Dark x164.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Logo Dark x275.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Logo Dark x275.png -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/null_classic3small.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/null_classic3small.bmp -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/reg_windowmetrics_81.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/reg_windowmetrics_81.reg -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/OpenShellSetup_4_4_166.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/OpenShellSetup_4_4_166.exe -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/SCT Banner Dark 400x73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/SCT Banner Dark 400x73.png -------------------------------------------------------------------------------- /SimpleClassicTheme/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ExplorerContextMenuTweaker.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leetftw/SimpleClassicTheme/HEAD/SimpleClassicTheme/Resources/ExplorerContextMenuTweaker.dll -------------------------------------------------------------------------------- /SimpleClassicTheme/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Other Files/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Other Files/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SimpleClassicTheme/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ostbsettings.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_CURRENT_USER\SOFTWARE\OpenShell\StartMenu\Settings] 4 | "EnableStartButton"=dword:00000001 5 | "StartButtonType"="CustomButton" 6 | "StartButtonPath"="%USERPROFILE%\\AppData\\Local\\StartIsBack\\Orbs\\CS_classic3small.bmp" 7 | "CustomTaskbar"=dword:00000001 8 | "TaskbarLook"="Opaque" 9 | "TaskbarTexture"="%USERPROFILE%\\AppData\\Local\\StartIsBack\\Orbs\\taskbar.png" 10 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Other Files/README.md: -------------------------------------------------------------------------------- 1 | # SimpleClassicTheme 2 | Basically, I saw this thread on the WinClassic boards which is an amazing solution for Classic Theme and decided I wanted to create a GUI for it. For more info check the thread on the WinClassic Boards 3 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/ostbsettings.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_CURRENT_USER\SOFTWARE\OpenShell\StartMenu\Settings] 4 | "EnableStartButton"=dword:00000001 5 | "StartButtonType"="CustomButton" 6 | "StartButtonPath"="%USERPROFILE%\\AppData\\Local\\StartIsBack\\Orbs\\CS_classic3small.bmp" 7 | "CustomTaskbar"=dword:00000001 8 | "TaskbarLook"="Opaque" 9 | "TaskbarTexture"="%USERPROFILE%\\AppData\\Local\\StartIsBack\\Orbs\\taskbar.png" 10 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Information/CommandLineHelpForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace SimpleClassicTheme.Forms 12 | { 13 | public partial class CommandLineHelpForm : Form 14 | { 15 | public CommandLineHelpForm() 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/restoreMetrics.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics] 4 | 5 | "CaptionHeight"="-330" 6 | "CaptionWidth"="-330" 7 | "CaptionFont"=hex:f4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,\ 8 | 00,00,00,01,00,00,05,00,53,00,65,00,67,00,6f,00,65,00,20,00,55,00,49,00,00,\ 9 | 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\ 10 | 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 11 | "ScrollWidth"="-255" 12 | "ScrollHeight"="-255" 13 | "PaddedBorderWidth"="-60" -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/sct-bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: SCT Bug 3 | about: A standard bug report 4 | title: "[BUG] Title" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Reproduction** 14 | When does this happen?/What did you do to make this happen? 15 | 16 | **Expected behavior** 17 | A clear and concise description of what you expected to happen. 18 | 19 | **Screenshots** 20 | Add them, without them I'm not helping anyone :/ 21 | 22 | **Environment:** 23 | - OS: (Win10 ver xxxx / Win8.1) 24 | - SCT Version (x.x.x) 25 | 26 | **Additional info** 27 | Other stuff that might help investigating the issue 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # THIS IS AN ARCHIVE 2 | Starting with SCT version 2.0.0, the project is no longer open-source. This page only exists for archival purposes. The latest versions of Simple Classic Theme will from now on be available from https://simpleclassictheme.nl, the new official website for the project. 3 | 4 | # Simple Classic Theme 5 | 6 | A basic utility to bring back Classic Theme to newer versions of the Windows operating system. Includes a setup wizard that automatically installs everything the user wants.Supports Windows 8.1 and Windows 10 (1803+ only). 7 | 8 | For more info check the thread on the WinClassic Boards. 9 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/EnableThemeScript.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM =================================== 3 | REM Generated by SimpleClassicTheme 4 | REM Version {ver} 5 | REM 6 | REM Copyright ©2021 Anis Errais 7 | REM =================================== 8 | goto %1 9 | 10 | 11 | :pre 12 | REM =================================== 13 | REM Programs to run before 14 | REM enabling classic theme 15 | REM =================================== 16 | 17 | 18 | goto both 19 | :post 20 | REM =================================== 21 | REM Programs to run after 22 | REM enabling classic theme 23 | REM =================================== 24 | 25 | 26 | goto both 27 | :both 28 | REM =================================== 29 | REM Programs to run before and after 30 | REM enabling classic theme 31 | REM =================================== 32 | 33 | 34 | exit -------------------------------------------------------------------------------- /SimpleClassicTheme/Resources/DisableThemeScript.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM =================================== 3 | REM Generated by SimpleClassicTheme 4 | REM Version {ver} 5 | REM 6 | REM Copyright ©2021 Anis Errais 7 | REM =================================== 8 | goto %1 9 | 10 | 11 | :pre 12 | REM =================================== 13 | REM Programs to run before 14 | REM disabling classic theme 15 | REM =================================== 16 | 17 | 18 | goto both 19 | :post 20 | REM =================================== 21 | REM Programs to run after 22 | REM disabling classic theme 23 | REM =================================== 24 | 25 | 26 | goto both 27 | :both 28 | REM =================================== 29 | REM Programs to run before and after 30 | REM disabling classic theme 31 | REM =================================== 32 | 33 | 34 | exit -------------------------------------------------------------------------------- /SimpleClassicTheme/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 SimpleClassicTheme.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.1.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Function Classes/SystemMenuForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace System.Windows.Forms 9 | { 10 | public class SystemMenuForm : Form 11 | { 12 | [DllImport("user32.dll")] 13 | private static extern bool SetMenu(IntPtr hWnd, IntPtr hMenu); 14 | 15 | private SystemMenu systemMenu; 16 | public SystemMenu SystemMenu 17 | { 18 | get 19 | { 20 | return systemMenu; 21 | } 22 | set 23 | { 24 | SetMenu(Handle, value != null ? value.MenuHandle : IntPtr.Zero); 25 | systemMenu = value; 26 | } 27 | } 28 | 29 | protected override void WndProc(ref Message m) 30 | { 31 | // WM_COMMAND with HIWORD(wParam) == 0 && lParam == 0 32 | if (m.Msg == 0x0111 && 33 | (m.WParam.ToInt32() & 0xFFFF0000) == 0 && 34 | m.LParam.ToInt32() == 0 && 35 | SystemMenu != null) 36 | { 37 | SystemMenu.PerformAction(m.WParam.ToInt32()); 38 | } 39 | 40 | base.WndProc(ref m); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/WelcomePage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Threading.Tasks; 29 | using System.Windows.Forms; 30 | 31 | namespace SimpleClassicTheme.SetupWizard 32 | { 33 | public partial class WelcomePage : WizardPage 34 | { 35 | public WelcomePage() 36 | { 37 | InitializeComponent(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /SimpleClassicTheme.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29102.190 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleClassicTheme", "SimpleClassicTheme\SimpleClassicTheme.csproj", "{0929C14C-9E7B-4F2D-ADFD-67CE83618471}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Release|Any CPU = Release|Any CPU 13 | Release|x64 = Release|x64 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Debug|x64.ActiveCfg = Debug|x64 19 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Debug|x64.Build.0 = Debug|x64 20 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Release|x64.ActiveCfg = Release|x64 23 | {0929C14C-9E7B-4F2D-ADFD-67CE83618471}.Release|x64.Build.0 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {FD7FDB46-344F-4F2E-AF53-55237913C690} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Unfinished/WMITest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Management; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace SimpleClassicTheme.Forms 13 | { 14 | public partial class WMITest : Form 15 | { 16 | public WMITest() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void WMITest_Load(object sender, EventArgs e) 22 | { 23 | ManagementObjectSearcher os_searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); 24 | foreach (ManagementObject mobj in os_searcher.Get()) 25 | { 26 | foreach (PropertyData j in mobj.Properties) 27 | { 28 | try 29 | { 30 | object val = j.Value; 31 | if (val != null) 32 | listView1.Items.Add(j.Name).SubItems.Add(val.ToString()); 33 | else 34 | listView1.Items.Add(j.Name).SubItems.Add("System.Management.PropertyData.Value.**get** returned null."); 35 | } 36 | catch (Exception ex) 37 | { 38 | listView1.Items.Add(j.Name).SubItems.Add(ex.Message); 39 | } 40 | } 41 | } 42 | 43 | foreach (ColumnHeader col in listView1.Columns) 44 | { 45 | col.Width = -2; 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Function Classes/UsefulRegistryKeys.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Microsoft.Win32; 21 | 22 | namespace SimpleClassicTheme 23 | { 24 | internal static class UsefulRegistryKeys 25 | { 26 | public static bool Borders3D 27 | { 28 | get 29 | { 30 | RegistryKey hKey = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); 31 | byte[] upm = (byte[])hKey.GetValue("UserPreferencesMask"); 32 | hKey.Close(); 33 | return (upm[2] & 0b10) == 0; 34 | } 35 | set 36 | { 37 | RegistryKey hKey = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); 38 | byte[] upm = (byte[])hKey.GetValue("UserPreferencesMask"); 39 | upm[2] ^= 0b10; 40 | hKey.SetValue("UserPreferencesMask", upm); 41 | hKey.Close(); 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /README.htm: -------------------------------------------------------------------------------- 1 |
Simple Classic Theme
2 |
Basically, I saw this thread which is an amazing solution for Classic Theme and decided I wanted to create a GUI for it. It's a simple .NET app which does the following things: 3 | 4 |
Please give me suggestions on how to improve this app (eg. registry tweaks for buggy things)
5 |
Screenshot of GUI running on Windows Insider Preview (post-1903):
6 |
sc 7 | 8 |
Command Line Usage 9 |
10 | SimpleClassicTheme.exe {ARGS..} 11 | Operations: 12 | Arguments: 14 | 15 |
TODO 16 |
-------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallPathPage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Threading.Tasks; 29 | using System.Windows.Forms; 30 | 31 | namespace SimpleClassicTheme.SetupWizard 32 | { 33 | public partial class InstallPathPage : WizardPage 34 | { 35 | public InstallPathPage() 36 | { 37 | InitializeComponent(); 38 | } 39 | 40 | private void InstallPathPage_Load(object sender, EventArgs e) 41 | { 42 | textBox1.Text = SetupHandler.InstallPath; 43 | } 44 | 45 | private void button1_Click(object sender, EventArgs e) 46 | { 47 | folderBrowserDialog1.SelectedPath = textBox1.Text; 48 | if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) 49 | { 50 | textBox1.Text = folderBrowserDialog1.SelectedPath; 51 | } 52 | } 53 | 54 | private void InstallPathPage_LeavePage(object sender, EventArgs e) 55 | { 56 | SetupHandler.InstallPath = textBox1.Text; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/FinishedPage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Diagnostics; 26 | using System.Drawing; 27 | using System.Linq; 28 | using System.Text; 29 | using System.Threading.Tasks; 30 | using System.Windows.Forms; 31 | 32 | namespace SimpleClassicTheme.SetupWizard 33 | { 34 | public partial class FinishedPage : WizardPage 35 | { 36 | public FinishedPage(bool failed = false) 37 | { 38 | InitializeComponent(); 39 | if (failed) 40 | { 41 | label1.Text = "Setup Wizard Failed"; 42 | label2.Text = "The wizard was interrupted before Simple Classic Theme could be completely installed.\n\nYour system has not been modified. To install this program at a later time, please run the wizard again.\n\n\n\nClick Finish to exit the wizard."; 43 | NextPageRequested += delegate 44 | { 45 | Environment.Exit(0); 46 | }; 47 | } 48 | } 49 | 50 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 51 | { 52 | Process.Start("https://github.com/Craftplacer/ClassicSuite"); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/LicensePage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Diagnostics; 26 | using System.Drawing; 27 | using System.IO; 28 | using System.Linq; 29 | using System.Text; 30 | using System.Threading.Tasks; 31 | using System.Windows.Forms; 32 | 33 | namespace SimpleClassicTheme.SetupWizard 34 | { 35 | public partial class LicensePage : WizardPage 36 | { 37 | public LicensePage() 38 | { 39 | InitializeComponent(); 40 | } 41 | 42 | private void button1_Click(object sender, EventArgs e) 43 | { 44 | string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".txt"; 45 | File.WriteAllText(fileName, textBox1.Text); 46 | 47 | ProcessStartInfo psi = new ProcessStartInfo(fileName); 48 | psi.Verb = "PRINT"; 49 | Process.Start(psi); 50 | } 51 | 52 | private void checkBox1_CheckedChanged(object sender, EventArgs e) 53 | { 54 | AllowedButtons = checkBox1.Checked ? 55 | Craftplacer.ClassicSuite.Wizards.Enums.AllowedButtons.All : 56 | Craftplacer.ClassicSuite.Wizards.Enums.AllowedButtons.None; 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Unfinished/ThemeConfigurationForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Runtime.InteropServices; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace SimpleClassicTheme.Forms 13 | { 14 | public partial class ThemeConfigurationForm : Form 15 | { 16 | [StructLayout(LayoutKind.Sequential, Size = 16)] 17 | struct RECT 18 | { 19 | public int Left; 20 | public int Top; 21 | public int Right; 22 | public int Bottom; 23 | public int Width 24 | { 25 | get => Right - Left; 26 | set => Right = Left + value; 27 | } 28 | public int Height 29 | { 30 | get => Bottom - Top; 31 | set => Bottom = Top + value; 32 | } 33 | 34 | public RECT(int l, int t, int r, int b) 35 | { 36 | Left = l; Top = t; Right = r; Bottom = b; 37 | } 38 | public Rectangle ToRectangle() => new Rectangle(Left, Top, Width, Height); 39 | public static RECT FromRectangle(Rectangle r) => new RECT(r.Left, r.Top, r.Right, r.Bottom); 40 | } 41 | 42 | [DllImport("user32.dll")] 43 | static extern IntPtr SetSysColorsTemp(int cElements, int[] lpaElements, int[] lpaRgbValues); 44 | [DllImport("user32.dll")] 45 | static extern IntPtr SetSysColorsTemp(int cElements, int[] lpaElements, IntPtr lpaRgbValues); 46 | [DllImport("user32.dll")] 47 | static extern bool DrawFrameControl(IntPtr hDc, IntPtr lpRect, int cFrameType, int cFrameState); 48 | static int COLOR_BTNFACE = 15; 49 | static int DFC_CAPTION = 1; 50 | 51 | public ThemeConfigurationForm() 52 | { 53 | InitializeComponent(); 54 | } 55 | 56 | private void panel1_Paint(object sender, PaintEventArgs e) 57 | { 58 | IntPtr restoreHandle = SetSysColorsTemp(1, new int[] { COLOR_BTNFACE }, new int[] { ColorTranslator.ToWin32(Color.Lime) }); 59 | 60 | IntPtr hDc = e.Graphics.GetHdc(); 61 | 62 | RECT rect = RECT.FromRectangle(e.ClipRectangle); 63 | IntPtr lpRect = Marshal.AllocHGlobal(Marshal.SizeOf(rect)); 64 | Marshal.StructureToPtr(rect, lpRect, true); 65 | 66 | DrawFrameControl(hDc, lpRect, DFC_CAPTION, 1); 67 | 68 | SetSysColorsTemp(0, null, restoreHandle); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SimpleClassicTheme f.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net5.0-windows 6 | true 7 | false 8 | 9 | SimpleClassicTheme 10 | SimpleClassicTheme 11 | 12 | 13 | 14 | 15 | tlbimp 16 | 0 17 | 1 18 | f935dc20-1cf0-11d0-adb9-00c04fd58a0b 19 | 0 20 | false 21 | true 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll 32 | 33 | 34 | ..\packages\Craftplacer.ClassicSuite.Wizards.1.3.0\lib\Craftplacer.ClassicSuite.Wizards.dll 35 | 36 | 37 | ..\packages\NtApiDotNet.1.1.31\lib\net45\NtApiDotNet.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using System.Reflection; 21 | using System.Runtime.CompilerServices; 22 | using System.Runtime.InteropServices; 23 | 24 | // General Information about an assembly is controlled through the following 25 | // set of attributes. Change these attribute values to modify the information 26 | // associated with an assembly. 27 | [assembly: AssemblyTitle("Simple Classic Theme")] 28 | [assembly: AssemblyDescription("Simple tool for enabling Classic Theme post Windows 7")] 29 | [assembly: AssemblyConfiguration("")] 30 | [assembly: AssemblyCompany("Anis Errais")] 31 | [assembly: AssemblyProduct("Simple Classic Theme")] 32 | [assembly: AssemblyCopyright("© 1337ftw 2022")] 33 | [assembly: AssemblyTrademark("")] 34 | [assembly: AssemblyCulture("")] 35 | 36 | // Setting ComVisible to false makes the types in this assembly not visible 37 | // to COM components. If you need to access a type in this assembly from 38 | // COM, set the ComVisible attribute to true on that type. 39 | [assembly: ComVisible(false)] 40 | 41 | // The following GUID is for the ID of the typelib if this project is exposed to COM 42 | [assembly: Guid("0929c14c-9e7b-4f2d-adfd-67ce83618471")] 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.6.0.3")] 55 | [assembly: AssemblyFileVersion("1.6.0.3")] 56 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Unfinished/WMITest.Designer.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace SimpleClassicTheme.Forms 3 | { 4 | partial class WMITest 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.listView1 = new System.Windows.Forms.ListView(); 33 | this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); 34 | this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); 35 | this.SuspendLayout(); 36 | // 37 | // listView1 38 | // 39 | this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 40 | this.columnHeader1, 41 | this.columnHeader2}); 42 | this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; 43 | this.listView1.HideSelection = false; 44 | this.listView1.Location = new System.Drawing.Point(0, 0); 45 | this.listView1.Name = "listView1"; 46 | this.listView1.Size = new System.Drawing.Size(800, 450); 47 | this.listView1.TabIndex = 0; 48 | this.listView1.UseCompatibleStateImageBehavior = false; 49 | this.listView1.View = System.Windows.Forms.View.Details; 50 | // 51 | // columnHeader1 52 | // 53 | this.columnHeader1.Text = "Name"; 54 | // 55 | // columnHeader2 56 | // 57 | this.columnHeader2.Text = "Value"; 58 | // 59 | // WMITest 60 | // 61 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 62 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 63 | this.ClientSize = new System.Drawing.Size(800, 450); 64 | this.Controls.Add(this.listView1); 65 | this.Name = "WMITest"; 66 | this.Text = "WMITest"; 67 | this.Load += new System.EventHandler(this.WMITest_Load); 68 | this.ResumeLayout(false); 69 | 70 | } 71 | 72 | #endregion 73 | 74 | private System.Windows.Forms.ListView listView1; 75 | private System.Windows.Forms.ColumnHeader columnHeader1; 76 | private System.Windows.Forms.ColumnHeader columnHeader2; 77 | } 78 | } -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/WelcomePage.Designer.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace SimpleClassicTheme.SetupWizard 3 | { 4 | partial class WelcomePage 5 | { 6 | /// 7 | /// Required designer variable. 8 | /// 9 | private System.ComponentModel.IContainer components = null; 10 | 11 | /// 12 | /// Clean up any resources being used. 13 | /// 14 | /// true if managed resources should be disposed; otherwise, false. 15 | protected override void Dispose(bool disposing) 16 | { 17 | if (disposing && (components != null)) 18 | { 19 | components.Dispose(); 20 | } 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Component Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.label2 = new System.Windows.Forms.Label(); 34 | this.SuspendLayout(); 35 | // 36 | // label1 37 | // 38 | this.label1.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 39 | this.label1.Location = new System.Drawing.Point(13, 20); 40 | this.label1.Name = "label1"; 41 | this.label1.Size = new System.Drawing.Size(302, 53); 42 | this.label1.TabIndex = 0; 43 | this.label1.Text = "Welcome to the Simple Classic Theme setup Wizard"; 44 | // 45 | // label2 46 | // 47 | this.label2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 48 | this.label2.Location = new System.Drawing.Point(13, 82); 49 | this.label2.Name = "label2"; 50 | this.label2.Size = new System.Drawing.Size(302, 53); 51 | this.label2.TabIndex = 1; 52 | this.label2.Text = "This wizard will install Simple Classic Theme onto your computer, and configure i" + 53 | "t. To continue, press Next.\r\n"; 54 | // 55 | // WelcomePage 56 | // 57 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 58 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 59 | this.Controls.Add(this.label2); 60 | this.Controls.Add(this.label1); 61 | this.Name = "WelcomePage"; 62 | this.PageParts = Craftplacer.ClassicSuite.Wizards.Enums.PageParts.Sidebar; 63 | this.SidebarImage = global::SimpleClassicTheme.Properties.Resources.winxp_wizard; 64 | this.Size = new System.Drawing.Size(333, 313); 65 | this.ResumeLayout(false); 66 | 67 | } 68 | 69 | #endregion 70 | 71 | private System.Windows.Forms.Label label1; 72 | private System.Windows.Forms.Label label2; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/OptionsForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.IO; 24 | using System.Linq; 25 | using System.Windows.Forms; 26 | using Microsoft.Win32; 27 | 28 | namespace SimpleClassicTheme.Forms 29 | { 30 | public partial class OptionsForm : Form 31 | { 32 | public Dictionary TaskbarTypeDisplay = new Dictionary(); 33 | 34 | public OptionsForm() 35 | { 36 | InitializeComponent(); 37 | } 38 | 39 | private void OptionsForm_Load(object sender, EventArgs e) 40 | { 41 | comboBoxUpdates.SelectedItem = Configuration.UpdateMode; 42 | numericUpDownTaskbarDelay.Value = Configuration.TaskbarDelay; 43 | checkBox1.Checked = Configuration.EnableTaskbar; 44 | checkBox2.Checked = Configuration.BetaUpdates; 45 | taskbarTypeSelector1.Enabled = numericUpDownTaskbarDelay.Enabled = label2.Enabled = checkBox1.Checked; 46 | } 47 | 48 | private void buttonOK_Click(object sender, EventArgs e) 49 | { 50 | buttonApply.PerformClick(); 51 | buttonCancel.PerformClick(); 52 | } 53 | 54 | private void buttonCancel_Click(object sender, EventArgs e) 55 | { 56 | Close(); 57 | } 58 | 59 | private void buttonApply_Click(object sender, EventArgs e) 60 | { 61 | Configuration.UpdateMode = (string)comboBoxUpdates.SelectedItem; 62 | Configuration.TaskbarType = taskbarTypeSelector1.SelectedItem; 63 | Configuration.TaskbarDelay = (int)numericUpDownTaskbarDelay.Value; 64 | Configuration.EnableTaskbar = checkBox1.Checked; 65 | Configuration.BetaUpdates = checkBox2.Checked; 66 | buttonApply.Enabled = false; 67 | } 68 | 69 | private void valueChangedEvent(object sender, EventArgs e) 70 | { 71 | buttonApply.Enabled = true; 72 | } 73 | 74 | private void numericUpDownTaskbarDelay_ValueChanged(object sender, EventArgs e) 75 | { 76 | valueChangedEvent(sender, e); 77 | } 78 | 79 | private void checkBox1_CheckedChanged(object sender, EventArgs e) 80 | { 81 | taskbarTypeSelector1.Enabled = numericUpDownTaskbarDelay.Enabled = label2.Enabled = checkBox1.Checked; 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallationPage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Runtime.InteropServices; 28 | using System.Text; 29 | using System.Threading.Tasks; 30 | using System.Windows.Forms; 31 | 32 | namespace SimpleClassicTheme.SetupWizard 33 | { 34 | public partial class InstallationPage : WizardPage 35 | { 36 | public string progressText = ""; 37 | public BackgroundWorker progressWorker => bgWork; 38 | 39 | public InstallationPage() 40 | { 41 | InitializeComponent(); 42 | } 43 | 44 | private void InstallationPage_EnterPage(object sender, EventArgs e) 45 | { 46 | bgWork.RunWorkerAsync(); 47 | } 48 | 49 | public void SetProgressBarColor(int state) 50 | { 51 | progressBar1.SetState(state); 52 | } 53 | 54 | private void bgWork_DoWork(object sender, DoWorkEventArgs e) 55 | { 56 | #if DEBUG 57 | progressText = "Installing Simple Classic Theme..."; 58 | progressWorker.ReportProgress(0); 59 | System.Threading.Thread.Sleep(5000); 60 | progressWorker.ReportProgress(100); 61 | #else 62 | SetupHandler.InstallSCT(this); 63 | #endif 64 | } 65 | 66 | private void bgWork_ProgressChanged(object sender, ProgressChangedEventArgs e) 67 | { 68 | label3.Text = progressText; 69 | progressBar1.Value = e.ProgressPercentage; 70 | } 71 | 72 | private void bgWork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 73 | { 74 | if (progressBar1.Value == 100) 75 | OnNextPageRequested(); 76 | } 77 | } 78 | 79 | public static class ModifyProgressBarColor 80 | { 81 | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] 82 | static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr w, IntPtr l); 83 | public static void SetState(this ProgressBar pBar, int state) 84 | { 85 | SendMessage(pBar.Handle, 1040, (IntPtr)state, IntPtr.Zero); 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Information/AboutForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | using Microsoft.Win32; 22 | using System; 23 | using System.Drawing; 24 | using System.Reflection; 25 | using System.Windows.Forms; 26 | 27 | namespace SimpleClassicTheme 28 | { 29 | public partial class About : Form 30 | { 31 | public About() 32 | { 33 | InitializeComponent(); 34 | ClientSize = new Size(400, 440); 35 | 36 | if (ExtraFunctions.ShouldDrawLight(SystemColors.Window)) 37 | pictureBox1.Image = Properties.Resources.sct_banner_light_400x73; 38 | else 39 | pictureBox1.Image = Properties.Resources.sct_banner_dark_400x73; 40 | } 41 | 42 | private void About_Load(object sender, EventArgs e) 43 | { 44 | string ver = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", Environment.OSVersion.Version.Build.ToString()).ToString(); 45 | label2.Text = label2.Text.Replace("%build%", ver); 46 | 47 | string name = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", "Windows " + Environment.OSVersion.Version.Major.ToString()).ToString(); 48 | label2.Text = label2.Text.Replace("%osver%", name); 49 | 50 | string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 51 | label2.Text = label2.Text.Replace("%username%", userName); 52 | 53 | Version sctVersion = Assembly.GetExecutingAssembly().GetName().Version; 54 | label2.Text = label2.Text.Replace("%v", sctVersion.ToString(3)).Replace("%r", sctVersion.Revision.ToString()); 55 | 56 | Color A = SystemColors.ActiveCaption; 57 | Color B = SystemColors.GradientActiveCaption; 58 | Bitmap bitmap = new Bitmap(400, 5); 59 | for (int i = 0; i < 200; i++) 60 | { 61 | int r = A.R + ((B.R - A.R) * i / 200); 62 | int g = A.G + ((B.G - A.G) * i / 200); 63 | int b = A.B + ((B.B - A.B) * i / 200); 64 | 65 | for (int y = 0; y < 5; y++) 66 | bitmap.SetPixel(i, y, Color.FromArgb(r, g, b)); 67 | 68 | for (int y = 0; y < 5; y++) 69 | bitmap.SetPixel(399 - i, y, Color.FromArgb(r, g, b)); 70 | } 71 | pictureBox2.Image = bitmap; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Other Files/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Information/CommandLineHelpForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SimpleClassicTheme.Forms 2 | { 3 | partial class CommandLineHelpForm 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(CommandLineHelpForm)); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.panel1.SuspendLayout(); 35 | this.SuspendLayout(); 36 | // 37 | // panel1 38 | // 39 | this.panel1.AutoScroll = true; 40 | this.panel1.Controls.Add(this.label1); 41 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 42 | this.panel1.Location = new System.Drawing.Point(0, 0); 43 | this.panel1.Name = "panel1"; 44 | this.panel1.Size = new System.Drawing.Size(882, 450); 45 | this.panel1.TabIndex = 0; 46 | // 47 | // label1 48 | // 49 | this.label1.AutoSize = true; 50 | this.label1.Font = new System.Drawing.Font("Consolas", 9.25F); 51 | this.label1.Location = new System.Drawing.Point(12, 9); 52 | this.label1.Name = "label1"; 53 | this.label1.Size = new System.Drawing.Size(847, 915); 54 | this.label1.TabIndex = 0; 55 | this.label1.Text = resources.GetString("label1.Text"); 56 | // 57 | // CommandLineHelpForm 58 | // 59 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 60 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 61 | this.AutoScroll = true; 62 | this.ClientSize = new System.Drawing.Size(882, 450); 63 | this.Controls.Add(this.panel1); 64 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 65 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 66 | this.Name = "CommandLineHelpForm"; 67 | this.Text = "Simple Classic Theme - Commandline help"; 68 | this.panel1.ResumeLayout(false); 69 | this.panel1.PerformLayout(); 70 | this.ResumeLayout(false); 71 | 72 | } 73 | 74 | #endregion 75 | 76 | private System.Windows.Forms.Panel panel1; 77 | private System.Windows.Forms.Label label1; 78 | } 79 | } -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallOptionsPage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Threading.Tasks; 29 | using System.Windows.Forms; 30 | 31 | namespace SimpleClassicTheme.SetupWizard 32 | { 33 | public partial class InstallOptionsPage : WizardPage 34 | { 35 | UtilitiesPage page; 36 | WizardPage nextPage; 37 | 38 | public InstallOptionsPage() 39 | { 40 | InitializeComponent(); 41 | page = new UtilitiesPage(); 42 | } 43 | 44 | private void checkBox3_CheckedChanged(object sender, EventArgs e) 45 | { 46 | if (checkBox3.Checked) 47 | { 48 | nextPage = NextPage; 49 | NextPage = page; 50 | page.NextPage = nextPage; 51 | } 52 | else 53 | { 54 | NextPage = nextPage; 55 | } 56 | } 57 | 58 | private void InstallOptionsPage_EnterPage(object sender, EventArgs e) 59 | { 60 | SetupHandler.SelectedTaskbarType = TaskbarType.SimpleClassicThemeTaskbar; 61 | SetupHandler.ConfigureOSSM = false; 62 | SetupHandler.ConfigureOSTB = false; 63 | SetupHandler.ConfigureSiB = false; 64 | SetupHandler.EnableOnBoot = true; 65 | SetupHandler.UtilitiesToBeInstalled.Clear(); 66 | } 67 | 68 | private void InstallOptionsPage_LeavePage(object sender, EventArgs e) 69 | { 70 | if (checkBox4.Checked) 71 | { 72 | SetupHandler.SelectedTaskbarType = taskbarTypeSelector1.SelectedItem; 73 | if (SetupHandler.SelectedTaskbarType == TaskbarType.StartIsBackOpenShell) 74 | { 75 | SetupHandler.ConfigureOSSM = true; 76 | SetupHandler.ConfigureOSTB = true; 77 | SetupHandler.ConfigureSiB = true; 78 | SetupHandler.UtilitiesToBeInstalled.AddRange(new InstallableUtility[] { InstallableUtility.OpenShell, InstallableUtility.StartIsBackPlusPlus }); 79 | } 80 | } 81 | else SetupHandler.SelectedTaskbarType = TaskbarType.None; 82 | 83 | SetupHandler.EnableOnBoot = checkBox2.Checked; 84 | } 85 | 86 | private void checkBox4_CheckedChanged(object sender, EventArgs e) 87 | { 88 | taskbarTypeSelector1.Enabled = checkBox4.Checked; 89 | } 90 | 91 | private void taskbarTypeSelector1_SelectedItemChanged(object sender, EventArgs e) 92 | { 93 | 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /SimpleClassicTheme/ApplicationEntryPoint.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Windows.Forms; 24 | using System.Security.Principal; 25 | using Microsoft.Win32; 26 | using System.Diagnostics; 27 | using System.IO; 28 | using System.Reflection; 29 | using System.Windows.Forms.VisualStyles; 30 | using System.Linq; 31 | 32 | namespace SimpleClassicTheme 33 | { 34 | static class ApplicationEntryPoint 35 | { 36 | public static bool LoadGUI { get; set; } 37 | 38 | /// 39 | /// The main entry point for the application. 40 | /// 41 | [STAThread] 42 | static void Main(string[] args) 43 | { 44 | Application.EnableVisualStyles(); 45 | Application.VisualStyleState = VisualStyleState.NoneEnabled; 46 | Application.SetCompatibleTextRenderingDefault(false); 47 | 48 | //Application.Run(new Forms.ThemeConfigurationForm()); return; 49 | 50 | bool windows = Environment.OSVersion.Platform == PlatformID.Win32NT; 51 | bool windows10or11 = Environment.OSVersion.Version.Major == 10 /*&& Int32.Parse(Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId", "").ToString()) >= 1803*/; 52 | bool windows8 = Environment.OSVersion.Version.Major == 6 && (Environment.OSVersion.Version.Minor == 2 || Environment.OSVersion.Version.Minor == 3); 53 | 54 | // Check if SCT is running on a compatible operating system. 55 | if (!(windows && (windows10or11 || windows8))) 56 | { 57 | MessageBox.Show("SCT is incompatible with this version of Windows.", "Simple Classic Theme"); 58 | #if DEBUG 59 | #else 60 | return; 61 | #endif 62 | } 63 | 64 | // Check if SCT is running on a compatible version of .NET (4.8 or higher). 65 | int netReleaseVersion = (int)Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\").GetValue("Release"); 66 | if (netReleaseVersion < 528040) 67 | { 68 | MessageBox.Show("SCT requires .NET Framework version 4.8 or higher.", "Simple Classic Theme"); 69 | return; 70 | } 71 | 72 | Forms.LoaderForm loader = new Forms.LoaderForm(); 73 | loader.Show(); 74 | LoadGUI = loader.LoadSCT(args); 75 | loader.Close(); 76 | 77 | while (LoadGUI) 78 | { 79 | LoadGUI = false; 80 | Application.VisualStyleState = Configuration.Enabled ? VisualStyleState.NoneEnabled : VisualStyleState.ClientAndNonClientAreasEnabled; 81 | Application.Run(new MainForm()); 82 | } 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/UpdateForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme 21 | { 22 | partial class Updater 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Windows Form Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Updater)); 51 | this.label1 = new System.Windows.Forms.Label(); 52 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 53 | this.SuspendLayout(); 54 | // 55 | // label1 56 | // 57 | this.label1.AutoSize = true; 58 | this.label1.Location = new System.Drawing.Point(12, 9); 59 | this.label1.Name = "label1"; 60 | this.label1.Size = new System.Drawing.Size(117, 13); 61 | this.label1.TabIndex = 1; 62 | this.label1.Text = "Checking for updates..."; 63 | // 64 | // progressBar1 65 | // 66 | this.progressBar1.Location = new System.Drawing.Point(15, 24); 67 | this.progressBar1.Margin = new System.Windows.Forms.Padding(2); 68 | this.progressBar1.Name = "progressBar1"; 69 | this.progressBar1.Size = new System.Drawing.Size(375, 22); 70 | this.progressBar1.TabIndex = 2; 71 | // 72 | // Updater 73 | // 74 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 75 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 76 | this.ClientSize = new System.Drawing.Size(401, 57); 77 | this.Controls.Add(this.progressBar1); 78 | this.Controls.Add(this.label1); 79 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 80 | this.Name = "Updater"; 81 | this.Text = "Simple Classic Theme - Update checker"; 82 | this.Shown += new System.EventHandler(this.Updater_Load); 83 | this.ResumeLayout(false); 84 | this.PerformLayout(); 85 | 86 | } 87 | 88 | #endregion 89 | private System.Windows.Forms.Label label1; 90 | private System.Windows.Forms.ProgressBar progressBar1; 91 | } 92 | } -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/UtilitiesPage.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using Craftplacer.ClassicSuite.Wizards.Pages; 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Threading.Tasks; 29 | using System.Windows.Forms; 30 | 31 | namespace SimpleClassicTheme.SetupWizard 32 | { 33 | public partial class UtilitiesPage : WizardPage 34 | { 35 | List<(string, InstallableUtility)> utilities = new List<(string, InstallableUtility)>(); 36 | 37 | public UtilitiesPage() 38 | { 39 | InitializeComponent(); 40 | } 41 | 42 | private void UtilitiesPage_EnterPage(object sender, EventArgs e) 43 | { 44 | listBox1.Items.Clear(); 45 | utilities.Clear(); 46 | 47 | List tempUtilities = InstallableUtility.GetInstallableUtilities(); 48 | tempUtilities.Remove(tempUtilities.Where((a) => a.Name == "Open-Shell").FirstOrDefault()); 49 | foreach (InstallableUtility utility in tempUtilities) 50 | utilities.Add(((utility.IsInstalled ? "(Installed) " : "") + utility.Name, utility)); 51 | 52 | if (SetupHandler.SelectedTaskbarType == TaskbarType.StartIsBackOpenShell) 53 | { 54 | label2.Visible = true; 55 | label3.Visible = true; 56 | checkBox1.Checked = true; 57 | checkBox2.Checked = true; 58 | checkBox3.Checked = true; 59 | checkBox1.Enabled = false; 60 | checkBox2.Enabled = false; 61 | checkBox3.Enabled = false; 62 | utilities.Remove(utilities.Where((a) => a.Item2.Name == "StartIsBack++").FirstOrDefault()); 63 | } 64 | else 65 | { 66 | label2.Visible = false; 67 | label3.Visible = false; 68 | checkBox1.Checked = false; 69 | checkBox2.Checked = false; 70 | checkBox3.Checked = false; 71 | checkBox1.Enabled = true; 72 | checkBox2.Enabled = true; 73 | checkBox3.Enabled = true; 74 | } 75 | 76 | utilities.Sort((x, y) => { return x.Item1.CompareTo(y.Item1); }); 77 | foreach ((string, InstallableUtility) utility in utilities) 78 | listBox1.Items.Add(utility.Item1); 79 | } 80 | 81 | private void UtilitiesPage_LeavePage(object sender, EventArgs e) 82 | { 83 | foreach (string s in listBox1.SelectedItems) 84 | SetupHandler.UtilitiesToBeInstalled.Add(utilities.Where((a) => a.Item1 == s).FirstOrDefault().Item2); 85 | 86 | if (SetupHandler.SelectedTaskbarType != TaskbarType.StartIsBackOpenShell) 87 | { 88 | if (checkBox1.Checked) 89 | SetupHandler.UtilitiesToBeInstalled.Add(InstallableUtility.OpenShell); 90 | SetupHandler.ConfigureOSSM = checkBox2.Checked; 91 | SetupHandler.ConfigureOSTB = checkBox3.Checked; 92 | } 93 | } 94 | 95 | private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 96 | { 97 | listBox1.ClearSelected(); 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/UtilityManagerForm.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Diagnostics; 23 | using System.IO; 24 | using System.IO.Compression; 25 | using System.Net; 26 | using System.Windows.Forms; 27 | 28 | namespace SimpleClassicTheme.Forms 29 | { 30 | public partial class UtilityManagerForm : Form 31 | { 32 | List<(string, InstallableUtility)> utilities = new List<(string, InstallableUtility)>(); 33 | 34 | public UtilityManagerForm() 35 | { 36 | InitializeComponent(); 37 | ListUtilities(); 38 | } 39 | 40 | public void ListUtilities() 41 | { 42 | utilities.Clear(); 43 | listBox1.Items.Clear(); 44 | 45 | List tempUtilities = InstallableUtility.GetInstallableUtilities(); 46 | 47 | foreach (InstallableUtility utility in tempUtilities) 48 | utilities.Add(((utility.IsInstalled ? "(Installed) " : "") + utility.Name, utility)); 49 | 50 | utilities.Sort((x, y) => { return x.Item1.CompareTo(y.Item1); }); 51 | 52 | foreach ((string, InstallableUtility) utility in utilities) 53 | listBox1.Items.Add(utility.Item1); 54 | 55 | buttonOpenTClock.Enabled = Directory.Exists($"{Configuration.InstallPath}T-Clock\\"); 56 | buttonInstallTClock.Text = buttonOpenTClock.Enabled ? "Uninstall" : "Install"; 57 | 58 | // T-Clock: Any version of Windows but only with Taskbar enhancements 59 | groupBox1.Enabled = Configuration.EnableTaskbar && 60 | (Configuration.TaskbarType == TaskbarType.StartIsBackOpenShell || 61 | Configuration.TaskbarType == TaskbarType.Windows81Vanilla); 62 | } 63 | 64 | private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 65 | { 66 | if (listBox1.SelectedIndex != -1) 67 | { 68 | bool isInstalled = ((string)listBox1.SelectedItem).StartsWith("(Installed) "); 69 | button2.Enabled = !isInstalled; 70 | button3.Enabled = isInstalled; 71 | } 72 | } 73 | 74 | private void button2_Click(object sender, EventArgs e) 75 | { 76 | int index = listBox1.SelectedIndex; 77 | InstallableUtility utility = utilities[index].Item2; 78 | int returncode = utility.Install(); 79 | if (returncode != 0) 80 | { 81 | MessageBox.Show($"The installation has failed. (0x{returncode:X8})", "SCT Classic Utility Manager"); 82 | } 83 | else 84 | { 85 | MessageBox.Show($"The installation was succesful. (0x{returncode:X8})", "SCT Classic Utility Manager"); 86 | } 87 | ListUtilities(); 88 | BringToFront(); 89 | } 90 | 91 | private void button3_Click(object sender, EventArgs e) 92 | { 93 | int index = listBox1.SelectedIndex; 94 | InstallableUtility utility = utilities[index].Item2; 95 | int returncode = utility.Uninstall(); 96 | if (returncode != 0) 97 | { 98 | MessageBox.Show($"The removal has failed. (0x{returncode:X8})", "SCT Classic Utility Manager"); 99 | } 100 | else 101 | { 102 | MessageBox.Show($"The removal was succesful. (0x{returncode:X8})", "SCT Classic Utility Manager"); 103 | } 104 | ListUtilities(); 105 | BringToFront(); 106 | } 107 | 108 | private void button1_Click(object sender, EventArgs e) 109 | { 110 | Close(); 111 | } 112 | 113 | private void buttonInstallTClock_Click(object sender, EventArgs e) 114 | { 115 | if (!buttonOpenTClock.Enabled) 116 | { 117 | using (WebClient c = new WebClient()) 118 | { 119 | c.DownloadFile("https://github.com/White-Tiger/T-Clock/releases/download/v2.4.4%23492-rc/T-Clock.zip", $"{Configuration.InstallPath}t-clock.zip"); 120 | } 121 | Directory.CreateDirectory($"{Configuration.InstallPath}T-Clock\\"); 122 | ZipFile.ExtractToDirectory($"{Configuration.InstallPath}t-clock.zip", $"{Configuration.InstallPath}T-Clock\\"); 123 | File.Delete($"{Configuration.InstallPath}t-clock.zip"); 124 | } 125 | else 126 | { 127 | Directory.Delete($"{Configuration.InstallPath}T-Clock\\", true); 128 | } 129 | ListUtilities(); 130 | BringToFront(); 131 | } 132 | 133 | private void buttonOpenTClock_Click(object sender, EventArgs e) 134 | { 135 | Process.Start($"{Configuration.InstallPath}T-Clock\\Clock64.exe"); 136 | } 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Function Classes/WinApi.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Diagnostics; 23 | using System.Runtime.InteropServices; 24 | using System.Text; 25 | 26 | namespace SimpleClassicTheme 27 | { 28 | static class Kernel32 29 | { 30 | public const int ATTACH_PARENT_PROCESS = -1; 31 | 32 | [DllImport("kernel32.dll")] 33 | public static extern bool AllocConsole(); 34 | 35 | [DllImport("kernel32.dll")] 36 | public static extern bool AttachConsole(int dwProcessId); 37 | 38 | [DllImport("kernel32.dll", SetLastError = true)] 39 | [return: MarshalAs(UnmanagedType.Bool)] 40 | public static extern bool FreeConsole(); 41 | } 42 | 43 | static class User32 44 | { 45 | [StructLayout(LayoutKind.Sequential)] 46 | public struct ACCENTPOLICY 47 | { 48 | public int nAccentState; 49 | public int nFlags; 50 | public uint nColor; 51 | public int nAnimationId; 52 | } 53 | 54 | [StructLayout(LayoutKind.Sequential)] 55 | public struct WINCOMPATTRDATA 56 | { 57 | public int nAttribute; 58 | public IntPtr pData; 59 | public int ulDataSize; 60 | } 61 | 62 | [DllImport("user32.dll", CharSet = CharSet.Unicode)] 63 | public static extern IntPtr GetWindowLongPtrW(IntPtr hWndParent, int index); 64 | 65 | [DllImport("user32.dll", CharSet = CharSet.Unicode)] 66 | public static extern IntPtr SetWindowLongPtrW(IntPtr hWndParent, int index, IntPtr dwNewLong); 67 | 68 | [DllImport("user32.dll", CharSet = CharSet.Unicode)] 69 | public static extern IntPtr FindWindowExW(IntPtr hWndParent, IntPtr hWndChildAfter, string lpszClass, string lpszWindow); 70 | 71 | [DllImport("user32.dll", CharSet = CharSet.Auto)] 72 | public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 73 | 74 | [DllImport("user32.dll")] 75 | public static extern bool SetWindowCompositionAttribute(IntPtr hWnd, ref WINCOMPATTRDATA pAttrData); 76 | 77 | public const int WM_NULL = 0x0000; 78 | public const int WM_GETTEXT = 0x000D; 79 | 80 | public const int WM_SCT = 0x0420; 81 | public const int SCTWP_EXIT = 0x0001; 82 | public const int SCTWP_ISMANAGED = 0x0002; 83 | public const int SCTWP_ISSCT = 0x0003; 84 | public const int SCTLP_FORCE = 0x0001; 85 | 86 | public delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam); 87 | [DllImport("user32.dll")] 88 | public static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam); 89 | [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] 90 | public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); 91 | //[DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")] 92 | //public static extern IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex); 93 | 94 | //public const int GWL_EXSTYLE = -20; 95 | 96 | public static List EnumerateProcessWindowHandles(int processId, string name) 97 | { 98 | List handles = new List(); 99 | 100 | foreach (ProcessThread thread in Process.GetProcessById(processId).Threads) 101 | { 102 | EnumThreadWindows(thread.Id, (hWnd, lParam) => 103 | { 104 | handles.Add(hWnd); 105 | return true; 106 | }, IntPtr.Zero); 107 | } 108 | return handles; 109 | } 110 | 111 | [DllImport("user32.dll", SetLastError = true)] 112 | public static extern bool ExitWindowsEx(uint uFlags, uint dwReason); 113 | } 114 | 115 | static class UxTheme 116 | { 117 | //Sets the theme of a window. if pszSubAppName and pszSubIdList are both a space, the window will be themed Classic 118 | [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)] 119 | public static extern int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string pszSubIdList); 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/GithubDownloader.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme 21 | { 22 | partial class GithubDownloader 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Windows Form Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | this.components = new System.ComponentModel.Container(); 51 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GithubDownloader)); 52 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 53 | this.progressBar2 = new System.Windows.Forms.ProgressBar(); 54 | this.label1 = new System.Windows.Forms.Label(); 55 | this.timer1 = new System.Windows.Forms.Timer(this.components); 56 | this.label2 = new System.Windows.Forms.Label(); 57 | this.SuspendLayout(); 58 | // 59 | // progressBar1 60 | // 61 | this.progressBar1.Location = new System.Drawing.Point(15, 15); 62 | this.progressBar1.Margin = new System.Windows.Forms.Padding(6); 63 | this.progressBar1.Name = "progressBar1"; 64 | this.progressBar1.Size = new System.Drawing.Size(493, 23); 65 | this.progressBar1.TabIndex = 0; 66 | // 67 | // progressBar2 68 | // 69 | this.progressBar2.Location = new System.Drawing.Point(15, 50); 70 | this.progressBar2.Margin = new System.Windows.Forms.Padding(6); 71 | this.progressBar2.Name = "progressBar2"; 72 | this.progressBar2.Size = new System.Drawing.Size(493, 23); 73 | this.progressBar2.TabIndex = 1; 74 | // 75 | // label1 76 | // 77 | this.label1.AutoSize = true; 78 | this.label1.Location = new System.Drawing.Point(15, 85); 79 | this.label1.Margin = new System.Windows.Forms.Padding(6); 80 | this.label1.Name = "label1"; 81 | this.label1.Size = new System.Drawing.Size(115, 13); 82 | this.label1.TabIndex = 2; 83 | this.label1.Text = "Currently doing nothing"; 84 | // 85 | // timer1 86 | // 87 | this.timer1.Tick += new System.EventHandler(this.timer1_Tick); 88 | // 89 | // label2 90 | // 91 | this.label2.AutoSize = true; 92 | this.label2.Location = new System.Drawing.Point(15, 110); 93 | this.label2.Margin = new System.Windows.Forms.Padding(6); 94 | this.label2.Name = "label2"; 95 | this.label2.Size = new System.Drawing.Size(68, 13); 96 | this.label2.TabIndex = 3; 97 | this.label2.Text = "No operation"; 98 | // 99 | // GithubDownloader 100 | // 101 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 102 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 103 | this.ClientSize = new System.Drawing.Size(523, 140); 104 | this.Controls.Add(this.label2); 105 | this.Controls.Add(this.label1); 106 | this.Controls.Add(this.progressBar2); 107 | this.Controls.Add(this.progressBar1); 108 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 109 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 110 | this.MaximizeBox = false; 111 | this.MinimizeBox = false; 112 | this.Name = "GithubDownloader"; 113 | this.Text = "Simple Classic Theme - Git helper"; 114 | this.Load += new System.EventHandler(this.GithubDownloader_Load); 115 | this.ResumeLayout(false); 116 | this.PerformLayout(); 117 | 118 | } 119 | 120 | #endregion 121 | 122 | public System.Windows.Forms.ProgressBar progressBar1; 123 | public System.Windows.Forms.ProgressBar progressBar2; 124 | private System.Windows.Forms.Label label1; 125 | private System.Windows.Forms.Timer timer1; 126 | private System.Windows.Forms.Label label2; 127 | } 128 | } -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/LicensePage.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme.SetupWizard 21 | { 22 | partial class LicensePage 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Component Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LicensePage)); 51 | this.textBox1 = new System.Windows.Forms.TextBox(); 52 | this.checkBox1 = new System.Windows.Forms.CheckBox(); 53 | this.button1 = new System.Windows.Forms.Button(); 54 | this.SuspendLayout(); 55 | // 56 | // textBox1 57 | // 58 | this.textBox1.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 59 | this.textBox1.Location = new System.Drawing.Point(24, 40); 60 | this.textBox1.MaxLength = 40000; 61 | this.textBox1.Multiline = true; 62 | this.textBox1.Name = "textBox1"; 63 | this.textBox1.ReadOnly = true; 64 | this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 65 | this.textBox1.Size = new System.Drawing.Size(449, 157); 66 | this.textBox1.TabIndex = 0; 67 | this.textBox1.Text = resources.GetString("textBox1.Text"); 68 | // 69 | // checkBox1 70 | // 71 | this.checkBox1.AutoSize = true; 72 | this.checkBox1.Location = new System.Drawing.Point(25, 207); 73 | this.checkBox1.Name = "checkBox1"; 74 | this.checkBox1.Size = new System.Drawing.Size(238, 17); 75 | this.checkBox1.TabIndex = 1; 76 | this.checkBox1.Text = "I &accept the terms in the license agreement."; 77 | this.checkBox1.UseVisualStyleBackColor = true; 78 | this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); 79 | // 80 | // button1 81 | // 82 | this.button1.Location = new System.Drawing.Point(398, 203); 83 | this.button1.Name = "button1"; 84 | this.button1.Size = new System.Drawing.Size(75, 23); 85 | this.button1.TabIndex = 2; 86 | this.button1.Text = "&Print"; 87 | this.button1.UseVisualStyleBackColor = true; 88 | this.button1.Click += new System.EventHandler(this.button1_Click); 89 | // 90 | // LicensePage 91 | // 92 | this.AllowedButtons = Craftplacer.ClassicSuite.Wizards.Enums.AllowedButtons.None; 93 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 94 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 95 | this.Controls.Add(this.button1); 96 | this.Controls.Add(this.checkBox1); 97 | this.Controls.Add(this.textBox1); 98 | this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 99 | this.Name = "LicensePage"; 100 | this.PageParts = Craftplacer.ClassicSuite.Wizards.Enums.PageParts.Header; 101 | this.Size = new System.Drawing.Size(497, 253); 102 | this.Subtitle = "Please read the following license agreement carefully."; 103 | this.Title = "License agreement"; 104 | this.ResumeLayout(false); 105 | this.PerformLayout(); 106 | 107 | } 108 | 109 | #endregion 110 | 111 | private System.Windows.Forms.TextBox textBox1; 112 | private System.Windows.Forms.CheckBox checkBox1; 113 | private System.Windows.Forms.Button button1; 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Function Classes/SystemMenu.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Drawing; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | 6 | namespace System.Windows.Forms 7 | { 8 | [Flags] 9 | public enum SystemMenuItemFlags : uint 10 | { 11 | Default = 0x0000, 12 | GrayedAndDisabled = 0x0001, 13 | Disabled = 0x0002, 14 | Bitmap = 0x0004, 15 | Checked = 0x0008, 16 | Popup = 0x0010, 17 | OwnerDraw = 0x0100, 18 | IsSeperator = 0x0800 19 | } 20 | 21 | [Flags] 22 | public enum SystemMenuTrackPopupMenuFlags : uint 23 | { 24 | Default = 0x0000, 25 | 26 | LeftAlign = 0x0000, 27 | HorizontalCenterAlign = 0x0004, 28 | RightAlign = 0x0008, 29 | 30 | TopAlign = 0x0000, 31 | VerticalCenterAlign = 0x0010, 32 | BottomAlign = 0x0020, 33 | 34 | TrackLeftButton = 0x0000, 35 | TrackRightButton = 0x0002, 36 | 37 | LeftToRightAnimation = 0x0400, 38 | RightToLeftAnimation = 0x0800, 39 | TopToBottomAnimation = 0x1000, 40 | BottomToTopAnimation = 0x2000, 41 | NoAnimation = 0x4000, 42 | 43 | ReturnResult = 0x0100 44 | } 45 | 46 | public class SystemMenuItem 47 | { 48 | public SystemMenuItemFlags MenuItemFlags; 49 | public Bitmap Image; 50 | public string Text; 51 | public Action OnClick; 52 | public int ID; 53 | public SystemMenu SubMenu; 54 | 55 | public SystemMenuItem(string text, Action onClick, SystemMenuItemFlags flags) 56 | { 57 | Text = text; 58 | OnClick = onClick; 59 | MenuItemFlags = flags; 60 | } 61 | 62 | public SystemMenuItem(string text, Action onClick, SystemMenuItemFlags flags, Image image) 63 | { 64 | if (!flags.HasFlag(SystemMenuItemFlags.Bitmap)) 65 | flags = flags | SystemMenuItemFlags.Bitmap; 66 | 67 | Text = text; 68 | OnClick = onClick; 69 | MenuItemFlags = flags; 70 | Image = new Bitmap(image); 71 | } 72 | } 73 | 74 | public class SystemMenu 75 | { 76 | [DllImport("user32.dll")] 77 | static extern IntPtr CreateMenu(); 78 | [DllImport("user32.dll")] 79 | static extern IntPtr CreatePopupMenu(); 80 | [DllImport("user32.dll")] 81 | static extern bool AppendMenu(IntPtr hMenu, SystemMenuItemFlags uFlags, int uIDNewItem, string lpNewItem); 82 | [DllImport("user32.dll")] 83 | static extern bool AppendMenu(IntPtr hMenu, SystemMenuItemFlags uFlags, int uIDNewItem, IntPtr lpNewItem); 84 | [DllImport("user32.dll")] 85 | static extern bool DeleteMenu(IntPtr hMenu, int uPosition, uint uFlags); 86 | [DllImport("user32.dll")] 87 | static extern int GetSystemMetrics(int nIndex); 88 | [DllImport("user32.dll")] 89 | static extern int TrackPopupMenuEx(IntPtr hmenu, SystemMenuTrackPopupMenuFlags fuFlags, int x, int y, IntPtr hwnd, IntPtr lptpm); 90 | 91 | public IntPtr MenuHandle; 92 | public List Items = new List(); 93 | public int Height => GetSystemMetrics(15); 94 | 95 | public SystemMenu(bool popup = false) 96 | { 97 | MenuHandle = popup ? CreatePopupMenu() : CreateMenu(); 98 | } 99 | 100 | public void AddItem(SystemMenuItem item) 101 | { 102 | Items.Add(item); 103 | 104 | if (item.MenuItemFlags.HasFlag(SystemMenuItemFlags.Bitmap)) 105 | AppendMenu(MenuHandle, item.MenuItemFlags, item.ID, item.Image.GetHbitmap()); 106 | else 107 | AppendMenu(MenuHandle, item.MenuItemFlags, item.ID, item.Text); 108 | } 109 | 110 | public void RemoveItem(SystemMenuItem item) 111 | { 112 | if (Items.Contains(item)) 113 | { 114 | Items.Remove(item); 115 | DeleteMenu(MenuHandle, item.ID, 0x0000); 116 | } 117 | } 118 | 119 | public void ShowContextMenu(IntPtr windowHandle, int x, int y) 120 | { 121 | int id = TrackPopupMenuEx(MenuHandle, SystemMenuTrackPopupMenuFlags.ReturnResult, x, y, windowHandle, IntPtr.Zero); 122 | PerformAction(id); 123 | } 124 | 125 | public void PerformAction(int itemId) 126 | { 127 | IEnumerable subMenus = Items.Where(a => a.MenuItemFlags.HasFlag(SystemMenuItemFlags.Popup)).Select(a => a.SubMenu); 128 | foreach (SystemMenu subMenu in subMenus) 129 | subMenu.PerformAction(itemId); 130 | 131 | IEnumerable items = Items.Where(a => a.ID == itemId); 132 | if (items.Count() > 0) 133 | { 134 | SystemMenuItem item = items.First(); 135 | item.OnClick(); 136 | } 137 | } 138 | 139 | public static int CopyToolStripToMenu(ToolStrip menuStrip, SystemMenu systemMenu, int currentId = 0) 140 | { 141 | foreach (ToolStripItem item in menuStrip.Items) 142 | { 143 | if (item is ToolStripMenuItem menuItem) 144 | { 145 | SystemMenuItemFlags flags = SystemMenuItemFlags.Default; 146 | if (menuItem.Checked) 147 | flags |= SystemMenuItemFlags.Checked; 148 | if (!menuItem.Enabled) 149 | flags |= SystemMenuItemFlags.Disabled; 150 | if (menuItem.HasDropDownItems) 151 | flags |= SystemMenuItemFlags.Popup; 152 | 153 | SystemMenuItem systemMenuItem; 154 | if (menuItem.Image != null) 155 | { 156 | flags |= SystemMenuItemFlags.Bitmap; 157 | systemMenuItem = new SystemMenuItem(menuItem.Text, menuItem.PerformClick, flags, menuItem.Image); 158 | } 159 | else 160 | systemMenuItem = new SystemMenuItem(menuItem.Text, menuItem.PerformClick, flags); 161 | systemMenuItem.ID = currentId; 162 | 163 | if (menuItem.HasDropDownItems) 164 | { 165 | SystemMenu subMenu = new SystemMenu(true); 166 | currentId = CopyToolStripToMenu(menuItem.DropDown, subMenu, currentId); 167 | systemMenuItem.SubMenu = subMenu; 168 | systemMenuItem.ID = subMenu.MenuHandle.ToInt32(); 169 | } 170 | else currentId++; 171 | 172 | systemMenu.AddItem(systemMenuItem); 173 | } 174 | else if (item is ToolStripSeparator seperator) 175 | systemMenu.AddItem(new SystemMenuItem("", new Action(() => { }), SystemMenuItemFlags.IsSeperator)); 176 | } 177 | return currentId; 178 | } 179 | } 180 | } 181 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/FinishedPage.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme.SetupWizard 21 | { 22 | partial class FinishedPage 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Component Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | this.label1 = new System.Windows.Forms.Label(); 51 | this.label2 = new System.Windows.Forms.Label(); 52 | this.label3 = new System.Windows.Forms.Label(); 53 | this.linkLabel1 = new System.Windows.Forms.LinkLabel(); 54 | this.label4 = new System.Windows.Forms.Label(); 55 | this.SuspendLayout(); 56 | // 57 | // label1 58 | // 59 | this.label1.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 60 | this.label1.Location = new System.Drawing.Point(13, 20); 61 | this.label1.Name = "label1"; 62 | this.label1.Size = new System.Drawing.Size(302, 53); 63 | this.label1.TabIndex = 0; 64 | this.label1.Text = "Setup Wizard Completed"; 65 | // 66 | // label2 67 | // 68 | this.label2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 69 | this.label2.Location = new System.Drawing.Point(13, 82); 70 | this.label2.Name = "label2"; 71 | this.label2.Size = new System.Drawing.Size(302, 152); 72 | this.label2.TabIndex = 1; 73 | this.label2.Text = "The wizard has succesfully installed and configured Simple Classic Theme and it\'s" + 74 | " associated components. Click Finish to exit the wizard and continue to Simple C" + 75 | "lassic Theme."; 76 | // 77 | // label3 78 | // 79 | this.label3.AutoSize = true; 80 | this.label3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 81 | this.label3.Location = new System.Drawing.Point(13, 282); 82 | this.label3.Name = "label3"; 83 | this.label3.Size = new System.Drawing.Size(277, 13); 84 | this.label3.TabIndex = 2; 85 | this.label3.Text = "Wizard framework designed and created by Craftplacer."; 86 | // 87 | // linkLabel1 88 | // 89 | this.linkLabel1.AutoSize = true; 90 | this.linkLabel1.Cursor = System.Windows.Forms.Cursors.Hand; 91 | this.linkLabel1.Location = new System.Drawing.Point(13, 295); 92 | this.linkLabel1.Name = "linkLabel1"; 93 | this.linkLabel1.Size = new System.Drawing.Size(61, 13); 94 | this.linkLabel1.TabIndex = 3; 95 | this.linkLabel1.TabStop = true; 96 | this.linkLabel1.Text = "Github Link"; 97 | this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); 98 | // 99 | // label4 100 | // 101 | this.label4.AutoSize = true; 102 | this.label4.Location = new System.Drawing.Point(13, 245); 103 | this.label4.Name = "label4"; 104 | this.label4.Size = new System.Drawing.Size(153, 26); 105 | this.label4.TabIndex = 4; 106 | this.label4.Text = "© 2021 Anis \"Leet\" Errais \r\nSee GNU GPLv3 for more info."; 107 | // 108 | // FinishedPage 109 | // 110 | this.AllowedButtons = Craftplacer.ClassicSuite.Wizards.Enums.AllowedButtons.Next; 111 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 112 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 113 | this.Controls.Add(this.label4); 114 | this.Controls.Add(this.linkLabel1); 115 | this.Controls.Add(this.label3); 116 | this.Controls.Add(this.label2); 117 | this.Controls.Add(this.label1); 118 | this.Name = "FinishedPage"; 119 | this.PageParts = Craftplacer.ClassicSuite.Wizards.Enums.PageParts.Sidebar; 120 | this.SidebarImage = global::SimpleClassicTheme.Properties.Resources.winxp_wizard; 121 | this.Size = new System.Drawing.Size(333, 313); 122 | this.ResumeLayout(false); 123 | this.PerformLayout(); 124 | 125 | } 126 | 127 | #endregion 128 | 129 | private System.Windows.Forms.Label label1; 130 | private System.Windows.Forms.Label label2; 131 | private System.Windows.Forms.Label label3; 132 | private System.Windows.Forms.LinkLabel linkLabel1; 133 | private System.Windows.Forms.Label label4; 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/TaskbarTypeSelector.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | namespace SimpleClassicTheme.Forms 22 | { 23 | partial class TaskbarTypeSelector 24 | { 25 | /// 26 | /// Required designer variable. 27 | /// 28 | private System.ComponentModel.IContainer components = null; 29 | 30 | /// 31 | /// Clean up any resources being used. 32 | /// 33 | /// true if managed resources should be disposed; otherwise, false. 34 | protected override void Dispose(bool disposing) 35 | { 36 | if (disposing && (components != null)) 37 | { 38 | components.Dispose(); 39 | } 40 | base.Dispose(disposing); 41 | } 42 | 43 | #region Component Designer generated code 44 | 45 | /// 46 | /// Required method for Designer support - do not modify 47 | /// the contents of this method with the code editor. 48 | /// 49 | private void InitializeComponent() 50 | { 51 | this.label2 = new System.Windows.Forms.Label(); 52 | this.comboBoxTaskbar = new System.Windows.Forms.ComboBox(); 53 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 54 | this.label1 = new System.Windows.Forms.Label(); 55 | this.linkLabel1 = new System.Windows.Forms.LinkLabel(); 56 | this.groupBox1.SuspendLayout(); 57 | this.SuspendLayout(); 58 | // 59 | // label2 60 | // 61 | this.label2.AutoSize = true; 62 | this.label2.Location = new System.Drawing.Point(9, 25); 63 | this.label2.Name = "label2"; 64 | this.label2.Size = new System.Drawing.Size(79, 13); 65 | this.label2.TabIndex = 5; 66 | this.label2.Text = "Taskbar Type: "; 67 | // 68 | // comboBoxTaskbar 69 | // 70 | this.comboBoxTaskbar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 71 | this.comboBoxTaskbar.FormattingEnabled = true; 72 | this.comboBoxTaskbar.Location = new System.Drawing.Point(94, 22); 73 | this.comboBoxTaskbar.Name = "comboBoxTaskbar"; 74 | this.comboBoxTaskbar.Size = new System.Drawing.Size(245, 21); 75 | this.comboBoxTaskbar.TabIndex = 4; 76 | this.comboBoxTaskbar.SelectedIndexChanged += new System.EventHandler(this.comboBoxTaskbar_SelectedIndexChanged); 77 | // 78 | // groupBox1 79 | // 80 | this.groupBox1.Controls.Add(this.linkLabel1); 81 | this.groupBox1.Controls.Add(this.label1); 82 | this.groupBox1.Controls.Add(this.label2); 83 | this.groupBox1.Controls.Add(this.comboBoxTaskbar); 84 | this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; 85 | this.groupBox1.Location = new System.Drawing.Point(0, 0); 86 | this.groupBox1.Name = "groupBox1"; 87 | this.groupBox1.Padding = new System.Windows.Forms.Padding(6, 12, 6, 6); 88 | this.groupBox1.Size = new System.Drawing.Size(467, 161); 89 | this.groupBox1.TabIndex = 6; 90 | this.groupBox1.TabStop = false; 91 | this.groupBox1.Text = "Select Classic Taskbar to be used"; 92 | // 93 | // label1 94 | // 95 | this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 96 | | System.Windows.Forms.AnchorStyles.Left) 97 | | System.Windows.Forms.AnchorStyles.Right))); 98 | this.label1.Location = new System.Drawing.Point(12, 46); 99 | this.label1.Name = "label1"; 100 | this.label1.Size = new System.Drawing.Size(446, 109); 101 | this.label1.TabIndex = 6; 102 | this.label1.Text = "this is a word wrap test. \r\n\r\nif you see this word wrap test, something has gone " + 103 | "wrong inside of sct. go tell leet, he\'ll know how to fix it."; 104 | // 105 | // linkLabel1 106 | // 107 | this.linkLabel1.AutoSize = true; 108 | this.linkLabel1.Location = new System.Drawing.Point(9, 100); 109 | this.linkLabel1.Name = "linkLabel1"; 110 | this.linkLabel1.Size = new System.Drawing.Size(121, 13); 111 | this.linkLabel1.TabIndex = 7; 112 | this.linkLabel1.TabStop = true; 113 | this.linkLabel1.Text = "This link points nowhere"; 114 | this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); 115 | // 116 | // TaskbarTypeSelector 117 | // 118 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 119 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 120 | this.Controls.Add(this.groupBox1); 121 | this.Name = "TaskbarTypeSelector"; 122 | this.Size = new System.Drawing.Size(467, 161); 123 | this.Load += new System.EventHandler(this.TaskbarTypeSelector_Load); 124 | this.EnabledChanged += new System.EventHandler(this.TaskbarTypeSelector_EnabledChanged); 125 | this.groupBox1.ResumeLayout(false); 126 | this.groupBox1.PerformLayout(); 127 | this.ResumeLayout(false); 128 | 129 | } 130 | 131 | #endregion 132 | 133 | private System.Windows.Forms.Label label2; 134 | private System.Windows.Forms.ComboBox comboBoxTaskbar; 135 | private System.Windows.Forms.GroupBox groupBox1; 136 | private System.Windows.Forms.Label label1; 137 | private System.Windows.Forms.LinkLabel linkLabel1; 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/LoaderForm.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/WelcomePage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Unfinished/WMITest.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/FinishedPage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/UtilitiesPage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/TaskbarTypeSelector.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallOptionsPage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallationPage.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme.SetupWizard 21 | { 22 | partial class InstallationPage 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Component Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | this.label1 = new System.Windows.Forms.Label(); 51 | this.label2 = new System.Windows.Forms.Label(); 52 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 53 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 54 | this.label3 = new System.Windows.Forms.Label(); 55 | this.bgWork = new System.ComponentModel.BackgroundWorker(); 56 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 57 | this.SuspendLayout(); 58 | // 59 | // label1 60 | // 61 | this.label1.Location = new System.Drawing.Point(75, 9); 62 | this.label1.Name = "label1"; 63 | this.label1.Size = new System.Drawing.Size(366, 38); 64 | this.label1.TabIndex = 0; 65 | this.label1.Text = "Please wait while the setup wizard installs Simple Classic Theme. This may take a" + 66 | " few minutes."; 67 | // 68 | // label2 69 | // 70 | this.label2.AutoSize = true; 71 | this.label2.Location = new System.Drawing.Point(75, 54); 72 | this.label2.Name = "label2"; 73 | this.label2.Size = new System.Drawing.Size(42, 13); 74 | this.label2.TabIndex = 1; 75 | this.label2.Text = "Status:"; 76 | // 77 | // progressBar1 78 | // 79 | this.progressBar1.Location = new System.Drawing.Point(78, 91); 80 | this.progressBar1.Name = "progressBar1"; 81 | this.progressBar1.Size = new System.Drawing.Size(366, 23); 82 | this.progressBar1.TabIndex = 2; 83 | // 84 | // pictureBox1 85 | // 86 | this.pictureBox1.Image = global::SimpleClassicTheme.Properties.Resources.msiexec; 87 | this.pictureBox1.Location = new System.Drawing.Point(28, 8); 88 | this.pictureBox1.Name = "pictureBox1"; 89 | this.pictureBox1.Size = new System.Drawing.Size(32, 32); 90 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 91 | this.pictureBox1.TabIndex = 3; 92 | this.pictureBox1.TabStop = false; 93 | // 94 | // label3 95 | // 96 | this.label3.AutoSize = true; 97 | this.label3.Location = new System.Drawing.Point(75, 73); 98 | this.label3.Name = "label3"; 99 | this.label3.Size = new System.Drawing.Size(120, 13); 100 | this.label3.TabIndex = 4; 101 | this.label3.Text = "Initializing installation..."; 102 | // 103 | // bgWork 104 | // 105 | this.bgWork.WorkerReportsProgress = true; 106 | this.bgWork.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgWork_DoWork); 107 | this.bgWork.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bgWork_ProgressChanged); 108 | this.bgWork.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bgWork_RunWorkerCompleted); 109 | // 110 | // InstallationPage 111 | // 112 | this.AllowedButtons = Craftplacer.ClassicSuite.Wizards.Enums.AllowedButtons.None; 113 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 114 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 115 | this.Controls.Add(this.label3); 116 | this.Controls.Add(this.pictureBox1); 117 | this.Controls.Add(this.progressBar1); 118 | this.Controls.Add(this.label2); 119 | this.Controls.Add(this.label1); 120 | this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 121 | this.Name = "InstallationPage"; 122 | this.PageParts = Craftplacer.ClassicSuite.Wizards.Enums.PageParts.Header; 123 | this.Size = new System.Drawing.Size(497, 253); 124 | this.Subtitle = "The components you selected are being installed."; 125 | this.Title = "Installing Simple Classic Theme"; 126 | this.EnterPage += new System.EventHandler(this.InstallationPage_EnterPage); 127 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 128 | this.ResumeLayout(false); 129 | this.PerformLayout(); 130 | 131 | } 132 | 133 | #endregion 134 | 135 | private System.Windows.Forms.Label label1; 136 | private System.Windows.Forms.Label label2; 137 | private System.Windows.Forms.ProgressBar progressBar1; 138 | private System.Windows.Forms.PictureBox pictureBox1; 139 | private System.Windows.Forms.Label label3; 140 | private System.ComponentModel.BackgroundWorker bgWork; 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Information/AboutForm.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | namespace SimpleClassicTheme 22 | { 23 | partial class About 24 | { 25 | /// 26 | /// Required designer variable. 27 | /// 28 | private System.ComponentModel.IContainer components = null; 29 | 30 | /// 31 | /// Clean up any resources being used. 32 | /// 33 | /// true if managed resources should be disposed; otherwise, false. 34 | protected override void Dispose(bool disposing) 35 | { 36 | if (disposing && (components != null)) 37 | { 38 | components.Dispose(); 39 | } 40 | base.Dispose(disposing); 41 | } 42 | 43 | #region Windows Form Designer generated code 44 | 45 | /// 46 | /// Required method for Designer support - do not modify 47 | /// the contents of this method with the code editor. 48 | /// 49 | private void InitializeComponent() 50 | { 51 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About)); 52 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 53 | this.label1 = new System.Windows.Forms.Label(); 54 | this.label2 = new System.Windows.Forms.Label(); 55 | this.pictureBox2 = new System.Windows.Forms.PictureBox(); 56 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 57 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); 58 | this.SuspendLayout(); 59 | // 60 | // pictureBox1 61 | // 62 | this.pictureBox1.BackColor = System.Drawing.SystemColors.Window; 63 | this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Top; 64 | this.pictureBox1.Location = new System.Drawing.Point(0, 0); 65 | this.pictureBox1.Name = "pictureBox1"; 66 | this.pictureBox1.Size = new System.Drawing.Size(400, 73); 67 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; 68 | this.pictureBox1.TabIndex = 0; 69 | this.pictureBox1.TabStop = false; 70 | // 71 | // label1 72 | // 73 | this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 74 | this.label1.Location = new System.Drawing.Point(12, 89); 75 | this.label1.Name = "label1"; 76 | this.label1.Size = new System.Drawing.Size(376, 2); 77 | this.label1.TabIndex = 1; 78 | // 79 | // label2 80 | // 81 | this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 82 | | System.Windows.Forms.AnchorStyles.Right))); 83 | this.label2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 84 | this.label2.Location = new System.Drawing.Point(12, 101); 85 | this.label2.Name = "label2"; 86 | this.label2.Size = new System.Drawing.Size(376, 381); 87 | this.label2.TabIndex = 2; 88 | this.label2.Text = resources.GetString("label2.Text"); 89 | // 90 | // pictureBox2 91 | // 92 | this.pictureBox2.BackColor = System.Drawing.SystemColors.ActiveCaption; 93 | this.pictureBox2.Location = new System.Drawing.Point(0, 73); 94 | this.pictureBox2.Name = "pictureBox2"; 95 | this.pictureBox2.Size = new System.Drawing.Size(400, 5); 96 | this.pictureBox2.TabIndex = 3; 97 | this.pictureBox2.TabStop = false; 98 | // 99 | // About 100 | // 101 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 102 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 103 | this.ClientSize = new System.Drawing.Size(400, 511); 104 | this.Controls.Add(this.pictureBox2); 105 | this.Controls.Add(this.label2); 106 | this.Controls.Add(this.label1); 107 | this.Controls.Add(this.pictureBox1); 108 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 109 | this.MaximizeBox = false; 110 | this.MinimizeBox = false; 111 | this.Name = "About"; 112 | this.ShowIcon = false; 113 | this.ShowInTaskbar = false; 114 | this.Text = "About Simple Classic Theme"; 115 | this.TopMost = true; 116 | this.Load += new System.EventHandler(this.About_Load); 117 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 118 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); 119 | this.ResumeLayout(false); 120 | 121 | } 122 | 123 | #endregion 124 | 125 | private System.Windows.Forms.PictureBox pictureBox1; 126 | private System.Windows.Forms.Label label1; 127 | private System.Windows.Forms.Label label2; 128 | private System.Windows.Forms.PictureBox pictureBox2; 129 | } 130 | } -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallationPage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallPathPage.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 | -------------------------------------------------------------------------------- /SimpleClassicTheme/SetupWizard/InstallPathPage.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme.SetupWizard 21 | { 22 | partial class InstallPathPage 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Component Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | this.label1 = new System.Windows.Forms.Label(); 51 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 52 | this.button1 = new System.Windows.Forms.Button(); 53 | this.textBox1 = new System.Windows.Forms.TextBox(); 54 | this.label2 = new System.Windows.Forms.Label(); 55 | this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); 56 | this.groupBox2.SuspendLayout(); 57 | this.SuspendLayout(); 58 | // 59 | // label1 60 | // 61 | this.label1.Location = new System.Drawing.Point(24, 17); 62 | this.label1.Name = "label1"; 63 | this.label1.Size = new System.Drawing.Size(445, 63); 64 | this.label1.TabIndex = 0; 65 | this.label1.Text = "Setup will install Simple Classic Theme in the following folder. To install in a " + 66 | "different folder, click Browse and select another folder. Click Install to start" + 67 | " the installation."; 68 | // 69 | // groupBox2 70 | // 71 | this.groupBox2.Controls.Add(this.button1); 72 | this.groupBox2.Controls.Add(this.textBox1); 73 | this.groupBox2.Location = new System.Drawing.Point(27, 120); 74 | this.groupBox2.Name = "groupBox2"; 75 | this.groupBox2.Size = new System.Drawing.Size(442, 57); 76 | this.groupBox2.TabIndex = 2; 77 | this.groupBox2.TabStop = false; 78 | this.groupBox2.Text = "Destination Folder"; 79 | // 80 | // button1 81 | // 82 | this.button1.Location = new System.Drawing.Point(352, 19); 83 | this.button1.Name = "button1"; 84 | this.button1.Size = new System.Drawing.Size(75, 23); 85 | this.button1.TabIndex = 1; 86 | this.button1.Text = "Browse..."; 87 | this.button1.UseVisualStyleBackColor = true; 88 | this.button1.Click += new System.EventHandler(this.button1_Click); 89 | // 90 | // textBox1 91 | // 92 | this.textBox1.Location = new System.Drawing.Point(15, 21); 93 | this.textBox1.Name = "textBox1"; 94 | this.textBox1.ReadOnly = true; 95 | this.textBox1.Size = new System.Drawing.Size(331, 20); 96 | this.textBox1.TabIndex = 0; 97 | // 98 | // label2 99 | // 100 | this.label2.AutoSize = true; 101 | this.label2.Location = new System.Drawing.Point(24, 198); 102 | this.label2.Name = "label2"; 103 | this.label2.Size = new System.Drawing.Size(119, 13); 104 | this.label2.TabIndex = 3; 105 | this.label2.Text = "Space required: ±20MB"; 106 | // 107 | // InstallPathPage 108 | // 109 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 110 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 111 | this.Controls.Add(this.label2); 112 | this.Controls.Add(this.groupBox2); 113 | this.Controls.Add(this.label1); 114 | this.Name = "InstallPathPage"; 115 | this.NextButtonText = "Install"; 116 | this.PageParts = Craftplacer.ClassicSuite.Wizards.Enums.PageParts.Header; 117 | this.Size = new System.Drawing.Size(497, 253); 118 | this.Subtitle = "Choose the folder in which to install Simple Classic Theme"; 119 | this.Title = "Choose Install Location"; 120 | this.LeavePage += new System.EventHandler(this.InstallPathPage_LeavePage); 121 | this.Load += new System.EventHandler(this.InstallPathPage_Load); 122 | this.groupBox2.ResumeLayout(false); 123 | this.groupBox2.PerformLayout(); 124 | this.ResumeLayout(false); 125 | this.PerformLayout(); 126 | 127 | } 128 | 129 | #endregion 130 | 131 | private System.Windows.Forms.Label label1; 132 | private System.Windows.Forms.GroupBox groupBox2; 133 | private System.Windows.Forms.Button button1; 134 | private System.Windows.Forms.TextBox textBox1; 135 | private System.Windows.Forms.Label label2; 136 | private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/AHKScriptManager.Designer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | namespace SimpleClassicTheme 21 | { 22 | partial class AHKScriptManager 23 | { 24 | /// 25 | /// Required designer variable. 26 | /// 27 | private System.ComponentModel.IContainer components = null; 28 | 29 | /// 30 | /// Clean up any resources being used. 31 | /// 32 | /// true if managed resources should be disposed; otherwise, false. 33 | protected override void Dispose(bool disposing) 34 | { 35 | if (disposing && (components != null)) 36 | { 37 | components.Dispose(); 38 | } 39 | base.Dispose(disposing); 40 | } 41 | 42 | #region Windows Form Designer generated code 43 | 44 | /// 45 | /// Required method for Designer support - do not modify 46 | /// the contents of this method with the code editor. 47 | /// 48 | private void InitializeComponent() 49 | { 50 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AHKScriptManager)); 51 | this.button3 = new System.Windows.Forms.Button(); 52 | this.button2 = new System.Windows.Forms.Button(); 53 | this.button1 = new System.Windows.Forms.Button(); 54 | this.listBox1 = new System.Windows.Forms.ListBox(); 55 | this.label1 = new System.Windows.Forms.Label(); 56 | this.button4 = new System.Windows.Forms.Button(); 57 | this.SuspendLayout(); 58 | // 59 | // button3 60 | // 61 | this.button3.Location = new System.Drawing.Point(314, 41); 62 | this.button3.Name = "button3"; 63 | this.button3.Size = new System.Drawing.Size(75, 23); 64 | this.button3.TabIndex = 7; 65 | this.button3.Text = "Delete"; 66 | this.button3.UseVisualStyleBackColor = true; 67 | this.button3.Click += new System.EventHandler(this.button3_Click); 68 | // 69 | // button2 70 | // 71 | this.button2.Location = new System.Drawing.Point(314, 12); 72 | this.button2.Name = "button2"; 73 | this.button2.Size = new System.Drawing.Size(75, 23); 74 | this.button2.TabIndex = 6; 75 | this.button2.Text = "Add"; 76 | this.button2.UseVisualStyleBackColor = true; 77 | this.button2.Click += new System.EventHandler(this.button2_Click); 78 | // 79 | // button1 80 | // 81 | this.button1.Location = new System.Drawing.Point(314, 214); 82 | this.button1.Name = "button1"; 83 | this.button1.Size = new System.Drawing.Size(75, 23); 84 | this.button1.TabIndex = 5; 85 | this.button1.Text = "Close"; 86 | this.button1.UseVisualStyleBackColor = true; 87 | this.button1.Click += new System.EventHandler(this.button1_Click); 88 | // 89 | // listBox1 90 | // 91 | this.listBox1.FormattingEnabled = true; 92 | this.listBox1.Location = new System.Drawing.Point(12, 12); 93 | this.listBox1.Name = "listBox1"; 94 | this.listBox1.Size = new System.Drawing.Size(296, 225); 95 | this.listBox1.TabIndex = 4; 96 | // 97 | // label1 98 | // 99 | this.label1.AutoSize = true; 100 | this.label1.Location = new System.Drawing.Point(12, 240); 101 | this.label1.Name = "label1"; 102 | this.label1.Size = new System.Drawing.Size(303, 13); 103 | this.label1.TabIndex = 8; 104 | this.label1.Text = "Scripts listed here will automatically run on boot alongside SCT."; 105 | // 106 | // button4 107 | // 108 | this.button4.Location = new System.Drawing.Point(314, 185); 109 | this.button4.Name = "button4"; 110 | this.button4.Size = new System.Drawing.Size(75, 23); 111 | this.button4.TabIndex = 9; 112 | this.button4.Text = "Add FEH"; 113 | this.button4.UseVisualStyleBackColor = true; 114 | this.button4.Click += new System.EventHandler(this.button4_Click); 115 | // 116 | // AHKScriptManager 117 | // 118 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 119 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 120 | this.ClientSize = new System.Drawing.Size(401, 262); 121 | this.Controls.Add(this.button4); 122 | this.Controls.Add(this.label1); 123 | this.Controls.Add(this.button3); 124 | this.Controls.Add(this.button2); 125 | this.Controls.Add(this.button1); 126 | this.Controls.Add(this.listBox1); 127 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 128 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 129 | this.Name = "AHKScriptManager"; 130 | this.Text = "Simple Classic Theme - AutoHotKey Script Manager"; 131 | this.ResumeLayout(false); 132 | this.PerformLayout(); 133 | 134 | } 135 | 136 | #endregion 137 | 138 | private System.Windows.Forms.Button button3; 139 | private System.Windows.Forms.Button button2; 140 | private System.Windows.Forms.Button button1; 141 | private System.Windows.Forms.ListBox listBox1; 142 | private System.Windows.Forms.Label label1; 143 | private System.Windows.Forms.Button button4; 144 | } 145 | } -------------------------------------------------------------------------------- /SimpleClassicTheme/Forms/Utility/GithubDownloader.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * SimpleClassicTheme, a basic utility to bring back classic theme to newer versions of the Windows operating system. 3 | * Copyright (C) 2021 Anis Errais 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | * 18 | */ 19 | 20 | using System; 21 | using System.Threading; 22 | using System.Windows.Forms; 23 | using System.Net; 24 | using System.IO; 25 | using System.IO.Compression; 26 | using System.Diagnostics; 27 | using System.Collections.Generic; 28 | 29 | namespace SimpleClassicTheme 30 | { 31 | public partial class GithubDownloader : Form 32 | { 33 | public class DownloadableGithubProject 34 | { 35 | public static DownloadableGithubProject SimpleClassicThemeTaskbar = new DownloadableGithubProject() 36 | { 37 | Name = "WinClassic/SimpleClassicTheme.Taskbar", 38 | Filename = (IntPtr.Size == 8) ? "SimpleClassicThemeTaskbar_x64.zip" : "SimpleClassicThemeTaskbar_x86.zip", 39 | ProcessName = "SimpleClassicThemeTaskbar", 40 | TargetDirectory = $"{Configuration.InstallPath}Taskbar\\", 41 | NeedsExtraction = true 42 | }; 43 | 44 | public static DownloadableGithubProject RetroBar = new DownloadableGithubProject() 45 | { 46 | Name = "dremin/RetroBar", 47 | Filename = "RetroBar.zip", 48 | ProcessName = "RetroBar", 49 | TargetDirectory = $"{Configuration.InstallPath}RetroBar\\", 50 | NeedsExtraction = true 51 | }; 52 | 53 | public static DownloadableGithubProject ExplorerPatcher = new DownloadableGithubProject() 54 | { 55 | Name = "valinet/ExplorerPatcher", 56 | Filename = "dxgi.dll", 57 | ProcessName = "", 58 | TargetDirectory = $"{Configuration.InstallPath}ExplorerPatcher\\", 59 | NeedsExtraction = false 60 | }; 61 | 62 | public static DownloadableGithubProject SimpleClassicThemeFEH = new DownloadableGithubProject() 63 | { 64 | Name = "valinet/ExplorerPatcher", 65 | Filename = (IntPtr.Size == 8) ? "SCT.FEH.x64.zip" : "SCT.FEH.x64.zip", 66 | ProcessName = "", 67 | TargetDirectory = $"{Configuration.InstallPath}AHK\\", 68 | NeedsExtraction = true 69 | }; 70 | 71 | public string Name; 72 | public string Filename; 73 | public string ProcessName; 74 | public string TargetDirectory; 75 | public bool NeedsExtraction; 76 | } 77 | 78 | public DownloadableGithubProject project; 79 | public int progressDownload = 0; 80 | public int progressExtract = 0; 81 | 82 | public GithubDownloader() 83 | { 84 | InitializeComponent(); 85 | } 86 | 87 | public GithubDownloader(DownloadableGithubProject project) 88 | { 89 | this.project = project; 90 | InitializeComponent(); 91 | } 92 | 93 | protected override CreateParams CreateParams 94 | { 95 | get 96 | { 97 | CreateParams param = base.CreateParams; 98 | param.ClassStyle ^= 0x200; 99 | return param; 100 | } 101 | } 102 | 103 | private void GithubDownloader_Load(object sender, EventArgs e) 104 | { 105 | if (project != null) 106 | { 107 | label1.Text = "Downloading..."; 108 | label2.Text = $"Retrieving latest release for '{project.Name}'"; 109 | 110 | new Thread(ThreadFunction).Start(); 111 | timer1.Enabled = true; 112 | } 113 | else 114 | { 115 | label1.Text = "Unhandled exception: No GitHub project specified"; 116 | } 117 | } 118 | 119 | private void timer1_Tick(object sender, EventArgs e) 120 | { 121 | progressBar1.Value = progressDownload == 100 ? progressExtract : progressDownload; 122 | if (progressDownload == 100) 123 | label1.Text = "Extracting..."; 124 | if (progressExtract == 100 || (progressDownload == 100 && !project.NeedsExtraction)) 125 | { 126 | timer1.Enabled = false; 127 | Close(); 128 | } 129 | progressBar2.Value = project.NeedsExtraction ? (progressDownload / 2) + (progressExtract / 2) : progressDownload; 130 | } 131 | 132 | private void ThreadFunction() 133 | { 134 | if (project.ProcessName != "") 135 | while (Process.GetProcessesByName(project.ProcessName).Length > 0) 136 | foreach (Process p in Process.GetProcessesByName(project.ProcessName)) 137 | if (!p.HasExited) 138 | p.Kill(); 139 | 140 | string dlUrl = $"https://github.com/{project.Name}/releases/latest/download/{project.Filename}"; 141 | string dlDest = $"{Configuration.InstallPath}ghtemp.tmp"; 142 | string dlDestExtract = project.TargetDirectory; 143 | 144 | if (Directory.Exists(dlDestExtract)) 145 | Directory.Delete(dlDestExtract, true); 146 | if (File.Exists(dlDest)) 147 | File.Delete(dlDest); 148 | 149 | //Download 150 | WebRequest request = WebRequest.Create(dlUrl); 151 | request.Proxy = null; 152 | WebResponse response = request.GetResponse(); 153 | Stream ws = response.GetResponseStream(); 154 | Directory.CreateDirectory(dlDestExtract); 155 | FileStream fs = File.Create(dlDest); 156 | byte[] buffer = new byte[1024]; 157 | while (true) 158 | { 159 | int bytesRead = ws.Read(buffer, 0, 1024); 160 | fs.Write(buffer, 0, bytesRead); 161 | progressDownload = (int)((float)bytesRead / buffer.Length * 100); 162 | if (bytesRead == 0) 163 | break; 164 | } 165 | fs.Close(); ws.Close(); response.Close(); 166 | 167 | // Extraction / Installation 168 | if (project.NeedsExtraction) 169 | { 170 | ZipArchive archive = ZipFile.Open(dlDest, ZipArchiveMode.Read); 171 | for (int i = 0; i < archive.Entries.Count; i++) 172 | { 173 | ZipArchiveEntry entry = archive.Entries[i]; 174 | if (entry.Length == 0) 175 | continue; 176 | string destPath = Path.GetFullPath(Path.Combine(dlDestExtract, entry.FullName)); 177 | Directory.CreateDirectory(Path.GetDirectoryName(destPath)); 178 | entry.ExtractToFile(destPath); 179 | progressExtract = (int)((float)i / archive.Entries.Count * 100); 180 | if (i == archive.Entries.Count - 1) 181 | progressExtract = 100; 182 | } 183 | archive.Dispose(); 184 | } 185 | else 186 | { 187 | File.Copy(dlDest, Path.GetFullPath(Path.Combine(dlDestExtract, project.Filename))); 188 | } 189 | } 190 | } 191 | } 192 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Function Classes/Configuration.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Simple Classic Theme, a basic utility to bring back classic theme to 3 | * newer versions of the Windows operating system. 4 | * Copyright (C) 2022 Anis Errais 5 | * 6 | * This program is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | * 19 | */ 20 | 21 | using Microsoft.Win32; 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Linq; 25 | using System.Reflection; 26 | using System.Runtime.Serialization; 27 | using System.Text; 28 | using System.Threading.Tasks; 29 | 30 | namespace SimpleClassicTheme 31 | { 32 | internal static class Configuration 33 | { 34 | public static bool Enabled 35 | { 36 | get => bool.Parse(GetItem("Enabled", false).ToString()); 37 | set => SetItem("Enabled", value.ToString()); 38 | } 39 | 40 | public static bool EnableTaskbar 41 | { 42 | get => bool.Parse(GetItem("EnableTaskbar", false).ToString()); 43 | set => SetItem("EnableTaskbar", value.ToString()); 44 | } 45 | 46 | public static int TaskbarDelay 47 | { 48 | get => (int)GetItem("TaskbarDelay", 5000); 49 | set => SetItem("TaskbarDelay", value, RegistryValueKind.DWord); 50 | } 51 | 52 | public static bool ShowWizard 53 | { 54 | get => bool.Parse(GetItem("ShowWizard", true).ToString()); 55 | set => SetItem("ShowWizard", value.ToString()); 56 | } 57 | 58 | public static bool BetaUpdates 59 | { 60 | get => bool.Parse(GetItem("BetaUpdates", false).ToString()); 61 | set => SetItem("BetaUpdates", value.ToString()); 62 | } 63 | 64 | /*public static string TaskbarType 65 | { 66 | get => (string)GetItem("TaskbarType", "OS+SiB"); 67 | set => SetItem("TaskbarType", value); 68 | }*/ 69 | 70 | public static TaskbarType TaskbarType 71 | { 72 | get => (TaskbarType)Enum.Parse(typeof(TaskbarType), GetItem("TaskbarType", "SimpleClassicThemeTaskbar").ToString()); 73 | set => SetItem("TaskbarType", value.ToString()); 74 | } 75 | 76 | public static string UpdateMode 77 | { 78 | get => (string)GetItem("UpdateMode", "Automatic"); 79 | set => SetItem("UpdateMode", value); 80 | } 81 | 82 | public static Version ConfigVersion 83 | { 84 | get => Version.Parse(GetItem("ConfigVersion", Assembly.GetExecutingAssembly().GetName().Version).ToString()); 85 | set => SetItem("ConfigVersion", value.ToString()); 86 | } 87 | 88 | public static string InstallPath 89 | { 90 | get 91 | { 92 | string path = (string)GetItem("InstallPath", "C:\\SCT\\"); 93 | if (!path.EndsWith("\\")) 94 | { 95 | path += "\\"; 96 | InstallPath = path; 97 | } 98 | return path; 99 | } 100 | set => SetItem("InstallPath", value); 101 | } 102 | 103 | public static RegistryKey GetRegistryKey() => Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("1337ftw").CreateSubKey("Simple Classic Theme").CreateSubKey("Base"); 104 | 105 | private static object GetItem(string itemName, object defaultValue) 106 | { 107 | RegistryKey key = GetRegistryKey(); 108 | object returnValue = key.GetValue(itemName, defaultValue); 109 | key.Close(); 110 | return returnValue; 111 | } 112 | 113 | public static void SetItemManually(string itemName, object newValue, RegistryValueKind valueKind = RegistryValueKind.String) 114 | => SetItem(itemName, newValue, valueKind); 115 | private static void SetItem(string itemName, object newValue, RegistryValueKind valueKind = RegistryValueKind.String) 116 | { 117 | RegistryKey key = GetRegistryKey(); 118 | key.SetValue(itemName, newValue, valueKind); 119 | key.Close(); 120 | } 121 | 122 | public static void MigrateOldSCTRegistry() 123 | { 124 | if (Registry.CurrentUser.CreateSubKey("SOFTWARE").GetSubKeyNames().Contains("SimpleClassicTheme")) 125 | { 126 | RegistryKey source = Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("SimpleClassicTheme"); 127 | RegistryKey dest = GetRegistryKey(); 128 | ExtraFunctions.RecurseCopyKey(source, dest); 129 | RegistryKey software = Registry.CurrentUser.CreateSubKey("SOFTWARE"); 130 | software.DeleteSubKey("SimpleClassicTheme", false); 131 | } 132 | else if (Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("1337ftw").CreateSubKey("SimpleClassicTheme").GetValueNames().Length > 0) 133 | { 134 | RegistryKey source = Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("SimpleClassicTheme"); 135 | RegistryKey dest = GetRegistryKey(); 136 | ExtraFunctions.RecurseCopyKey(source, dest); 137 | foreach (string value in source.GetValueNames()) 138 | source.DeleteValue(value); 139 | Registry.CurrentUser.CreateSubKey("SOFTWARE").CreateSubKey("1337ftw").DeleteSubKey("SimpleClassicTheme"); 140 | } 141 | 142 | // Starting from 1.5.0, SCT will track a config version. If any critical changes have been made to the config 143 | // SCT will automatically apply those changes starting from changes past the original config version. 144 | // Eg. When updating from 1.4 to 1.6 the config will be changed like this: 1.4.0 -> 1.5.0 -> 1.6.0 145 | 146 | // 1.4.0 or lower -> 1.5.0 147 | if (ConfigVersion.CompareString("1.4.9") < 0) 148 | { 149 | // TaskbarType was changed in to an enum 150 | string oldValue = (string)GetItem("TaskbarType", "NoValue"); 151 | if (oldValue != "NoValue") 152 | { 153 | switch (oldValue) 154 | { 155 | case "SiB+OS": 156 | TaskbarType = Environment.OSVersion.Version.CompareTo("6.3") > 0 ? TaskbarType.StartIsBackOpenShell : TaskbarType.Windows81Vanilla; 157 | break; 158 | case "SCTT": 159 | TaskbarType = TaskbarType.SimpleClassicThemeTaskbar; 160 | break; 161 | } 162 | } 163 | 164 | ConfigVersion = new Version(1, 5, 0); 165 | } 166 | 167 | // 1.5.4 or lower -> 1.6.0 168 | if (ConfigVersion.CompareString("1.6.0") < 0) 169 | { 170 | ShowWizard = (string)Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\1337ftw\Simple Classic Theme\Base", "EnableTaskbar", "NO") == "NO"; 171 | } 172 | 173 | ConfigVersion = Assembly.GetExecutingAssembly().GetName().Version; 174 | } 175 | } 176 | } 177 | -------------------------------------------------------------------------------- /SimpleClassicTheme/Properties/AHKScripts.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 SimpleClassicTheme.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class AHKScripts { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal AHKScripts() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SimpleClassicTheme.Properties.AHKScripts", typeof(AHKScripts).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized string similar to #NoTrayIcon 65 | ///#NoEnv 66 | /// 67 | ///Gui +LastFound 68 | ///hWnd := WinExist() 69 | ///SetControlDelay, -1 70 | /// 71 | ///DllCall( "RegisterShellHookWindow", UInt,hWnd ) 72 | ///MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" ) 73 | ///OnMessage( MsgNum, "ShellMessage" ) 74 | ///Return 75 | /// 76 | ///ShellMessage(wParam,lParam) 77 | ///{ 78 | /// If (wParam = 1 or wParam = 6) ; HSHELL_WINDOWCREATED := 1 79 | /// { 80 | /// WinGetClass, WinClass, ahk_id %lParam% 81 | /// if (WinClass = "CabinetWClass") 82 | /// { 83 | /// Control, ExStyle, +0x200, SysTreeView321, ahk_id %lParam% 84 | /// Control, ExStyle, +0x200, FolderView, ahk_id % [rest of string was truncated]";. 85 | /// 86 | internal static string clientedge { 87 | get { 88 | return ResourceManager.GetString("clientedge", resourceCulture); 89 | } 90 | } 91 | 92 | /// 93 | /// Looks up a localized string similar to #NoTrayIcon 94 | ///#NoEnv 95 | /// 96 | ///Gui +LastFound 97 | ///hWnd := WinExist() 98 | ///SetControlDelay, -1 99 | ///SetBatchLines -1 100 | /// 101 | ///DllCall( "RegisterShellHookWindow", UInt,hWnd ) 102 | ///MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" ) 103 | ///OnMessage( MsgNum, "ShellMessage" ) 104 | ///Return 105 | /// 106 | ///ShellMessage(wParam,lParam) 107 | ///{ 108 | /// If (wParam = 1 ) ; HSHELL_WINDOWCREATED := 1 109 | /// { 110 | /// WinGetClass, WinClass, ahk_id %lParam% 111 | /// if (WinClass = "CabinetWClass") 112 | /// { 113 | /// ControlGetPos, ,y1,,ha,ReBarWindow321, ahk_id %lParam% 114 | /// 115 | /// SendMessage, 0x0082,,,ReBarWindow321, ahk_id [rest of string was truncated]";. 116 | /// 117 | internal static string noaddressbar { 118 | get { 119 | return ResourceManager.GetString("noaddressbar", resourceCulture); 120 | } 121 | } 122 | 123 | /// 124 | /// Looks up a localized string similar to #NoTrayIcon 125 | ///#NoEnv 126 | /// 127 | ///#If WinActive("ahk_class CabinetWClass") 128 | ///^c::Send {F10}{e}{c} 129 | /// 130 | ///#If WinActive("ahk_class CabinetWClass") 131 | ///^x::Send {F10}{e}{t} 132 | /// 133 | ///#If WinActive("ahk_class CabinetWClass") 134 | ///^v::Send {F10}{e}{p} 135 | /// 136 | ///#If WinActive("ahk_class CabinetWClass") 137 | ///F2::Send {Shift down}{F10 down}{F10 up}{Shift up}{m} 138 | /// 139 | ///#If WinActive("ahk_class CabinetWClass") 140 | ///!F4::Send {F10}{f}{c} 141 | /// 142 | ///#If WinActive("ahk_class CabinetWClass") 143 | ///!Left::Send {XButton1} 144 | /// 145 | ///#If WinActive("ahk_class CabinetWClass") 146 | ///!Right::Send {XButton2} 147 | /// 148 | ///#If WinActive [rest of string was truncated]";. 149 | /// 150 | internal static string querohotkeys { 151 | get { 152 | return ResourceManager.GetString("querohotkeys", resourceCulture); 153 | } 154 | } 155 | } 156 | } 157 | --------------------------------------------------------------------------------