From 19058c40047ade4ece747207ceb5786c45fee575 Mon Sep 17 00:00:00 2001 From: David Gerson <84614495+pogrammerX@users.noreply.github.com> Date: Thu, 28 Sep 2023 16:55:38 +0200 Subject: [PATCH] Console Only source --- DiscordIconChanger.sln | 25 ++++ DiscordIconChanger/DIC.cs | 57 ++++++++ DiscordIconChanger/DiscordIconChanger.csproj | 43 ++++++ DiscordIconChanger/Program.cs | 50 +++++++ .../Properties/Resources.Designer.cs | 73 +++++++++++ DiscordIconChanger/Properties/Resources.resx | 124 ++++++++++++++++++ DiscordIconChanger/Resources/normal.ico | Bin 0 -> 270398 bytes DiscordIconChanger/app.manifest | 79 +++++++++++ 8 files changed, 451 insertions(+) create mode 100644 DiscordIconChanger.sln create mode 100644 DiscordIconChanger/DIC.cs create mode 100644 DiscordIconChanger/DiscordIconChanger.csproj create mode 100644 DiscordIconChanger/Program.cs create mode 100644 DiscordIconChanger/Properties/Resources.Designer.cs create mode 100644 DiscordIconChanger/Properties/Resources.resx create mode 100644 DiscordIconChanger/Resources/normal.ico create mode 100644 DiscordIconChanger/app.manifest diff --git a/DiscordIconChanger.sln b/DiscordIconChanger.sln new file mode 100644 index 0000000..4b4ce00 --- /dev/null +++ b/DiscordIconChanger.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33829.357 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiscordIconChanger", "DiscordIconChanger\DiscordIconChanger.csproj", "{6B2F12C8-FC2B-4D97-988D-C2BBDB00B3AF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6B2F12C8-FC2B-4D97-988D-C2BBDB00B3AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B2F12C8-FC2B-4D97-988D-C2BBDB00B3AF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B2F12C8-FC2B-4D97-988D-C2BBDB00B3AF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B2F12C8-FC2B-4D97-988D-C2BBDB00B3AF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7D6DC67B-41D3-4145-BE06-6B64DE3622CC} + EndGlobalSection +EndGlobal diff --git a/DiscordIconChanger/DIC.cs b/DiscordIconChanger/DIC.cs new file mode 100644 index 0000000..fc774c0 --- /dev/null +++ b/DiscordIconChanger/DIC.cs @@ -0,0 +1,57 @@ +using IWshRuntimeLibrary; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Net.Http.Headers; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +// DIC!!! (DiscordIconChanger) + +namespace DiscordIconChanger +{ + internal class DIC + { + [DllImport("shell32.dll", CharSet = CharSet.Unicode)] + public static extern int SHChangeNotify(int wEventId, int uFlags, IntPtr dwItem1, IntPtr dwItem2); + + public static void Perform(string discordRoot, string discordAppDir, string icoPath) + { + string shortcutPath = "C:\\Users\\" + Environment.UserName + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Discord Inc\\Discord.lnk"; + if(!Directory.Exists("C:\\Users\\" + Environment.UserName + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Discord Inc")) + Directory.CreateDirectory("C:\\Users\\" + Environment.UserName + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Discord Inc"); + string[] appIcoPaths = { discordRoot + "\\app.ico", discordAppDir + "\\app.ico" }; + + Console.WriteLine("Replacing old icon files..."); + foreach (var appIco in appIcoPaths) + { + System.IO.File.Move(appIco, Path.GetDirectoryName(appIco) + "\\old_appIco.ico", true); + System.IO.File.Copy(icoPath, appIco, true); + } + + // Create a Shell object + WshShell shell = new WshShell(); + + // Load the existing shortcut + IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath); + + // Set the new icon path + shortcut.IconLocation = appIcoPaths[0]; + shortcut.TargetPath = discordRoot + "\\Update.exe --processStart Discord.exe"; + + Console.WriteLine("Creating new Shortcut"); + // Save the shortcut + shortcut.Save(); + + Console.WriteLine("Copying Shortcut..."); + System.IO.File.Copy(shortcutPath, "C:\\users\\" + Environment.UserName + "\\desktop\\Discord.lnk", true); + + Console.WriteLine("Notifying Shell about Change"); + // Notify the shell about the change + SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero); + } + } +} \ No newline at end of file diff --git a/DiscordIconChanger/DiscordIconChanger.csproj b/DiscordIconChanger/DiscordIconChanger.csproj new file mode 100644 index 0000000..4294b85 --- /dev/null +++ b/DiscordIconChanger/DiscordIconChanger.csproj @@ -0,0 +1,43 @@ + + + + Exe + net6.0 + enable + enable + app.manifest + + + + + tlbimp + 0 + 1 + f935dc20-1cf0-11d0-adb9-00c04fd58a0b + 0 + false + true + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + diff --git a/DiscordIconChanger/Program.cs b/DiscordIconChanger/Program.cs new file mode 100644 index 0000000..612e32a --- /dev/null +++ b/DiscordIconChanger/Program.cs @@ -0,0 +1,50 @@ +using DiscordIconChanger; +using System.Drawing; + +class Prpgram +{ + static void Main(string[] args) + { + Console.WriteLine("DiscordIconChanger by pogrammerX (https://github.com/pogrammerX/discord-icon-changer)"); + + if (args.Length != 1) + { + Console.WriteLine("Syntax Error!"); + Console.WriteLine("Usage:"); + Console.WriteLine("\tdiscordiconchanger "); + Console.WriteLine("Or"); + Console.WriteLine("\tdiscordiconchanger --restore (Restores the default Discord Icon)"); + return; + } + + Console.WriteLine("Locating Discord..."); + string discordRoot = "C:\\Users\\" + Environment.UserName + "\\AppData\\Local\\Discord"; + + string discordAppDir = ""; + foreach (var dir in Directory.GetDirectories(discordRoot)) + { + if (Path.GetFileName(dir).StartsWith("app-")) + discordAppDir = dir; + } + + if(string.IsNullOrWhiteSpace(discordAppDir)) + { + Console.WriteLine("Discord not found!"); + Console.WriteLine("We've searched in " + discordRoot + " but didn't find it, have you installed Discord?"); + return; + } + + if (args[0] == "--restore") + { + File.WriteAllBytes(Environment.CurrentDirectory + "\\normal.ico", DiscordIconChanger.Properties.Resources.normal); + DIC.Perform(discordRoot, discordAppDir, Environment.CurrentDirectory + "\\normal.ico"); + File.Delete(Environment.CurrentDirectory + "\\normal.ico"); + Console.WriteLine("Restored!"); + return; + } + + Console.WriteLine("Changing Icon..."); + DIC.Perform(discordRoot, discordAppDir, args[0]); + Console.WriteLine("Finished!"); + } +} \ No newline at end of file diff --git a/DiscordIconChanger/Properties/Resources.Designer.cs b/DiscordIconChanger/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b511407 --- /dev/null +++ b/DiscordIconChanger/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DiscordIconChanger.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DiscordIconChanger.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] normal { + get { + object obj = ResourceManager.GetObject("normal", resourceCulture); + return ((byte[])(obj)); + } + } + } +} diff --git a/DiscordIconChanger/Properties/Resources.resx b/DiscordIconChanger/Properties/Resources.resx new file mode 100644 index 0000000..05d3529 --- /dev/null +++ b/DiscordIconChanger/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\normal.ico;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/DiscordIconChanger/Resources/normal.ico b/DiscordIconChanger/Resources/normal.ico new file mode 100644 index 0000000000000000000000000000000000000000..5418e0ae7130daa2be038c0d8aadf56f1c597f48 GIT binary patch literal 270398 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 literal 0 HcmV?d00001 diff --git a/DiscordIconChanger/app.manifest b/DiscordIconChanger/app.manifest new file mode 100644 index 0000000..6a39c83 --- /dev/null +++ b/DiscordIconChanger/app.manifest @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +