diff --git a/DarkControls/Controls/WindowsDefaultTitleBarButton.cs b/DarkControls/Controls/WindowsDefaultTitleBarButton.cs index 22f7399..f839ccf 100644 --- a/DarkControls/Controls/WindowsDefaultTitleBarButton.cs +++ b/DarkControls/Controls/WindowsDefaultTitleBarButton.cs @@ -50,7 +50,7 @@ namespace DarkControls.Controls /// /// The background color of the button when the button is clicked. /// - + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -61,7 +61,7 @@ namespace DarkControls.Controls /// /// The default color of the icon. /// - + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -72,7 +72,7 @@ namespace DarkControls.Controls /// /// The color of the icon when the mouse is inside the buttons bounds. /// - + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -83,7 +83,7 @@ namespace DarkControls.Controls /// /// The color of the icon when the mouse is inside the buttons bounds. /// - + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -95,7 +95,7 @@ namespace DarkControls.Controls /// /// The color of the icon when the button is clicked. /// - + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -106,8 +106,8 @@ namespace DarkControls.Controls /// /// Property which returns the active background color of the button depending on if the button is clicked or hovered. /// - /// - + /// + [RefreshProperties(System.ComponentModel.RefreshProperties.All)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] @@ -221,7 +221,22 @@ namespace DarkControls.Controls protected override void OnClick(EventArgs e) { if (ButtonType == Type.Close) - this.FindForm()?.Close(); + { + Form frm = this.FindForm(); + if (frm != null) + { + if (frm.AcceptButton != null) + { + frm.DialogResult = DialogResult.OK; + frm.Dispose(); + } + else + { + frm.Dispose(); + } + } + } + else if (ButtonType == Type.Maximize) this.FindForm().WindowState = this.FindForm().WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized; else diff --git a/KsDumper11/Dumper.Designer.cs b/KsDumper11/Dumper.Designer.cs index 17b346a..1e80891 100644 --- a/KsDumper11/Dumper.Designer.cs +++ b/KsDumper11/Dumper.Designer.cs @@ -28,13 +28,14 @@ this.suspendProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.resumeProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.killProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.appIcon1 = new DarkControls.Controls.AppIcon(); this.fileDumpBtn = new System.Windows.Forms.Button(); this.transparentLabel1 = new DarkControls.Controls.TransparentLabel(); this.closeBtn = new DarkControls.Controls.WindowsDefaultTitleBarButton(); this.refreshBtn = new System.Windows.Forms.Button(); this.autoRefreshCheckBox = new DarkControls.Controls.DarkCheckBox(); this.hideSystemProcessBtn = new System.Windows.Forms.Button(); + this.closeDriverOnExitBox = new DarkControls.Controls.DarkCheckBox(); + this.appIcon1 = new DarkControls.Controls.AppIcon(); this.processList = new KsDumper11.Utility.ProcessListView(); this.PIDHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.NameHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); @@ -43,7 +44,8 @@ this.EntryPointHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.ImageSizeHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.ImageTypeHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.closeDriverOnExitBox = new DarkControls.Controls.DarkCheckBox(); + this.debuggerTrigger = new KsDumper11.Trigger(); + this.trigger1 = new KsDumper11.Trigger(); this.groupBox1.SuspendLayout(); this.contextMenuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.appIcon1)).BeginInit(); @@ -127,18 +129,6 @@ this.killProcessToolStripMenuItem.Text = "Kill process"; this.killProcessToolStripMenuItem.Click += new System.EventHandler(this.killProcessToolStripMenuItem_Click); // - // appIcon1 - // - this.appIcon1.AppIconImage = global::KsDumper11.Properties.Resources.icons8_crossed_axes_100; - this.appIcon1.DragForm = this; - this.appIcon1.Image = ((System.Drawing.Image)(resources.GetObject("appIcon1.Image"))); - this.appIcon1.Location = new System.Drawing.Point(5, 4); - this.appIcon1.Name = "appIcon1"; - this.appIcon1.Scale = 3.5F; - this.appIcon1.Size = new System.Drawing.Size(28, 28); - this.appIcon1.TabIndex = 9; - this.appIcon1.TabStop = false; - // // fileDumpBtn // this.fileDumpBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); @@ -220,6 +210,35 @@ this.hideSystemProcessBtn.UseVisualStyleBackColor = false; this.hideSystemProcessBtn.Click += new System.EventHandler(this.hideSystemProcessBtn_Click); // + // closeDriverOnExitBox + // + this.closeDriverOnExitBox.Appearance = System.Windows.Forms.Appearance.Button; + this.closeDriverOnExitBox.BoxBorderColor = System.Drawing.Color.DarkSlateBlue; + this.closeDriverOnExitBox.BoxFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); + this.closeDriverOnExitBox.CheckColor = System.Drawing.Color.CornflowerBlue; + this.closeDriverOnExitBox.FlatAppearance.BorderSize = 0; + this.closeDriverOnExitBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.closeDriverOnExitBox.Location = new System.Drawing.Point(723, 49); + this.closeDriverOnExitBox.Name = "closeDriverOnExitBox"; + this.closeDriverOnExitBox.Size = new System.Drawing.Size(133, 23); + this.closeDriverOnExitBox.TabIndex = 13; + this.closeDriverOnExitBox.Text = "Close Driver on Exit"; + this.closeDriverOnExitBox.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.closeDriverOnExitBox.UseVisualStyleBackColor = true; + this.closeDriverOnExitBox.CheckedChanged += new System.EventHandler(this.closeDriverOnExitBox_CheckedChanged); + // + // appIcon1 + // + this.appIcon1.AppIconImage = global::KsDumper11.Properties.Resources.icons8_crossed_axes_100; + this.appIcon1.DragForm = this; + this.appIcon1.Image = ((System.Drawing.Image)(resources.GetObject("appIcon1.Image"))); + this.appIcon1.Location = new System.Drawing.Point(5, 4); + this.appIcon1.Name = "appIcon1"; + this.appIcon1.Scale = 3.5F; + this.appIcon1.Size = new System.Drawing.Size(28, 28); + this.appIcon1.TabIndex = 9; + this.appIcon1.TabStop = false; + // // processList // this.processList.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); @@ -282,22 +301,21 @@ this.ImageTypeHeader.Text = "Image Type"; this.ImageTypeHeader.Width = 76; // - // closeDriverOnExitBox + // debuggerTrigger // - this.closeDriverOnExitBox.Appearance = System.Windows.Forms.Appearance.Button; - this.closeDriverOnExitBox.BoxBorderColor = System.Drawing.Color.DarkSlateBlue; - this.closeDriverOnExitBox.BoxFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); - this.closeDriverOnExitBox.CheckColor = System.Drawing.Color.CornflowerBlue; - this.closeDriverOnExitBox.FlatAppearance.BorderSize = 0; - this.closeDriverOnExitBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.closeDriverOnExitBox.Location = new System.Drawing.Point(723, 49); - this.closeDriverOnExitBox.Name = "closeDriverOnExitBox"; - this.closeDriverOnExitBox.Size = new System.Drawing.Size(133, 23); - this.closeDriverOnExitBox.TabIndex = 13; - this.closeDriverOnExitBox.Text = "Close Driver on Exit"; - this.closeDriverOnExitBox.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.closeDriverOnExitBox.UseVisualStyleBackColor = true; - this.closeDriverOnExitBox.CheckedChanged += new System.EventHandler(this.closeDriverOnExitBox_CheckedChanged); + this.debuggerTrigger.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); + this.debuggerTrigger.Location = new System.Drawing.Point(484, 37); + this.debuggerTrigger.Name = "debuggerTrigger"; + this.debuggerTrigger.Size = new System.Drawing.Size(35, 24); + this.debuggerTrigger.TabIndex = 14; + // + // trigger1 + // + this.trigger1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); + this.trigger1.Location = new System.Drawing.Point(484, 28); + this.trigger1.Name = "trigger1"; + this.trigger1.Size = new System.Drawing.Size(15, 13); + this.trigger1.TabIndex = 15; // // Dumper // @@ -305,6 +323,8 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); this.ClientSize = new System.Drawing.Size(1009, 746); + this.Controls.Add(this.trigger1); + this.Controls.Add(this.debuggerTrigger); this.Controls.Add(this.closeDriverOnExitBox); this.Controls.Add(this.hideSystemProcessBtn); this.Controls.Add(this.autoRefreshCheckBox); @@ -405,5 +425,7 @@ // Token: 0x0400002A RID: 42 private global::System.Windows.Forms.Button hideSystemProcessBtn; private DarkControls.Controls.DarkCheckBox closeDriverOnExitBox; + private Trigger debuggerTrigger; + private Trigger trigger1; } } diff --git a/KsDumper11/KsDumper11.csproj b/KsDumper11/KsDumper11.csproj index 7d8e72e..5da3127 100644 --- a/KsDumper11/KsDumper11.csproj +++ b/KsDumper11/KsDumper11.csproj @@ -98,6 +98,12 @@ + + Form + + + TriggerForm.cs + Form @@ -129,12 +135,21 @@ True Resources.resx + + UserControl + + + Trigger.cs + Component + + TriggerForm.cs + Dumper.cs @@ -145,6 +160,9 @@ SplashForm.cs + + Trigger.cs + Always diff --git a/KsDumper11/Trigger.Designer.cs b/KsDumper11/Trigger.Designer.cs new file mode 100644 index 0000000..3c1b99d --- /dev/null +++ b/KsDumper11/Trigger.Designer.cs @@ -0,0 +1,46 @@ +namespace KsDumper11 +{ + partial class Trigger + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // Trigger + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.Name = "Trigger"; + this.Size = new System.Drawing.Size(35, 24); + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/KsDumper11/Trigger.cs b/KsDumper11/Trigger.cs new file mode 100644 index 0000000..aab980e --- /dev/null +++ b/KsDumper11/Trigger.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace KsDumper11 +{ + public partial class Trigger : UserControl + { + TriggerForm triggerFrm; + public Trigger() + { + InitializeComponent(); + triggerFrm = new TriggerForm(); + this.Click += Trigger_Click; + } + + private void Trigger_Click(object sender, EventArgs e) + { + if (triggerFrm == null) + { + triggerFrm = new TriggerForm(); + } + else + { + if (triggerFrm.IsDisposed) + { + triggerFrm = new TriggerForm(); + } + } + + if (!triggerFrm.Visible) + { + triggerFrm.ShowDialog(this.ParentForm); + } + } + } +} diff --git a/KsDumper11/Trigger.resx b/KsDumper11/Trigger.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/KsDumper11/Trigger.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KsDumper11/TriggerForm.Designer.cs b/KsDumper11/TriggerForm.Designer.cs new file mode 100644 index 0000000..7269a3a --- /dev/null +++ b/KsDumper11/TriggerForm.Designer.cs @@ -0,0 +1,131 @@ +namespace KsDumper11 +{ + partial class TriggerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TriggerForm)); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.acceptBtn = new System.Windows.Forms.Button(); + this.appIcon1 = new DarkControls.Controls.AppIcon(); + this.transparentLabel1 = new DarkControls.Controls.TransparentLabel(); + this.closeBtn = new DarkControls.Controls.WindowsDefaultTitleBarButton(); + ((System.ComponentModel.ISupportInitialize)(this.appIcon1)).BeginInit(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); + this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.textBox1.ForeColor = System.Drawing.Color.Silver; + this.textBox1.Location = new System.Drawing.Point(12, 47); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(405, 139); + this.textBox1.TabIndex = 10; + this.textBox1.Text = resources.GetString("textBox1.Text"); + // + // acceptBtn + // + this.acceptBtn.Location = new System.Drawing.Point(295, 13); + this.acceptBtn.Name = "acceptBtn"; + this.acceptBtn.Size = new System.Drawing.Size(75, 23); + this.acceptBtn.TabIndex = 11; + this.acceptBtn.Text = "OK"; + this.acceptBtn.UseVisualStyleBackColor = true; + this.acceptBtn.Visible = false; + // + // appIcon1 + // + this.appIcon1.AppIconImage = ((System.Drawing.Image)(resources.GetObject("appIcon1.AppIconImage"))); + this.appIcon1.DragForm = null; + this.appIcon1.Image = ((System.Drawing.Image)(resources.GetObject("appIcon1.Image"))); + this.appIcon1.Location = new System.Drawing.Point(0, 1); + this.appIcon1.Name = "appIcon1"; + this.appIcon1.Scale = 3.5F; + this.appIcon1.Size = new System.Drawing.Size(28, 28); + this.appIcon1.TabIndex = 9; + this.appIcon1.TabStop = false; + // + // transparentLabel1 + // + this.transparentLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.transparentLabel1.Location = new System.Drawing.Point(32, 4); + this.transparentLabel1.Name = "transparentLabel1"; + this.transparentLabel1.Size = new System.Drawing.Size(108, 20); + this.transparentLabel1.TabIndex = 8; + this.transparentLabel1.Text = "Easter egg"; + // + // closeBtn + // + this.closeBtn.ButtonType = DarkControls.Controls.WindowsDefaultTitleBarButton.Type.Close; + this.closeBtn.ClickColor = System.Drawing.Color.Red; + this.closeBtn.ClickIconColor = System.Drawing.Color.Black; + this.closeBtn.HoverColor = System.Drawing.Color.OrangeRed; + this.closeBtn.HoverIconColor = System.Drawing.Color.Black; + this.closeBtn.IconColor = System.Drawing.Color.Black; + this.closeBtn.IconLineThickness = 2; + this.closeBtn.Location = new System.Drawing.Point(389, 1); + this.closeBtn.Name = "closeBtn"; + this.closeBtn.Size = new System.Drawing.Size(40, 40); + this.closeBtn.TabIndex = 7; + this.closeBtn.Text = "windowsDefaultTitleBarButton1"; + this.closeBtn.UseVisualStyleBackColor = true; + // + // TriggerForm + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33))))); + this.ClientSize = new System.Drawing.Size(429, 198); + this.Controls.Add(this.acceptBtn); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.appIcon1); + this.Controls.Add(this.transparentLabel1); + this.Controls.Add(this.closeBtn); + this.DoubleBuffered = true; + this.ForeColor = System.Drawing.Color.Silver; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "TriggerForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Basic File Box"; + ((System.ComponentModel.ISupportInitialize)(this.appIcon1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private DarkControls.Controls.WindowsDefaultTitleBarButton closeBtn; + private DarkControls.Controls.TransparentLabel transparentLabel1; + private DarkControls.Controls.AppIcon appIcon1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button acceptBtn; + } +} + diff --git a/KsDumper11/TriggerForm.cs b/KsDumper11/TriggerForm.cs new file mode 100644 index 0000000..6b81c58 --- /dev/null +++ b/KsDumper11/TriggerForm.cs @@ -0,0 +1,61 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.Diagnostics; +using DarkControls; + +namespace KsDumper11 +{ + public partial class TriggerForm : Form + { + protected override CreateParams CreateParams + { + get + { + // Activate double buffering at the form level. All child controls will be double buffered as well. + CreateParams cp = base.CreateParams; + cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED + return cp; + } + } + + public TriggerForm() + { + + InitializeComponent(); + //this.AcceptButton = acceptBtn; + this.appIcon1.DragForm = this; + this.FormClosing += TriggerForm_FormClosing; + this.Shown += TriggerForm_Shown; + this.FormBorderStyle = FormBorderStyle.None; + this.Region = Region.FromHrgn(Utils.CreateRoundRectRgn(0, 0, Width, Height, 10, 10)); + this.closeBtn.Region = Region.FromHrgn(Utils.CreateRoundRectRgn(0, 0, closeBtn.Width, closeBtn.Height, 10, 10)); + } + + private void TriggerForm_Shown(object sender, EventArgs e) + { + //Debugger.Break(); + } + + private void TriggerForm_FormClosing(object sender, FormClosingEventArgs e) + { + this.DialogResult = DialogResult.OK; + } + + protected override void WndProc(ref Message m) + { + base.WndProc(ref m); + if (m.Msg == Utils.WM_NCHITTEST) + m.Result = (IntPtr)(Utils.HT_CAPTION); + } + } +} diff --git a/KsDumper11/TriggerForm.resx b/KsDumper11/TriggerForm.resx new file mode 100644 index 0000000..e4604a0 --- /dev/null +++ b/KsDumper11/TriggerForm.resx @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + This is a fix for the infinite animation of giraffes in the quantum matrix issue that was presented as an issue on the githib repo. +We still need to address the portal and space time separation issues. +As of this moment, theres ongoing investigation into that topic. +For now, put your head between your legs and hold on to your butt, cause we're off in flight! + + + + + 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 + SUVORK5CYII= + + + \ No newline at end of file