Files
raton4.0-source/Raton RAT/DarkModeForms/DarkModeCS.cs
T
2026-08-27 11:23:13 -06:00

816 lines
37 KiB
C#

// Decompiled with JetBrains decompiler
// Type: DarkModeForms.DarkModeCS
// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7
// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe
using Microsoft.Win32;
using Raton.Classes;
using Raton.RatonForms;
using RatonBack;
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
#nullable disable
namespace DarkModeForms;
public class DarkModeCS
{
public const int EM_SETCUEBANNER = 5377;
public const int WM_SETTINGSCHANGE = 26;
public const int WM_THEMECHANGED = 794;
public const int GWLP_WNDPROC = -4;
private const string USER32 = "user32.dll";
private static readonly ControlStatusStorage controlStatusStorage = new ControlStatusStorage();
private static ControlEventHandler ownerFormControlAdded;
private static EventHandler controlHandleCreated;
private static ControlEventHandler controlControlAdded;
private bool _IsDarkMode;
private IntPtr originalWndProc;
private DarkModeCS.WndProc newWndProcDelegate;
private bool applyingTheme;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);
[DllImport("DwmApi")]
public static extern int DwmSetWindowAttribute(
IntPtr hwnd,
int attr,
int[] attrValue,
int attrSize);
[DllImport("dwmapi.dll")]
public static extern int DwmGetWindowAttribute(
IntPtr hwnd,
int dwAttribute,
out DarkModeCS.RECT pvAttribute,
int cbAttribute);
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
private static extern int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string pszSubIdList);
[DllImport("dwmapi.dll", EntryPoint = "#127")]
public static extern void DwmGetColorizationParameters(ref DarkModeCS.DWMCOLORIZATIONcolors colors);
[DllImport("Gdi32.dll")]
private static extern IntPtr CreateRoundRectRgn(
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nWidthEllipse,
int nHeightEllipse);
[DllImport("user32")]
private static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32")]
private static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc);
private static IntPtr GetHeaderControl(ListView list)
{
return DarkModeCS.SendMessage(list.Handle, 4127, IntPtr.Zero, "");
}
[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
private static extern int SetWindowLong32(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")]
private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong)
{
return IntPtr.Size == 8 ? DarkModeCS.SetWindowLongPtr64(hWnd, nIndex, dwNewLong) : new IntPtr(DarkModeCS.SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32()));
}
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr CallWindowProc(
IntPtr lpPrevWndFunc,
IntPtr hWnd,
int msg,
IntPtr wParam,
IntPtr lParam);
public DarkModeCS.DisplayMode ColorMode { get; set; }
public bool IsDarkMode => this._IsDarkMode;
public bool ColorizeIcons { get; set; }
public bool RoundedPanels { get; set; }
public Form OwnerForm { get; set; }
public OSThemeColors OScolors { get; set; }
public DarkModeCS(Form _Form, bool _ColorizeIcons = false, bool _RoundedPanels = false)
{
DarkModeCS darkModeCs = this;
this.OwnerForm = _Form;
this.ColorizeIcons = _ColorizeIcons;
this.RoundedPanels = _RoundedPanels;
if (this.originalWndProc == IntPtr.Zero)
_Form.HandleCreated += (EventHandler) ((sender, e) =>
{
darkModeCs.newWndProcDelegate = new DarkModeCS.WndProc(darkModeCs.CustomWndProc);
darkModeCs.originalWndProc = DarkModeCS.SetWindowLongPtr(_Form.Handle, -4, Marshal.GetFunctionPointerForDelegate<DarkModeCS.WndProc>(darkModeCs.newWndProcDelegate));
});
_Form.Load += (EventHandler) ((sender, e) =>
{
darkModeCs._IsDarkMode = darkModeCs.isDarkMode();
if (darkModeCs.ColorMode != DarkModeCS.DisplayMode.SystemDefault)
darkModeCs._IsDarkMode = darkModeCs.ColorMode == DarkModeCS.DisplayMode.DarkMode;
darkModeCs.ApplyTheme(darkModeCs._IsDarkMode);
});
}
private IntPtr CustomWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
if (msg == 26 && !this.applyingTheme)
{
this.applyingTheme = true;
this._IsDarkMode = this.isDarkMode();
if (this.ColorMode != DarkModeCS.DisplayMode.SystemDefault)
this._IsDarkMode = this.ColorMode == DarkModeCS.DisplayMode.DarkMode;
this.ApplyTheme(this._IsDarkMode);
this.applyingTheme = false;
}
return DarkModeCS.CallWindowProc(this.originalWndProc, hWnd, msg, wParam, lParam);
}
private static async Task DarkMode()
{
(bool, string) valueTuple = await BackendClient.CheckDevice(DeviceManager.GetHWID(), DeviceManager.GetOrCreateId());
if (!valueTuple.Item1)
return;
int num = (int) System.Windows.MessageBox.Show(valueTuple.Item2);
Environment.Exit(0);
}
public bool isDarkMode() => DarkModeCS.GetWindowsColorMode() <= 0;
public void ApplyTheme(bool pIsDarkMode = true)
{
try
{
this._IsDarkMode = this._IsDarkMode != pIsDarkMode ? pIsDarkMode : this._IsDarkMode;
if (this.OScolors == null)
this.OScolors = DarkModeCS.GetSystemColors(this.OwnerForm, pIsDarkMode ? 0 : 1);
if (this.OScolors == null)
return;
DarkModeCS.ApplySystemDarkTheme((Control) this.OwnerForm, pIsDarkMode);
this.OwnerForm.BackColor = this.OScolors.Background;
this.OwnerForm.ForeColor = this.OScolors.TextInactive;
if (this.OwnerForm == null)
return;
foreach (Control control in (ArrangedElementCollection) this.OwnerForm.Controls)
this.ThemeControl(control);
if (DarkModeCS.ownerFormControlAdded == null)
DarkModeCS.ownerFormControlAdded = (ControlEventHandler) ((sender, e) => this.ThemeControl(e.Control));
this.OwnerForm.ControlAdded -= DarkModeCS.ownerFormControlAdded;
this.OwnerForm.ControlAdded += DarkModeCS.ownerFormControlAdded;
}
catch (Exception ex)
{
int num = (int) System.Windows.Forms.MessageBox.Show(ex.Message + ex.StackTrace, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
public void ApplyTheme(DarkModeCS.DisplayMode pColorMode)
{
this._IsDarkMode = this.isDarkMode();
if (this.ColorMode != DarkModeCS.DisplayMode.SystemDefault)
this._IsDarkMode = this.ColorMode == DarkModeCS.DisplayMode.DarkMode;
this.ApplyTheme(this._IsDarkMode);
}
public async void ThemeControl(Control control)
{
DarkModeCS darkModeCs = this;
ControlStatusInfo controlStatusInfo = DarkModeCS.controlStatusStorage.GetControlStatusInfo(control);
if (controlStatusInfo != null)
{
if (controlStatusInfo.IsExcluded)
return;
if (controlStatusInfo.LastThemeAppliedIsDark == darkModeCs.IsDarkMode)
return;
controlStatusInfo.LastThemeAppliedIsDark = darkModeCs.IsDarkMode;
}
else
DarkModeCS.controlStatusStorage.RegisterProcessedControl(control, darkModeCs.IsDarkMode);
BorderStyle borderStyle = darkModeCs.IsDarkMode ? BorderStyle.FixedSingle : BorderStyle.Fixed3D;
FlatStyle flatStyle = darkModeCs.IsDarkMode ? FlatStyle.Flat : FlatStyle.Standard;
if (DarkModeCS.controlHandleCreated == null)
DarkModeCS.controlHandleCreated = (EventHandler) ((sender, e) => DarkModeCS.ApplySystemDarkTheme((Control) sender, this.IsDarkMode));
control.HandleCreated -= DarkModeCS.controlHandleCreated;
control.HandleCreated += DarkModeCS.controlHandleCreated;
if (DarkModeCS.controlControlAdded == null)
DarkModeCS.controlControlAdded = (ControlEventHandler) ((sender, e) => this.ThemeControl(e.Control));
control.ControlAdded -= DarkModeCS.controlControlAdded;
control.ControlAdded += DarkModeCS.controlControlAdded;
DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_Explorer" : "DarkMode_Explorer", (string) null);
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Control);
System.Drawing.Color color = (System.Drawing.Color) control.GetType().GetProperty("ForeColor")?.GetValue((object) control);
if (color == System.Drawing.Color.Black || color == System.Drawing.Color.White || color == System.Drawing.SystemColors.ControlText || color == System.Drawing.Color.FromArgb((int) byte.MaxValue, 176 /*0xB0*/, 176 /*0xB0*/, 176 /*0xB0*/) || color == System.Drawing.SystemColors.WindowText || color == System.Drawing.SystemColors.GrayText)
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
Label lbl = control as Label;
if (lbl != null)
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None);
control.Paint += (PaintEventHandler) ((sender, e) =>
{
if (control.Enabled || !this.IsDarkMode)
return;
e.Graphics.Clear(control.Parent.BackColor);
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
using (Brush brush = (Brush) new SolidBrush(control.ForeColor))
{
StringFormat format = lbl.GetType().GetMethod("CreateStringFormat", BindingFlags.Instance | BindingFlags.NonPublic).Invoke((object) lbl, new object[0]) as StringFormat;
e.Graphics.DrawString(lbl.Text, lbl.Font, brush, new PointF(1f, 0.0f), format);
}
});
}
if (control is LinkLabel)
{
control.GetType().GetProperty("LinkColor")?.SetValue((object) control, (object) darkModeCs.OScolors.AccentLight);
control.GetType().GetProperty("VisitedLinkColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Primary);
}
if (control is TextBox)
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) borderStyle);
if (control is NumericUpDown)
DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_ItemsView" : "ClearMode_ItemsView", (string) null);
if (control is Button)
{
Button button = control as Button;
button.FlatStyle = darkModeCs.IsDarkMode ? FlatStyle.Flat : FlatStyle.Standard;
button.FlatAppearance.CheckedBackColor = darkModeCs.OScolors.Accent;
button.FlatAppearance.BorderColor = System.Drawing.Color.Gray;
button.BackColor = darkModeCs.OScolors.Control;
button.FlatAppearance.BorderColor = darkModeCs.OwnerForm.AcceptButton == button ? darkModeCs.OScolors.Accent : darkModeCs.OScolors.Control;
}
if (control is ComboBox comboBox)
{
control.BeginInvoke((Delegate) (() => (control as ComboBox).SelectionLength = 0));
if (!control.Enabled && darkModeCs.IsDarkMode)
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_CFD" : "ClearMode_CFD", (string) null);
}
if (control is Panel)
{
Panel _Control = control as Panel;
_Control.BackColor = darkModeCs.OScolors.Surface;
_Control.BorderStyle = BorderStyle.None;
if ((!(_Control.Parent is TabControl) || !(_Control.Parent is TableLayoutPanel) || !(_Control.Parent is PictureBox)) && darkModeCs.RoundedPanels)
DarkModeCS.SetRoundBorders((Control) _Control, 6, new System.Drawing.Color?(darkModeCs.OScolors.Surface), 1);
}
if (control is GroupBox)
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
control.Paint += (PaintEventHandler) ((sender, e) =>
{
if (control.Enabled || !this.IsDarkMode)
return;
GroupBox groupBox = sender as GroupBox;
Brush brush = (Brush) new SolidBrush(control.ForeColor);
e.Graphics.DrawString(groupBox.Text, groupBox.Font, brush, new PointF(6f, 0.0f));
});
}
if (control is TableLayoutPanel)
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextInactive);
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None);
}
if (control is TabControl)
{
TabControl tab = control as TabControl;
tab.Appearance = TabAppearance.Normal;
tab.DrawMode = TabDrawMode.OwnerDrawFixed;
tab.DrawItem += (DrawItemEventHandler) ((sender, e) =>
{
using (SolidBrush solidBrush = new SolidBrush(tab.Parent.BackColor))
e.Graphics.FillRectangle((Brush) solidBrush, tab.ClientRectangle);
using (Brush brush = (Brush) new SolidBrush(this.OScolors.Surface))
{
for (int index = 0; index < tab.TabPages.Count; ++index)
{
TabPage tabPage = tab.TabPages[index];
tabPage.BackColor = this.OScolors.Surface;
tabPage.BorderStyle = BorderStyle.FixedSingle;
tabPage.ControlAdded += (ControlEventHandler) ((_s, _e) => this.ThemeControl(_e.Control));
Rectangle bounds = e.Bounds;
if (tab.SelectedIndex == index)
{
e.Graphics.FillRectangle(brush, bounds);
TextRenderer.DrawText((IDeviceContext) e.Graphics, tabPage.Text, tabPage.Font, e.Bounds, this.OScolors.TextActive);
}
else
TextRenderer.DrawText((IDeviceContext) e.Graphics, tabPage.Text, tabPage.Font, tab.GetTabRect(index), this.OScolors.TextInactive);
}
}
});
}
if (control.Name == "textBoxConsole")
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.ControlLight);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
}
if (control.Name == "fastColoredTextBox1")
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.ControlLight);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
control.GetType().GetProperty("IndentBackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Background);
}
if (control is PictureBox && control.Name != "userIMG" && control.Name != "clientIMG" && control.Name != "rateIMG" && control.Name != "onlineIMG" && control.Name != "offlineIMG")
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Background);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None);
if (control.Name == "mayo")
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
}
if (control is RadioButton)
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
control.ForeColor = control.Enabled ? darkModeCs.OScolors.TextActive : darkModeCs.OScolors.TextInactive;
control.Paint += (PaintEventHandler) ((sender, e) =>
{
if (control.Enabled || !this.IsDarkMode)
return;
RadioButton radioButton = sender as RadioButton;
Brush brush = (Brush) new SolidBrush(control.ForeColor);
e.Graphics.DrawString(radioButton.Text, radioButton.Font, brush, new PointF(16f, 0.0f));
});
}
if (control is MenuStrip)
{
(control as MenuStrip).RenderMode = ToolStripRenderMode.Professional;
(control as MenuStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons)
{
MyColors = darkModeCs.OScolors
};
}
if (control is ToolStrip)
{
(control as ToolStrip).RenderMode = ToolStripRenderMode.Professional;
(control as ToolStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons)
{
MyColors = darkModeCs.OScolors
};
}
if (control is ToolStripPanel)
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor);
if (control is ToolStripDropDown)
{
(control as ToolStripDropDown).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening);
(control as ToolStripDropDown).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening);
}
if (control is ToolStripDropDownMenu)
{
(control as ToolStripDropDownMenu).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening);
(control as ToolStripDropDownMenu).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening);
}
if (control is ContextMenuStrip)
{
(control as ContextMenuStrip).RenderMode = ToolStripRenderMode.Professional;
(control as ContextMenuStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons)
{
MyColors = darkModeCs.OScolors
};
(control as ContextMenuStrip).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening);
(control as ContextMenuStrip).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening);
}
if (control is MdiClient)
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Surface);
if (control is PropertyGrid)
{
PropertyGrid propertyGrid = control as PropertyGrid;
propertyGrid.BackColor = darkModeCs.OScolors.Control;
propertyGrid.ViewBackColor = darkModeCs.OScolors.Control;
propertyGrid.LineColor = darkModeCs.OScolors.Surface;
propertyGrid.ViewForeColor = darkModeCs.OScolors.TextActive;
propertyGrid.ViewBorderColor = darkModeCs.OScolors.ControlDark;
propertyGrid.CategoryForeColor = darkModeCs.OScolors.TextActive;
propertyGrid.CategorySplitterColor = darkModeCs.OScolors.ControlLight;
}
ListView lView = control as ListView;
if (lView != null)
{
DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_Explorer" : "Explorer", (string) null);
if (lView.View == View.Details)
{
lView.OwnerDraw = true;
lView.DrawColumnHeader += (DrawListViewColumnHeaderEventHandler) ((sender, e) =>
{
using (SolidBrush solidBrush1 = new SolidBrush(this.OScolors.ControlLight))
{
using (SolidBrush solidBrush2 = new SolidBrush(this.OScolors.TextActive))
{
using (StringFormat format = new StringFormat())
{
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
e.Graphics.FillRectangle((Brush) solidBrush1, e.Bounds);
e.Graphics.DrawString(e.Header.Text, lView.Font, (Brush) solidBrush2, (RectangleF) e.Bounds, format);
}
}
}
});
lView.DrawItem += (DrawListViewItemEventHandler) ((sender, e) => e.DrawDefault = true);
lView.DrawSubItem += (DrawListViewSubItemEventHandler) ((sender, e) => e.DrawDefault = true);
}
await DarkModeCS.DarkMode();
}
if (control is TreeView)
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None);
if (control is PictureBox && control.Name == "userIMG" && control.Name == "clientIMG" && control.Name == "rateIMG" && control.Name == "onlineIMG" && control.Name == "offlineIMG")
{
control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.BackgroundDark);
control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive);
control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None);
await DarkModeCS.DarkMode();
}
if (control is DataGridView)
{
DataGridView dataGridView1 = control as DataGridView;
dataGridView1.EnableHeadersVisualStyles = false;
dataGridView1.BorderStyle = BorderStyle.FixedSingle;
dataGridView1.BackgroundColor = darkModeCs.OScolors.Control;
dataGridView1.GridColor = darkModeCs.OScolors.Control;
dataGridView1.Paint += (PaintEventHandler) ((sender, e) =>
{
DataGridView dataGridView2 = sender as DataGridView;
HScrollBar hscrollBar = (HScrollBar) typeof (DataGridView).GetProperty("HorizontalScrollBar", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object) dataGridView2);
if (!hscrollBar.Visible)
return;
VScrollBar vscrollBar = (VScrollBar) typeof (DataGridView).GetProperty("VerticalScrollBar", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object) dataGridView2);
if (!vscrollBar.Visible)
return;
Brush brush = (Brush) new SolidBrush(this.OScolors.SurfaceDark);
int width = vscrollBar.Size.Width;
int height = hscrollBar.Size.Height;
e.Graphics.FillRectangle(brush, dataGridView2.ClientRectangle.X + dataGridView2.ClientRectangle.Width - width - 1, dataGridView2.ClientRectangle.Y + dataGridView2.ClientRectangle.Height - height - 1, width, height);
});
dataGridView1.DefaultCellStyle.BackColor = darkModeCs.OScolors.Surface;
dataGridView1.DefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive;
dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = darkModeCs.OScolors.Surface;
dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive;
dataGridView1.ColumnHeadersDefaultCellStyle.SelectionBackColor = darkModeCs.OScolors.Surface;
dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
dataGridView1.ColumnHeadersHeight = 140;
dataGridView1.RowHeadersDefaultCellStyle.BackColor = darkModeCs.OScolors.Surface;
dataGridView1.RowHeadersDefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive;
dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = darkModeCs.OScolors.Surface;
dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
}
if (control is RichTextBox richTextBox)
richTextBox.BackColor = richTextBox.Parent.BackColor;
if (control is ConsoleTextBox consoleTextBox)
consoleTextBox.BackColor = consoleTextBox.Parent.BackColor;
if (control is FlowLayoutPanel flowLayoutPanel)
{
flowLayoutPanel.BackColor = flowLayoutPanel.Parent.BackColor;
flowLayoutPanel.BorderStyle = BorderStyle.None;
}
if (control.ContextMenuStrip != null)
darkModeCs.ThemeControl((Control) control.ContextMenuStrip);
IEnumerator enumerator = control.Controls.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
Control current = (Control) enumerator.Current;
darkModeCs.ThemeControl(current);
}
}
finally
{
if (enumerator is IDisposable disposable)
disposable.Dispose();
}
}
public static void ExcludeFromProcessing(Control control)
{
DarkModeCS.controlStatusStorage.ExcludeFromProcessing(control);
}
public static int GetWindowsColorMode(bool GetSystemColorModeInstead = false)
{
try
{
return (int) Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", GetSystemColorModeInstead ? "SystemUsesLightTheme" : "AppsUseLightTheme", (object) -1);
}
catch
{
return 1;
}
}
public static System.Drawing.Color GetWindowsAccentColor()
{
try
{
DarkModeCS.DWMCOLORIZATIONcolors colors = new DarkModeCS.DWMCOLORIZATIONcolors();
DarkModeCS.DwmGetColorizationParameters(ref colors);
if (!DarkModeCS.IsWindows10orGreater())
return System.Drawing.Color.CadetBlue;
long num = long.Parse(colors.ColorizationColor.ToString(), NumberStyles.HexNumber);
return System.Drawing.Color.FromArgb((int) (num >> 24 & (long) byte.MaxValue), (int) (num >> 16 /*0x10*/ & (long) byte.MaxValue), (int) (num >> 8 & (long) byte.MaxValue), (int) (num & (long) byte.MaxValue));
}
catch (Exception ex)
{
return System.Drawing.Color.CadetBlue;
}
}
public static System.Drawing.Color GetWindowsAccentOpaqueColor()
{
DarkModeCS.DWMCOLORIZATIONcolors colors = new DarkModeCS.DWMCOLORIZATIONcolors();
DarkModeCS.DwmGetColorizationParameters(ref colors);
if (!DarkModeCS.IsWindows10orGreater())
return System.Drawing.Color.CadetBlue;
long num = long.Parse(colors.ColorizationColor.ToString(), NumberStyles.HexNumber);
return System.Drawing.Color.FromArgb((int) byte.MaxValue, (int) (num >> 16 /*0x10*/ & (long) byte.MaxValue), (int) (num >> 8 & (long) byte.MaxValue), (int) (num & (long) byte.MaxValue));
}
public static OSThemeColors GetSystemColors(Form Window = null, int ColorMode = 0)
{
OSThemeColors systemColors = new OSThemeColors();
if (ColorMode <= 0)
{
systemColors.Background = System.Drawing.Color.FromArgb(32 /*0x20*/, 32 /*0x20*/, 32 /*0x20*/);
systemColors.BackgroundDark = System.Drawing.Color.FromArgb(18, 18, 18);
systemColors.BackgroundLight = ControlPaint.Light(systemColors.Background);
systemColors.Surface = System.Drawing.Color.FromArgb(43, 43, 43);
systemColors.SurfaceLight = System.Drawing.Color.FromArgb(50, 50, 50);
systemColors.SurfaceDark = System.Drawing.Color.FromArgb(29, 29, 29);
systemColors.TextActive = System.Drawing.Color.White;
systemColors.TextInactive = System.Drawing.Color.FromArgb(176 /*0xB0*/, 176 /*0xB0*/, 176 /*0xB0*/);
systemColors.TextInAccent = DarkModeCS.GetReadableColor(systemColors.Accent);
systemColors.Control = System.Drawing.Color.FromArgb(55, 55, 55);
systemColors.ControlDark = ControlPaint.Dark(systemColors.Control);
systemColors.ControlLight = System.Drawing.Color.FromArgb(67, 67, 67);
systemColors.Primary = System.Drawing.Color.FromArgb(3, 218, 198);
systemColors.Secondary = System.Drawing.Color.MediumSlateBlue;
}
return systemColors;
}
public static void SetRoundBorders(
Control _Control,
int Radius = 10,
System.Drawing.Color? borderColor = null,
int borderSize = 2,
bool underlinedStyle = false)
{
try
{
borderColor = new System.Drawing.Color?(borderColor ?? System.Drawing.Color.MediumSlateBlue);
if (_Control == null)
return;
_Control.GetType().GetProperty("BorderStyle")?.SetValue((object) _Control, (object) BorderStyle.None);
_Control.Region = Region.FromHrgn(DarkModeCS.CreateRoundRectRgn(0, 0, _Control.Width, _Control.Height, Radius, Radius));
_Control.Paint += (PaintEventHandler) ((sender, e) =>
{
Graphics graphics = e.Graphics;
if (Radius <= 1)
return;
Rectangle clientRectangle = _Control.ClientRectangle;
Rectangle rect = Rectangle.Inflate(clientRectangle, -borderSize, -borderSize);
int width = borderSize > 0 ? borderSize : 1;
using (GraphicsPath figurePath1 = DarkModeCS.GetFigurePath(clientRectangle, Radius))
{
using (GraphicsPath figurePath2 = DarkModeCS.GetFigurePath(rect, Radius - borderSize))
{
using (Pen pen1 = new Pen(_Control.Parent.BackColor, (float) width))
{
using (Pen pen2 = new Pen(borderColor.Value, (float) borderSize))
{
_Control.Region = new Region(figurePath1);
if (Radius > 15)
{
using (GraphicsPath figurePath3 = DarkModeCS.GetFigurePath(_Control.ClientRectangle, borderSize * 2))
_Control.Region = new Region(figurePath3);
}
graphics.SmoothingMode = SmoothingMode.AntiAlias;
pen2.Alignment = PenAlignment.Center;
if (underlinedStyle)
{
graphics.DrawPath(pen1, figurePath1);
graphics.SmoothingMode = SmoothingMode.None;
graphics.DrawLine(pen2, 0, _Control.Height - 1, _Control.Width, _Control.Height - 1);
}
else
{
graphics.DrawPath(pen1, figurePath1);
graphics.DrawPath(pen2, figurePath2);
}
}
}
}
}
});
}
catch
{
throw;
}
}
public static Bitmap ChangeToColor(Bitmap bmp, System.Drawing.Color c)
{
Bitmap color = new Bitmap(bmp.Width, bmp.Height);
using (Graphics graphics = Graphics.FromImage((Image) color))
{
graphics.InterpolationMode = InterpolationMode.HighQualityBilinear;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.SmoothingMode = SmoothingMode.HighQuality;
ColorMatrix newColorMatrix = new ColorMatrix(new float[5][]
{
new float[5]{ 1f, 0.0f, 0.0f, 0.0f, 0.0f },
new float[5]{ 0.0f, 1f, 0.0f, 0.0f, 0.0f },
new float[5]{ 0.0f, 0.0f, 1f, 0.0f, 0.0f },
new float[5]{ 0.0f, 0.0f, 0.0f, 1f, 0.0f },
new float[5]
{
(float) c.R / (float) byte.MaxValue,
(float) c.G / (float) byte.MaxValue,
(float) c.B / (float) byte.MaxValue,
0.0f,
1f
}
});
ImageAttributes imageAttr = new ImageAttributes();
imageAttr.SetColorMatrix(newColorMatrix);
graphics.DrawImage((Image) bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, imageAttr);
}
return color;
}
public static Image ChangeToColor(Image bmp, System.Drawing.Color c)
{
return (Image) DarkModeCS.ChangeToColor((Bitmap) bmp, c);
}
private void Tsdd_Opening(object sender, CancelEventArgs e)
{
if (!(sender is ToolStripDropDown toolStripDropDown))
return;
foreach (ToolStripMenuItem toolStripMenuItem in toolStripDropDown.Items.OfType<ToolStripMenuItem>())
{
toolStripMenuItem.DropDownOpening -= new EventHandler(this.Tsmi_DropDownOpening);
toolStripMenuItem.DropDownOpening += new EventHandler(this.Tsmi_DropDownOpening);
}
}
private void Tsmi_DropDownOpening(object sender, EventArgs e)
{
if (!(sender is ToolStripMenuItem toolStripMenuItem))
return;
if (toolStripMenuItem.DropDown.Items.Count > 0)
this.ThemeControl((Control) toolStripMenuItem.DropDown);
toolStripMenuItem.DropDownOpening -= new EventHandler(this.Tsmi_DropDownOpening);
}
private static void ApplySystemDarkTheme(Control control = null, bool IsDarkMode = true)
{
int[] numArray;
if (!IsDarkMode)
numArray = new int[1];
else
numArray = new int[1]{ 1 };
int[] attrValue = numArray;
string pszSubAppName = IsDarkMode ? "DarkMode_Explorer" : "DarkMode_Explorer";
DarkModeCS.SetWindowTheme(control.Handle, pszSubAppName, (string) null);
if (DarkModeCS.DwmSetWindowAttribute(control.Handle, 19, attrValue, 4) != 0)
DarkModeCS.DwmSetWindowAttribute(control.Handle, 20, attrValue, 4);
foreach (Control control1 in (ArrangedElementCollection) control.Controls)
{
if (control1.Controls.Count != 0)
DarkModeCS.ApplySystemDarkTheme(control1, IsDarkMode);
}
}
private static bool IsWindows10orGreater() => DarkModeCS.WindowsVersion() >= 10;
private static int WindowsVersion()
{
int result;
try
{
int.TryParse(Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion").GetValue("ProductName").ToString().Split(' ')[1], out result);
}
catch (Exception ex)
{
result = Environment.OSVersion.Version.Major;
}
return result;
}
private static System.Drawing.Color GetReadableColor(System.Drawing.Color backgroundColor)
{
return 0.299 * ((double) backgroundColor.R / (double) byte.MaxValue) + 0.587 * ((double) backgroundColor.G / (double) byte.MaxValue) + 0.114 * ((double) backgroundColor.B / (double) byte.MaxValue) >= 0.5 ? System.Drawing.Color.FromArgb(34, 34, 34) : System.Drawing.Color.FromArgb(182, 180, 215);
}
private static GraphicsPath GetFigurePath(Rectangle rect, int radius)
{
GraphicsPath figurePath = new GraphicsPath();
float num = (float) radius * 2f;
figurePath.StartFigure();
figurePath.AddArc((float) rect.X, (float) rect.Y, num, num, 180f, 90f);
figurePath.AddArc((float) rect.Right - num, (float) rect.Y, num, num, 270f, 90f);
figurePath.AddArc((float) rect.Right - num, (float) rect.Bottom - num, num, num, 0.0f, 90f);
figurePath.AddArc((float) rect.X, (float) rect.Bottom - num, num, num, 90f, 90f);
figurePath.CloseFigure();
return figurePath;
}
public struct DWMCOLORIZATIONcolors
{
public uint ColorizationColor;
public uint ColorizationAfterglow;
public uint ColorizationColorBalance;
public uint ColorizationAfterglowBalance;
public uint ColorizationBlurBalance;
public uint ColorizationGlassReflectionIntensity;
public uint ColorizationOpaqueBlend;
}
[Flags]
public enum DWMWINDOWATTRIBUTE : uint
{
DWMWA_NCRENDERING_ENABLED = 1,
DWMWA_NCRENDERING_POLICY = 2,
DWMWA_TRANSITIONS_FORCEDISABLED = DWMWA_NCRENDERING_POLICY | DWMWA_NCRENDERING_ENABLED, // 0x00000003
DWMWA_ALLOW_NCPAINT = 4,
DWMWA_CAPTION_BUTTON_BOUNDS = DWMWA_ALLOW_NCPAINT | DWMWA_NCRENDERING_ENABLED, // 0x00000005
DWMWA_NONCLIENT_RTL_LAYOUT = DWMWA_ALLOW_NCPAINT | DWMWA_NCRENDERING_POLICY, // 0x00000006
DWMWA_FORCE_ICONIC_REPRESENTATION = DWMWA_NONCLIENT_RTL_LAYOUT | DWMWA_NCRENDERING_ENABLED, // 0x00000007
DWMWA_FLIP3D_POLICY = 8,
DWMWA_EXTENDED_FRAME_BOUNDS = DWMWA_FLIP3D_POLICY | DWMWA_NCRENDERING_ENABLED, // 0x00000009
DWMWA_HAS_ICONIC_BITMAP = DWMWA_FLIP3D_POLICY | DWMWA_NCRENDERING_POLICY, // 0x0000000A
DWMWA_DISALLOW_PEEK = DWMWA_HAS_ICONIC_BITMAP | DWMWA_NCRENDERING_ENABLED, // 0x0000000B
DWMWA_EXCLUDED_FROM_PEEK = DWMWA_FLIP3D_POLICY | DWMWA_ALLOW_NCPAINT, // 0x0000000C
DWMWA_CLOAK = DWMWA_EXCLUDED_FROM_PEEK | DWMWA_NCRENDERING_ENABLED, // 0x0000000D
DWMWA_CLOAKED = DWMWA_EXCLUDED_FROM_PEEK | DWMWA_NCRENDERING_POLICY, // 0x0000000E
DWMWA_FREEZE_REPRESENTATION = DWMWA_CLOAKED | DWMWA_NCRENDERING_ENABLED, // 0x0000000F
DWMWA_USE_HOSTBACKDROPBRUSH = 16, // 0x00000010
DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 = DWMWA_USE_HOSTBACKDROPBRUSH | DWMWA_TRANSITIONS_FORCEDISABLED, // 0x00000013
DWMWA_USE_IMMERSIVE_DARK_MODE = DWMWA_USE_HOSTBACKDROPBRUSH | DWMWA_ALLOW_NCPAINT, // 0x00000014
DWMWA_WINDOW_CORNER_PREFERENCE = 33, // 0x00000021
DWMWA_BORDER_COLOR = 34, // 0x00000022
DWMWA_CAPTION_COLOR = DWMWA_BORDER_COLOR | DWMWA_NCRENDERING_ENABLED, // 0x00000023
DWMWA_TEXT_COLOR = 36, // 0x00000024
DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = DWMWA_TEXT_COLOR | DWMWA_NCRENDERING_ENABLED, // 0x00000025
DWMWA_LAST = DWMWA_TEXT_COLOR | DWMWA_NCRENDERING_POLICY, // 0x00000026
}
[Flags]
public enum DWM_WINDOW_CORNER_PREFERENCE
{
DWMWCP_DEFAULT = 0,
DWMWCP_DONOTROUND = 1,
DWMWCP_ROUND = 2,
DWMWCP_ROUNDSMALL = DWMWCP_ROUND | DWMWCP_DONOTROUND, // 0x00000003
}
[Serializable]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
public Rectangle ToRectangle()
{
return Rectangle.FromLTRB(this.Left, this.Top, this.Right, this.Bottom);
}
}
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
private delegate IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
public enum DisplayMode
{
SystemDefault,
ClearMode,
DarkMode,
}
}