├── .gitignore ├── AppLauncher ├── App.config ├── AppLauncher.csproj ├── AppLauncher.ico ├── Launchable.cs ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── packages.config ├── CmdTitle ├── App.config ├── CmdTitle.csproj ├── Program.cs └── Properties │ └── AssemblyInfo.cs ├── DirBrowser ├── App.config ├── DirBrowser.Designer.cs ├── DirBrowser.cs ├── DirBrowser.csproj ├── DirBrowser.ico ├── DirBrowser.resx ├── DirBrowser.svg ├── LICENSE ├── Program.cs └── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── FunUtils.sln ├── Ghidra ├── App.config ├── Ghidra.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── ghidra.ico ├── GitExtBar ├── App.config ├── GitExtBar.Designer.cs ├── GitExtBar.cs ├── GitExtBar.csproj ├── GitExtBar.ico ├── GitExtBar.resx ├── LICENSE ├── LICENSE.md ├── ProcessCommandLine.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── Resources │ ├── IconAbout.ico │ ├── IconAdded.ico │ ├── IconBranchCheckout.ico │ ├── IconBranchCheckout.png │ ├── IconBranchCreate.ico │ ├── IconBranchCreate.png │ ├── IconBrowseFileExplorer.ico │ ├── IconCloneRepoGit.ico │ ├── IconCommit.ico │ ├── IconDiff.ico │ ├── IconFileHistory.ico │ ├── IconPatchApply.ico │ ├── IconPull.ico │ ├── IconPullFetch.png │ ├── IconPush.ico │ ├── IconRepoCreate.ico │ ├── IconResetFileTo.ico │ ├── IconResetWorkingDirChanges.png │ ├── IconRevisionCheckout.ico │ ├── IconRevisionCheckout.png │ ├── IconSettings.ico │ └── IconStash.ico ├── LICENSE ├── NewFile ├── App.config ├── NewFile.csproj ├── Program.cs └── Properties │ └── AssemblyInfo.cs ├── Notes ├── .gitignore ├── LICENSE ├── Notes.sln ├── Notes │ ├── App.config │ ├── Notes.Designer.cs │ ├── Notes.cs │ ├── Notes.csproj │ ├── Notes.resx │ ├── Program.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── TreeList.cs │ ├── notes-pngrepo-com.png │ ├── notes-svgrepo-com.svg │ ├── notes.ico │ └── packages.config └── TreeList │ ├── Properties │ └── AssemblyInfo.cs │ ├── TreeList.cs │ └── TreeList.csproj ├── README.md ├── RipGrepGUI ├── App.config ├── Helpers.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── RipGrepGUI.Designer.cs ├── RipGrepGUI.cs ├── RipGrepGUI.csproj ├── RipGrepGUI.resx ├── search-svgrepo-com.ico ├── search-svgrepo-com.png └── search-svgrepo-com.svg ├── SysShellHandler ├── App.config ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── SysShellHandler.Designer.cs ├── SysShellHandler.cs ├── SysShellHandler.csproj ├── SysShellHandler.ico └── SysShellHandler.resx ├── separate-console ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── separate-console.csproj └── sudo ├── resource.h ├── resource.rc ├── sudo.cpp ├── sudo.vcxproj ├── sudo.vcxproj.filters └── uac.ico /.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | bin/ 3 | obj/ 4 | Release/ 5 | Debug/ 6 | x64/ 7 | *.aps 8 | *.vcxproj.user 9 | packages/ 10 | *.user 11 | -------------------------------------------------------------------------------- /AppLauncher/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AppLauncher/AppLauncher.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0DB1C5AA-E59E-41E4-A573-09AE9F47D894} 8 | WinExe 9 | AppLauncher 10 | AppLauncher 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | false 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | false 35 | 36 | 37 | AppLauncher.ico 38 | 39 | 40 | 41 | ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | Form 59 | 60 | 61 | MainForm.cs 62 | 63 | 64 | 65 | 66 | MainForm.cs 67 | 68 | 69 | ResXFileCodeGenerator 70 | Resources.Designer.cs 71 | Designer 72 | 73 | 74 | True 75 | Resources.resx 76 | 77 | 78 | 79 | SettingsSingleFileGenerator 80 | Settings.Designer.cs 81 | 82 | 83 | True 84 | Settings.settings 85 | True 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /AppLauncher/AppLauncher.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/AppLauncher/AppLauncher.ico -------------------------------------------------------------------------------- /AppLauncher/Launchable.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | 3 | namespace AppLauncher 4 | { 5 | public class Launchable 6 | { 7 | public int PriorityBias { get; set; } 8 | public string Name { get; set; } 9 | public string FileName { get; set; } 10 | public string Arguments { get; set; } 11 | public string WorkingDirectory { get; set; } 12 | 13 | public bool MatchesFilter(string filter) => Name.ToLower().Contains(filter.ToLower()); 14 | 15 | public int Order(string filter) 16 | { 17 | var words = Name.Split(); 18 | var startBias = words.Count(w => w.ToLower().StartsWith(filter.ToLower())); 19 | return PriorityBias + startBias; 20 | } 21 | 22 | public void Launch() 23 | { 24 | System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo 25 | { 26 | FileName = FileName, 27 | Arguments = string.IsNullOrEmpty(Arguments) ? null : Arguments, 28 | WorkingDirectory = string.IsNullOrEmpty(WorkingDirectory) ? null : WorkingDirectory, 29 | }); 30 | } 31 | 32 | public override string ToString() => Name; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /AppLauncher/MainForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace AppLauncher 2 | { 3 | partial class MainForm 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 | this.listBoxLaunchables = new System.Windows.Forms.ListBox(); 32 | this.labelFilter = new System.Windows.Forms.Label(); 33 | this.SuspendLayout(); 34 | // 35 | // listBoxLaunchables 36 | // 37 | this.listBoxLaunchables.FormattingEnabled = true; 38 | this.listBoxLaunchables.Location = new System.Drawing.Point(12, 25); 39 | this.listBoxLaunchables.Name = "listBoxLaunchables"; 40 | this.listBoxLaunchables.Size = new System.Drawing.Size(319, 173); 41 | this.listBoxLaunchables.TabIndex = 0; 42 | // 43 | // labelFilter 44 | // 45 | this.labelFilter.AutoSize = true; 46 | this.labelFilter.Location = new System.Drawing.Point(12, 9); 47 | this.labelFilter.Name = "labelFilter"; 48 | this.labelFilter.Size = new System.Drawing.Size(45, 13); 49 | this.labelFilter.TabIndex = 1; 50 | this.labelFilter.Text = "Filter: \"\""; 51 | // 52 | // MainForm 53 | // 54 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 55 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 56 | this.ClientSize = new System.Drawing.Size(346, 216); 57 | this.Controls.Add(this.labelFilter); 58 | this.Controls.Add(this.listBoxLaunchables); 59 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 60 | this.MaximizeBox = false; 61 | this.MinimizeBox = false; 62 | this.Name = "MainForm"; 63 | this.Text = "AppLauncher"; 64 | this.TopMost = true; 65 | this.ResumeLayout(false); 66 | this.PerformLayout(); 67 | 68 | } 69 | 70 | #endregion 71 | 72 | private System.Windows.Forms.ListBox listBoxLaunchables; 73 | private System.Windows.Forms.Label labelFilter; 74 | } 75 | } 76 | 77 | -------------------------------------------------------------------------------- /AppLauncher/MainForm.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 | -------------------------------------------------------------------------------- /AppLauncher/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace AppLauncher 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new MainForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /AppLauncher/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("AppLauncher")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("AppLauncher")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0db1c5aa-e59e-41e4-a573-09ae9f47d894")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /AppLauncher/Properties/Resources.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 AppLauncher.Properties 12 | { 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", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AppLauncher.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /AppLauncher/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /AppLauncher/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 AppLauncher.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AppLauncher/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AppLauncher/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CmdTitle/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CmdTitle/CmdTitle.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {33D78399-FBE0-4D13-8D1D-B170C7E0DDBB} 8 | WinExe 9 | CmdTitle 10 | CmdTitle 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /CmdTitle/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Diagnostics; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | 10 | namespace CmdTitle 11 | { 12 | class Program 13 | { 14 | public static string Git(string command) 15 | { 16 | var p = Process.Start(new ProcessStartInfo 17 | { 18 | FileName = "git", 19 | Arguments = command, 20 | WorkingDirectory = Directory.GetCurrentDirectory(), 21 | UseShellExecute = false, 22 | CreateNoWindow = true, 23 | RedirectStandardOutput = true, 24 | }); 25 | p.WaitForExit(); 26 | return p.ExitCode == 0 ? p.StandardOutput.ReadToEnd().Trim() : ""; 27 | } 28 | 29 | static void Main(string[] args) 30 | { 31 | var gitRoot = Git("rev-parse --show-toplevel").Replace('/', '\\'); 32 | if (string.IsNullOrEmpty(gitRoot)) 33 | gitRoot = Directory.GetCurrentDirectory(); 34 | var title = Path.GetFileName(gitRoot); 35 | Process.Start("cmd.exe", $"/k \"title {title}\""); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /CmdTitle/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("CmdTitle")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("CmdTitle")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("33d78399-fbe0-4d13-8d1d-b170c7e0ddbb")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /DirBrowser/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace DirBrowser 2 | { 3 | partial class DirBrowser 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 | this.buttonCmd = new System.Windows.Forms.Button(); 32 | this.buttonLeft = new System.Windows.Forms.Button(); 33 | this.buttonRight = new System.Windows.Forms.Button(); 34 | this.SuspendLayout(); 35 | // 36 | // buttonCmd 37 | // 38 | this.buttonCmd.Location = new System.Drawing.Point(12, 12); 39 | this.buttonCmd.Name = "buttonCmd"; 40 | this.buttonCmd.Size = new System.Drawing.Size(134, 23); 41 | this.buttonCmd.TabIndex = 0; 42 | this.buttonCmd.Text = "&Command Prompt"; 43 | this.buttonCmd.UseVisualStyleBackColor = true; 44 | this.buttonCmd.Click += new System.EventHandler(this.buttonCmd_Click); 45 | // 46 | // buttonLeft 47 | // 48 | this.buttonLeft.Location = new System.Drawing.Point(12, 41); 49 | this.buttonLeft.Name = "buttonLeft"; 50 | this.buttonLeft.Size = new System.Drawing.Size(134, 23); 51 | this.buttonLeft.TabIndex = 1; 52 | this.buttonLeft.Text = "Total Commander (&Left)"; 53 | this.buttonLeft.UseVisualStyleBackColor = true; 54 | this.buttonLeft.Click += new System.EventHandler(this.buttonLeft_Click); 55 | // 56 | // buttonRight 57 | // 58 | this.buttonRight.Location = new System.Drawing.Point(12, 70); 59 | this.buttonRight.Name = "buttonRight"; 60 | this.buttonRight.Size = new System.Drawing.Size(134, 23); 61 | this.buttonRight.TabIndex = 2; 62 | this.buttonRight.Text = "Total Commander (&Right)"; 63 | this.buttonRight.UseVisualStyleBackColor = true; 64 | this.buttonRight.Click += new System.EventHandler(this.buttonRight_Click); 65 | // 66 | // DirBrowser 67 | // 68 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 69 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 70 | this.ClientSize = new System.Drawing.Size(156, 107); 71 | this.Controls.Add(this.buttonRight); 72 | this.Controls.Add(this.buttonLeft); 73 | this.Controls.Add(this.buttonCmd); 74 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 75 | this.MaximizeBox = false; 76 | this.MinimizeBox = false; 77 | this.Name = "DirBrowser"; 78 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 79 | this.Text = "DirBrowser"; 80 | this.ResumeLayout(false); 81 | 82 | } 83 | 84 | #endregion 85 | 86 | private System.Windows.Forms.Button buttonCmd; 87 | private System.Windows.Forms.Button buttonLeft; 88 | private System.Windows.Forms.Button buttonRight; 89 | } 90 | } 91 | 92 | -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Drawing; 5 | using System.IO; 6 | using System.Windows.Forms; 7 | 8 | namespace DirBrowser 9 | { 10 | public partial class DirBrowser : Form 11 | { 12 | Dictionary _hotkeys = new Dictionary(); 13 | 14 | public DirBrowser() 15 | { 16 | InitializeComponent(); 17 | KeyPreview = true; 18 | Icon = Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetExecutingAssembly().Location); 19 | 20 | foreach (var c in Controls) 21 | { 22 | if (c is Button b) 23 | { 24 | var ampIdx = b.Text.IndexOf('&'); 25 | if (ampIdx != -1) 26 | _hotkeys.Add(char.ToLower(b.Text[ampIdx + 1]), b); 27 | } 28 | } 29 | } 30 | 31 | private static char ToChar(Keys key) 32 | { 33 | char c = '\0'; 34 | if ((key >= Keys.A) && (key <= Keys.Z)) 35 | { 36 | c = (char)((int)'a' + (int)(key - Keys.A)); 37 | } 38 | 39 | else if ((key >= Keys.D0) && (key <= Keys.D9)) 40 | { 41 | c = (char)((int)'0' + (int)(key - Keys.D0)); 42 | } 43 | else if (key == Keys.Space) 44 | { 45 | c = ' '; 46 | } 47 | 48 | return char.ToLower(c); 49 | } 50 | 51 | protected override void OnKeyDown(KeyEventArgs e) 52 | { 53 | switch(e.KeyCode) 54 | { 55 | case Keys.Escape: 56 | Close(); 57 | break; 58 | default: 59 | var ch = char.ToLower(ToChar(e.KeyCode)); 60 | if (_hotkeys.ContainsKey(ch)) 61 | _hotkeys[ch].PerformClick(); 62 | else 63 | base.OnKeyDown(e); 64 | break; 65 | } 66 | } 67 | 68 | private void buttonCmd_Click(object sender, EventArgs e) 69 | { 70 | var dir = Directory.GetCurrentDirectory(); 71 | Process.Start(new ProcessStartInfo 72 | { 73 | FileName = "cmd.exe", 74 | Arguments = $"/K \"title {Path.GetFileNameWithoutExtension(dir)}\"", 75 | WorkingDirectory = dir, 76 | }); 77 | Close(); 78 | } 79 | 80 | private void buttonLeft_Click(object sender, EventArgs e) 81 | { 82 | Process.Start(new ProcessStartInfo 83 | { 84 | FileName = @"c:\totalcmd\TOTALCMD64.EXE", 85 | Arguments = $"/P=L \"/L={Directory.GetCurrentDirectory()}\"", 86 | }); 87 | Close(); 88 | } 89 | 90 | private void buttonRight_Click(object sender, EventArgs e) 91 | { 92 | Process.Start(new ProcessStartInfo 93 | { 94 | FileName = @"c:\totalcmd\TOTALCMD64.EXE", 95 | Arguments = $"/P=R \"/R={Directory.GetCurrentDirectory()}\"", 96 | }); 97 | Close(); 98 | } 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AA8B9201-F1F6-4009-99EF-4E00E751C124} 8 | WinExe 9 | DirBrowser 10 | DirBrowser 11 | v4.6.1 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | DirBrowser.ico 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | Form 56 | 57 | 58 | DirBrowser.cs 59 | 60 | 61 | 62 | 63 | DirBrowser.cs 64 | 65 | 66 | ResXFileCodeGenerator 67 | Resources.Designer.cs 68 | Designer 69 | 70 | 71 | True 72 | Resources.resx 73 | 74 | 75 | SettingsSingleFileGenerator 76 | Settings.Designer.cs 77 | 78 | 79 | True 80 | Settings.settings 81 | True 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/DirBrowser/DirBrowser.ico -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.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 | -------------------------------------------------------------------------------- /DirBrowser/DirBrowser.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /DirBrowser/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Duncan Ogilvie 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /DirBrowser/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace DirBrowser 5 | { 6 | static class Program 7 | { 8 | /// 9 | /// The main entry point for the application. 10 | /// 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new DirBrowser()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /DirBrowser/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("DirBrowser")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("DirBrowser")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("aa8b9201-f1f6-4009-99ef-4e00e751c124")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /DirBrowser/Properties/Resources.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 DirBrowser.Properties 12 | { 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", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DirBrowser.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /DirBrowser/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /DirBrowser/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 DirBrowser.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /DirBrowser/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Ghidra/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Ghidra/Ghidra.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {007AAFF6-D3CB-41E1-867E-4F0A5A8C821F} 8 | WinExe 9 | Ghidra 10 | Ghidra 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | ghidra.ico 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Ghidra/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using System.Diagnostics; 9 | 10 | namespace Ghidra 11 | { 12 | class Program 13 | { 14 | static void Main(string[] args) 15 | { 16 | if (!File.Exists("ghidraRun.bat")) 17 | { 18 | MessageBox.Show("Put this executable next to ghidraRun.bat", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 19 | return; 20 | } 21 | Process.Start(new ProcessStartInfo 22 | { 23 | FileName = "cmd.exe", 24 | Arguments = "/c title Ghidra & ghidraRun.bat", 25 | //CreateNoWindow = true, 26 | UseShellExecute = false, 27 | //WindowStyle = ProcessWindowStyle.Minimized, 28 | }); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Ghidra/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Ghidra")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Ghidra")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("007aaff6-d3cb-41e1-867e-4f0a5a8c821f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Ghidra/ghidra.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/Ghidra/ghidra.ico -------------------------------------------------------------------------------- /GitExtBar/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /GitExtBar/GitExtBar.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace GitExtBar 2 | { 3 | partial class GitExtBar 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 | this.listViewActions = new System.Windows.Forms.ListView(); 32 | this.panel1 = new System.Windows.Forms.Panel(); 33 | this.labelAction = new System.Windows.Forms.Label(); 34 | this.panel1.SuspendLayout(); 35 | this.SuspendLayout(); 36 | // 37 | // listViewActions 38 | // 39 | this.listViewActions.BorderStyle = System.Windows.Forms.BorderStyle.None; 40 | this.listViewActions.Location = new System.Drawing.Point(-1, 9); 41 | this.listViewActions.Name = "listViewActions"; 42 | this.listViewActions.Size = new System.Drawing.Size(415, 42); 43 | this.listViewActions.TabIndex = 1; 44 | this.listViewActions.UseCompatibleStateImageBehavior = false; 45 | // 46 | // panel1 47 | // 48 | this.panel1.BackColor = System.Drawing.Color.White; 49 | this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 50 | this.panel1.Controls.Add(this.listViewActions); 51 | this.panel1.Location = new System.Drawing.Point(12, 29); 52 | this.panel1.Name = "panel1"; 53 | this.panel1.Size = new System.Drawing.Size(415, 61); 54 | this.panel1.TabIndex = 2; 55 | // 56 | // labelAction 57 | // 58 | this.labelAction.AutoSize = true; 59 | this.labelAction.Location = new System.Drawing.Point(12, 9); 60 | this.labelAction.Name = "labelAction"; 61 | this.labelAction.Size = new System.Drawing.Size(93, 13); 62 | this.labelAction.TabIndex = 0; 63 | this.labelAction.Text = "Choose an action:"; 64 | // 65 | // GitExtBar 66 | // 67 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 68 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 69 | this.ClientSize = new System.Drawing.Size(439, 108); 70 | this.Controls.Add(this.panel1); 71 | this.Controls.Add(this.labelAction); 72 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 73 | this.MaximizeBox = false; 74 | this.MinimizeBox = false; 75 | this.Name = "GitExtBar"; 76 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 77 | this.Text = "Git Extensions"; 78 | this.panel1.ResumeLayout(false); 79 | this.ResumeLayout(false); 80 | this.PerformLayout(); 81 | 82 | } 83 | 84 | #endregion 85 | private System.Windows.Forms.ListView listViewActions; 86 | private System.Windows.Forms.Panel panel1; 87 | private System.Windows.Forms.Label labelAction; 88 | } 89 | } 90 | 91 | -------------------------------------------------------------------------------- /GitExtBar/GitExtBar.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {63A0047E-64E8-4620-BB50-AE1CA17B3975} 8 | WinExe 9 | GitExtBar 10 | GitExtBar 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | false 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | false 35 | 36 | 37 | GitExtBar.ico 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | Form 56 | 57 | 58 | GitExtBar.cs 59 | 60 | 61 | 62 | 63 | 64 | GitExtBar.cs 65 | 66 | 67 | ResXFileCodeGenerator 68 | Resources.Designer.cs 69 | Designer 70 | 71 | 72 | True 73 | Resources.resx 74 | True 75 | 76 | 77 | SettingsSingleFileGenerator 78 | Settings.Designer.cs 79 | 80 | 81 | True 82 | Settings.settings 83 | True 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 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /GitExtBar/GitExtBar.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/GitExtBar.ico -------------------------------------------------------------------------------- /GitExtBar/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace GitExtBar 5 | { 6 | static class Program 7 | { 8 | /// 9 | /// The main entry point for the application. 10 | /// 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new GitExtBar()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /GitExtBar/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("GitExtBar")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("GitExtBar")] 13 | [assembly: AssemblyCopyright("Copyright © x64dbg 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("63a0047e-64e8-4620-bb50-ae1ca17b3975")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /GitExtBar/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 GitExtBar.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /GitExtBar/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /GitExtBar/Resources/IconAbout.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconAbout.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconAdded.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconAdded.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconBranchCheckout.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconBranchCheckout.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconBranchCheckout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconBranchCheckout.png -------------------------------------------------------------------------------- /GitExtBar/Resources/IconBranchCreate.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconBranchCreate.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconBranchCreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconBranchCreate.png -------------------------------------------------------------------------------- /GitExtBar/Resources/IconBrowseFileExplorer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconBrowseFileExplorer.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconCloneRepoGit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconCloneRepoGit.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconCommit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconCommit.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconDiff.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconDiff.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconFileHistory.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconFileHistory.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconPatchApply.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconPatchApply.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconPull.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconPull.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconPullFetch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconPullFetch.png -------------------------------------------------------------------------------- /GitExtBar/Resources/IconPush.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconPush.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconRepoCreate.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconRepoCreate.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconResetFileTo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconResetFileTo.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconResetWorkingDirChanges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconResetWorkingDirChanges.png -------------------------------------------------------------------------------- /GitExtBar/Resources/IconRevisionCheckout.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconRevisionCheckout.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconRevisionCheckout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconRevisionCheckout.png -------------------------------------------------------------------------------- /GitExtBar/Resources/IconSettings.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconSettings.ico -------------------------------------------------------------------------------- /GitExtBar/Resources/IconStash.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/GitExtBar/Resources/IconStash.ico -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Projects have different licenses in this repository, look in each subdirectory for details. -------------------------------------------------------------------------------- /NewFile/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /NewFile/NewFile.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {D442021E-3289-4A76-BBDD-55BB8ECA7C08} 8 | WinExe 9 | NewFile 10 | NewFile 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /NewFile/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using Microsoft.VisualBasic; 8 | using System.IO; 9 | 10 | namespace NewFile 11 | { 12 | class Program 13 | { 14 | static void Main(string[] args) 15 | { 16 | var fileName = Interaction.InputBox("Enter file name to create:", "Total Commander"); 17 | if (string.IsNullOrEmpty(fileName)) 18 | { 19 | return; 20 | } 21 | 22 | var fullPath = Path.Combine(Directory.GetCurrentDirectory(), fileName.Replace('/', Path.DirectorySeparatorChar)); 23 | 24 | if (File.Exists(fullPath)) 25 | { 26 | Interaction.MsgBox("File already exists!"); 27 | return; 28 | } 29 | 30 | var baseDirectory = Path.GetDirectoryName(fullPath); 31 | Directory.CreateDirectory(baseDirectory); 32 | using (var file = File.Create(fullPath)) 33 | { 34 | 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /NewFile/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("NewFile")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NewFile")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("d442021e-3289-4a76-bbdd-55bb8eca7c08")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Notes/.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | bin/ 3 | obj/ 4 | *.user 5 | packages/ 6 | -------------------------------------------------------------------------------- /Notes/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Duncan Ogilvie 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Notes/Notes.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30611.23 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Notes", "Notes\Notes.csproj", "{2802E943-0E90-4267-B6FF-E65D6E4E267F}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TreeList", "TreeList\TreeList.csproj", "{CDF6194D-77E1-4E17-8D2A-94908663D09D}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {2802E943-0E90-4267-B6FF-E65D6E4E267F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {2802E943-0E90-4267-B6FF-E65D6E4E267F}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {2802E943-0E90-4267-B6FF-E65D6E4E267F}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {2802E943-0E90-4267-B6FF-E65D6E4E267F}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {CDF6194D-77E1-4E17-8D2A-94908663D09D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {CDF6194D-77E1-4E17-8D2A-94908663D09D}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {CDF6194D-77E1-4E17-8D2A-94908663D09D}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {CDF6194D-77E1-4E17-8D2A-94908663D09D}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {FA72DAE7-6D2B-4205-8D83-0378DAF76382} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Notes/Notes/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | NOTSET 15 | 16 | 17 | NOTSET 18 | 19 | 20 | Personal 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Notes/Notes/Notes.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Notes 2 | { 3 | partial class Notes 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 | this.buttonSubmit = new System.Windows.Forms.Button(); 32 | this.radioButtonWork = new System.Windows.Forms.RadioButton(); 33 | this.radioButtonPersonal = new System.Windows.Forms.RadioButton(); 34 | this.treeList = new TreeList.TreeList(); 35 | this.SuspendLayout(); 36 | // 37 | // buttonSubmit 38 | // 39 | this.buttonSubmit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 40 | this.buttonSubmit.Location = new System.Drawing.Point(422, 290); 41 | this.buttonSubmit.Name = "buttonSubmit"; 42 | this.buttonSubmit.Size = new System.Drawing.Size(75, 23); 43 | this.buttonSubmit.TabIndex = 1; 44 | this.buttonSubmit.Text = "&Submit"; 45 | this.buttonSubmit.UseVisualStyleBackColor = true; 46 | this.buttonSubmit.Click += new System.EventHandler(this.buttonSubmit_Click); 47 | // 48 | // radioButtonWork 49 | // 50 | this.radioButtonWork.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 51 | this.radioButtonWork.AutoSize = true; 52 | this.radioButtonWork.Location = new System.Drawing.Point(365, 293); 53 | this.radioButtonWork.Name = "radioButtonWork"; 54 | this.radioButtonWork.Size = new System.Drawing.Size(51, 17); 55 | this.radioButtonWork.TabIndex = 2; 56 | this.radioButtonWork.Text = "&Work"; 57 | this.radioButtonWork.UseVisualStyleBackColor = true; 58 | // 59 | // radioButtonPersonal 60 | // 61 | this.radioButtonPersonal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); 62 | this.radioButtonPersonal.AutoSize = true; 63 | this.radioButtonPersonal.Checked = true; 64 | this.radioButtonPersonal.Location = new System.Drawing.Point(293, 293); 65 | this.radioButtonPersonal.Name = "radioButtonPersonal"; 66 | this.radioButtonPersonal.Size = new System.Drawing.Size(66, 17); 67 | this.radioButtonPersonal.TabIndex = 3; 68 | this.radioButtonPersonal.TabStop = true; 69 | this.radioButtonPersonal.Text = "&Personal"; 70 | this.radioButtonPersonal.UseVisualStyleBackColor = true; 71 | // 72 | // treeList 73 | // 74 | this.treeList.AcceptsTab = true; 75 | this.treeList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 76 | | System.Windows.Forms.AnchorStyles.Left) 77 | | System.Windows.Forms.AnchorStyles.Right))); 78 | this.treeList.BackColor = System.Drawing.Color.White; 79 | this.treeList.BorderStyle = System.Windows.Forms.BorderStyle.None; 80 | this.treeList.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 81 | this.treeList.Location = new System.Drawing.Point(12, 12); 82 | this.treeList.Name = "treeList"; 83 | this.treeList.Size = new System.Drawing.Size(485, 272); 84 | this.treeList.TabIndex = 0; 85 | // 86 | // Notes 87 | // 88 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 89 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 90 | this.BackColor = System.Drawing.Color.White; 91 | this.ClientSize = new System.Drawing.Size(509, 325); 92 | this.Controls.Add(this.radioButtonPersonal); 93 | this.Controls.Add(this.radioButtonWork); 94 | this.Controls.Add(this.treeList); 95 | this.Controls.Add(this.buttonSubmit); 96 | this.Name = "Notes"; 97 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 98 | this.Text = "Notes"; 99 | this.ResumeLayout(false); 100 | this.PerformLayout(); 101 | 102 | } 103 | 104 | #endregion 105 | private System.Windows.Forms.Button buttonSubmit; 106 | private TreeList.TreeList treeList; 107 | private System.Windows.Forms.RadioButton radioButtonWork; 108 | private System.Windows.Forms.RadioButton radioButtonPersonal; 109 | } 110 | } 111 | 112 | -------------------------------------------------------------------------------- /Notes/Notes/Notes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {2802E943-0E90-4267-B6FF-E65D6E4E267F} 8 | WinExe 9 | Notes 10 | Notes 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | notes.ico 37 | 38 | 39 | 40 | ..\..\packages\Airtable.1.1.4\lib\netstandard2.0\AirtableApiClient.dll 41 | 42 | 43 | ..\..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | Form 62 | 63 | 64 | Notes.cs 65 | 66 | 67 | 68 | 69 | Notes.cs 70 | 71 | 72 | ResXFileCodeGenerator 73 | Resources.Designer.cs 74 | Designer 75 | 76 | 77 | True 78 | Resources.resx 79 | 80 | 81 | 82 | SettingsSingleFileGenerator 83 | Settings.Designer.cs 84 | 85 | 86 | True 87 | Settings.settings 88 | True 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | {CDF6194D-77E1-4E17-8D2A-94908663D09D} 97 | TreeList 98 | 99 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /Notes/Notes/Notes.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 | -------------------------------------------------------------------------------- /Notes/Notes/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using Notes.Properties; 8 | using System.Threading; 9 | using System.Reflection; 10 | using System.IO; 11 | using System.Runtime.InteropServices; 12 | 13 | namespace Notes 14 | { 15 | static class Program 16 | { 17 | [DllImport("user32.dll")] 18 | [return: MarshalAs(UnmanagedType.Bool)] 19 | private static extern bool ShowWindow(IntPtr hWnd, ShowWindowEnum flags); 20 | 21 | [DllImport("user32.dll")] 22 | private static extern int SetForegroundWindow(IntPtr hwnd); 23 | 24 | [DllImport("user32.dll")] 25 | [return: MarshalAs(UnmanagedType.Bool)] 26 | private static extern bool FlashWindow(IntPtr hWnd, bool bInvert); 27 | 28 | private enum ShowWindowEnum 29 | { 30 | Hide = 0, 31 | ShowNormal = 1, ShowMinimized = 2, ShowMaximized = 3, 32 | Maximize = 3, ShowNormalNoActivate = 4, Show = 5, 33 | Minimize = 6, ShowMinNoActivate = 7, ShowNoActivate = 8, 34 | Restore = 9, ShowDefault = 10, ForceMinimized = 11 35 | }; 36 | 37 | /// 38 | /// The main entry point for the application. 39 | /// 40 | [STAThread] 41 | static void Main() 42 | { 43 | Application.EnableVisualStyles(); 44 | Application.SetCompatibleTextRenderingDefault(false); 45 | 46 | // Check if there is already another instance open 47 | // https://stackoverflow.com/a/59079638/1806760 48 | var mutex = new Mutex(true, $"Global\\{typeof(Notes).GUID}", out bool mutexCreated); 49 | if (!mutexCreated) 50 | { 51 | // Attempt to bring the other instance to the front 52 | var processName = Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location); 53 | var process = Process.GetProcessesByName(processName).Where(p => p.Id != Process.GetCurrentProcess().Id).FirstOrDefault(); 54 | 55 | if (process != null) 56 | { 57 | var hWnd = process.MainWindowHandle; 58 | if (hWnd != IntPtr.Zero) 59 | { 60 | ShowWindow(hWnd, ShowWindowEnum.Restore); 61 | SetForegroundWindow(hWnd); 62 | FlashWindow(hWnd, true); 63 | return; 64 | } 65 | } 66 | 67 | MessageBox.Show("Another instance is already running!"); 68 | return; 69 | } 70 | 71 | // Verify settings 72 | var defaultTable = Settings.Default.DefaultTable; 73 | switch (defaultTable) 74 | { 75 | case "Personal": 76 | case "Work": 77 | break; 78 | default: 79 | MessageBox.Show($"Invalid DefaultTable \"{defaultTable}\". Fix your configuration!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 80 | Environment.Exit(1); 81 | break; 82 | } 83 | if (Settings.Default.APIKey == "NOTSET" || Settings.Default.BaseID == "NOTSET") 84 | { 85 | MessageBox.Show("APIKey and/or BaseID not set up correctly. Fix your configuration!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 86 | Process.Start("https://airtable.com/api"); 87 | Environment.Exit(1); 88 | } 89 | 90 | Application.Run(new Notes()); 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Notes/Notes/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Notes")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Notes")] 13 | [assembly: AssemblyCopyright("Copyright © Duncan Ogilvie 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("2802e943-0e90-4267-b6ff-e65d6e4e267f")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Notes/Notes/Properties/Resources.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 Notes.Properties 12 | { 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", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Notes.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Notes/Notes/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Notes/Notes/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 Notes.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.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 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("NOTSET")] 29 | public string BaseID { 30 | get { 31 | return ((string)(this["BaseID"])); 32 | } 33 | } 34 | 35 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 36 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 37 | [global::System.Configuration.DefaultSettingValueAttribute("NOTSET")] 38 | public string APIKey { 39 | get { 40 | return ((string)(this["APIKey"])); 41 | } 42 | } 43 | 44 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 45 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 46 | [global::System.Configuration.DefaultSettingValueAttribute("Personal")] 47 | public string DefaultTable { 48 | get { 49 | return ((string)(this["DefaultTable"])); 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Notes/Notes/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | NOTSET 7 | 8 | 9 | NOTSET 10 | 11 | 12 | Personal 13 | 14 | 15 | -------------------------------------------------------------------------------- /Notes/Notes/TreeList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using System.Windows.Forms.Design; 9 | 10 | namespace Notes 11 | { 12 | [Designer(typeof(ParentControlDesigner))] 13 | public class TreeList : RichTextBox 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Notes/Notes/notes-pngrepo-com.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/Notes/Notes/notes-pngrepo-com.png -------------------------------------------------------------------------------- /Notes/Notes/notes-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Notes/Notes/notes.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/Notes/Notes/notes.ico -------------------------------------------------------------------------------- /Notes/Notes/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Notes/TreeList/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("TreeList")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("TreeList")] 13 | [assembly: AssemblyCopyright("Copyright © Duncan Ogilvie 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("cdf6194d-77e1-4e17-8d2a-94908663d09d")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Notes/TreeList/TreeList.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.CodeDom.Compiler; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.Windows.Forms.Design; 11 | 12 | namespace TreeList 13 | { 14 | [Designer(typeof(ParentControlDesigner))] 15 | public class TreeList : RichTextBox 16 | { 17 | private readonly int Indent = 30; 18 | 19 | public TreeList() 20 | { 21 | SelectionBullet = true; 22 | AcceptsTab = true; 23 | } 24 | 25 | public void DumpHistory() 26 | { 27 | var historyDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "history"); 28 | Directory.CreateDirectory(historyDir); 29 | var historyFile = Path.Combine(historyDir, $"{DateTime.Now:yyyy-MM-dd_HH-mm-ss_fff}.rtf"); 30 | File.WriteAllText(historyFile, Rtf); 31 | } 32 | 33 | public int GetLineIndent(int line) 34 | { 35 | return GetPositionFromCharIndex(GetFirstCharIndexFromLine(line)).X / Indent; 36 | } 37 | 38 | protected override void OnKeyDown(KeyEventArgs e) 39 | { 40 | if (SelectionLength > 0) 41 | { 42 | // Do not attempt to customize the behavior when there is a selection 43 | base.OnKeyDown(e); 44 | } 45 | else if (e.KeyCode == Keys.Tab) 46 | { 47 | e.Handled = true; 48 | var lineIdx = GetLineFromCharIndex(SelectionStart); 49 | if (e.Shift) 50 | { 51 | if (SelectionIndent != 0) 52 | { 53 | // Only allow un-indenting if there is indentation 54 | SelectionIndent -= Indent; 55 | } 56 | else 57 | { 58 | // Ignore un-indent 59 | } 60 | } 61 | else if (lineIdx > 0 && GetLineIndent(lineIdx - 1) >= GetLineIndent(lineIdx)) 62 | { 63 | // First line cannot be indented 64 | // Only allow indenting if the previous line has a bigger or equal level 65 | SelectionIndent += Indent; 66 | } 67 | } 68 | else if (e.KeyCode == Keys.Back) 69 | { 70 | if (SelectionStart == 0) 71 | { 72 | // Do not delete the list itself 73 | e.Handled = true; 74 | } 75 | else if (SelectionStart - GetFirstCharIndexOfCurrentLine() == 0) 76 | { 77 | // When pressing backspace on an empty bullet: delete the bullet and move to the end of the previous line 78 | SelectionBullet = false; 79 | SelectionStart--; 80 | SelectionBullet = true; 81 | e.Handled = true; 82 | } 83 | else 84 | { 85 | base.OnKeyDown(e); 86 | } 87 | } 88 | else if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return) 89 | { 90 | // TODO: detect enter on the first line and act accordingly (create new bullet) 91 | if (/* false && */ SelectionStart - GetFirstCharIndexOfCurrentLine() == 0) 92 | { 93 | // When pressing enter on an empty bullet: do nothing (TODO: allow empty bullets), or reduce nesting if nested 94 | if (SelectionIndent > 0) 95 | SelectionIndent -= Indent; 96 | e.Handled = true; 97 | } 98 | else 99 | { 100 | base.OnKeyDown(e); 101 | } 102 | } 103 | else 104 | { 105 | base.OnKeyDown(e); 106 | } 107 | } 108 | 109 | protected override void OnKeyPress(KeyPressEventArgs e) 110 | { 111 | if (e.KeyChar == '\t') 112 | { 113 | e.Handled = true; 114 | } 115 | else 116 | { 117 | base.OnKeyPress(e); 118 | 119 | // If the user manages to escape the bulleted list, start a new one 120 | SelectionBullet = true; 121 | } 122 | } 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /Notes/TreeList/TreeList.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {CDF6194D-77E1-4E17-8D2A-94908663D09D} 8 | Library 9 | TreeList 10 | TreeList 11 | v4.7.2 12 | 512 13 | true 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | Component 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FunUtils 2 | 3 | Just some fun utilities I wrote for productivity reasons. 4 | 5 | ## GitExtBar 6 | 7 | ![GitExtBar](https://i.imgur.com/pmFrNBu.png) 8 | 9 | Icon source: https://github.com/gitextensions/gitextensions 10 | 11 | ## DirBrowser 12 | 13 | ![DirBrowser](https://i.imgur.com/iN1KrQM.png) 14 | 15 | Icon source: https://visualpharm.com/free-icons/open-595b40b85ba036ed117da75e 16 | 17 | ## Ghidra 18 | 19 | Copy `Ghidra.exe` next to `ghidraRun.bat` and add a shortcut to your desktop/start menu. 20 | 21 | ## sudo 22 | 23 | Simple `sudo` utility for Windows: 24 | 25 | ![sudo](https://user-images.githubusercontent.com/2458265/82740424-daa9f900-9d48-11ea-8bd1-60b001da7986.png) 26 | 27 | Icon source: `user32.dll` 28 | 29 | ## Notes 30 | 31 | Very simple application that allows you to submit notes to [Airtable](https://airtable.com). 32 | 33 | ![Notes](https://i.imgur.com/UzqkT7k.png) 34 | 35 | Icon source: https://www.svgrepo.com/svg/142693/notes 36 | 37 | ## SysShellHandler 38 | 39 | Simple utility to provide some meaningful options when opening a `.sys` file in explorer. 40 | 41 | ![SysShellHandler](https://i.imgur.com/nAUKPOA.png) 42 | -------------------------------------------------------------------------------- /RipGrepGUI/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | False 15 | 16 | 17 | True 18 | 19 | 20 | True 21 | 22 | 23 | True 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /RipGrepGUI/Helpers.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Diagnostics; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Forms; 9 | using System.Configuration; 10 | using RipGrepGUI.Properties; 11 | using System.Reflection; 12 | 13 | namespace RipGrepGUI 14 | { 15 | static class Helpers 16 | { 17 | /// 18 | /// Waits asynchronously for the process to exit. 19 | /// 20 | /// The process to wait for cancellation. 21 | /// A cancellation token. If invoked, the task will return 22 | /// immediately as cancelled. 23 | /// A Task representing waiting for the process to end. 24 | public static Task WaitForExitAsync( 25 | this Process process, 26 | CancellationToken cancellationToken = default(CancellationToken)) 27 | { 28 | process.EnableRaisingEvents = true; 29 | 30 | var taskCompletionSource = new TaskCompletionSource(); 31 | 32 | EventHandler handler = null; 33 | handler = (sender, args) => 34 | { 35 | process.Exited -= handler; 36 | taskCompletionSource.TrySetResult(null); 37 | }; 38 | process.Exited += handler; 39 | 40 | if (cancellationToken != default(CancellationToken)) 41 | { 42 | cancellationToken.Register( 43 | () => 44 | { 45 | process.Exited -= handler; 46 | taskCompletionSource.TrySetCanceled(); 47 | }); 48 | } 49 | 50 | return taskCompletionSource.Task; 51 | } 52 | 53 | public static string GetFieldName(object obj, object value) 54 | { 55 | foreach (FieldInfo field in typeof(T).GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) 56 | if (field.GetValue(obj) == value) 57 | return field.Name; 58 | return null; 59 | } 60 | 61 | private static void Fail(string message) 62 | { 63 | MessageBox.Show(message, "Fatal error", MessageBoxButtons.OK, MessageBoxIcon.Error); 64 | Environment.Exit(1); 65 | } 66 | 67 | private static void Assert(bool condition, string message) 68 | { 69 | if (!condition) 70 | { 71 | MessageBox.Show(message); 72 | Environment.Exit(1); 73 | } 74 | } 75 | 76 | private static SettingsProperty FindSetting(string keyword) 77 | { 78 | Console.WriteLine(keyword); 79 | SettingsProperty foundProperty = null; 80 | foreach (SettingsProperty property in Settings.Default.Properties) 81 | { 82 | if (property.Name.Contains(keyword) || keyword.Contains(property.Name)) 83 | { 84 | if (foundProperty == null) 85 | foundProperty = property; 86 | else 87 | Fail($"Duplicate setting for '{keyword}'"); 88 | } 89 | } 90 | Assert(foundProperty != null, $"No setting found for '{keyword}'"); 91 | return foundProperty; 92 | } 93 | 94 | private static void ParameterImpl(CheckBox checkBox, string parameter, bool inverted, bool saved) 95 | { 96 | var fieldName = GetFieldName(checkBox.Parent, checkBox); 97 | var prefix = "checkBox"; 98 | Assert(fieldName.StartsWith(prefix), $"Parameter field name '{fieldName}' is not prefixed with '{prefix}'"); 99 | var settingName = fieldName.Substring(prefix.Length); 100 | var setting = FindSetting(settingName); 101 | 102 | Assert(RipGrepGUI.Parameters.Count(tpl => tpl.Item1 == parameter) == 0, $"Already specified parameter \"{parameter}\""); 103 | RipGrepGUI.Parameters.Add((parameter, true)); 104 | 105 | checkBox.CheckedChanged += (s, e) => 106 | { 107 | var enabled = inverted ? !checkBox.Checked : checkBox.Checked; 108 | MessageBox.Show($"{(enabled ? "enabled" : "disabled")} {settingName}"); 109 | }; 110 | Console.WriteLine(setting); 111 | } 112 | 113 | public static void Parameter(this CheckBox checkBox, string parameter, bool saved = true) 114 | { 115 | ParameterImpl(checkBox, parameter, false, saved); 116 | } 117 | 118 | public static void ParameterInverted(this CheckBox checkBox, string parameter, bool saved = true) 119 | { 120 | ParameterImpl(checkBox, parameter, true, saved); 121 | 122 | } 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /RipGrepGUI/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace RipGrepGUI 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new RipGrepGUI()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /RipGrepGUI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("RipGrepGUI")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("RipGrepGUI")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("a2a25a4f-3c53-4690-b81b-b6f6e4cffe97")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /RipGrepGUI/Properties/Resources.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 | 12 | namespace RipGrepGUI.Properties 13 | { 14 | /// 15 | /// A strongly-typed resource class, for looking up localized strings, etc. 16 | /// 17 | // This class was auto-generated by the StronglyTypedResourceBuilder 18 | // class via a tool like ResGen or Visual Studio. 19 | // To add or remove a member, edit your .ResX file then rerun ResGen 20 | // with the /str option, or rebuild your VS project. 21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources 25 | { 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 Resources() 33 | { 34 | } 35 | 36 | /// 37 | /// Returns the cached ResourceManager instance used by this class. 38 | /// 39 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 40 | internal static global::System.Resources.ResourceManager ResourceManager 41 | { 42 | get 43 | { 44 | if ((resourceMan == null)) 45 | { 46 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RipGrepGUI.Properties.Resources", typeof(Resources).Assembly); 47 | resourceMan = temp; 48 | } 49 | return resourceMan; 50 | } 51 | } 52 | 53 | /// 54 | /// Overrides the current thread's CurrentUICulture property for all 55 | /// resource lookups using this strongly typed resource class. 56 | /// 57 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 58 | internal static global::System.Globalization.CultureInfo Culture 59 | { 60 | get 61 | { 62 | return resourceCulture; 63 | } 64 | set 65 | { 66 | resourceCulture = value; 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /RipGrepGUI/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /RipGrepGUI/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 RipGrepGUI.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.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 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("False")] 29 | public bool CaseSensitive { 30 | get { 31 | return ((bool)(this["CaseSensitive"])); 32 | } 33 | set { 34 | this["CaseSensitive"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 41 | public bool LineContext { 42 | get { 43 | return ((bool)(this["LineContext"])); 44 | } 45 | set { 46 | this["LineContext"] = value; 47 | } 48 | } 49 | 50 | [global::System.Configuration.UserScopedSettingAttribute()] 51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 52 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 53 | public bool Binary { 54 | get { 55 | return ((bool)(this["Binary"])); 56 | } 57 | set { 58 | this["Binary"] = value; 59 | } 60 | } 61 | 62 | [global::System.Configuration.UserScopedSettingAttribute()] 63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 64 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 65 | public bool RegularExpression { 66 | get { 67 | return ((bool)(this["RegularExpression"])); 68 | } 69 | set { 70 | this["RegularExpression"] = value; 71 | } 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /RipGrepGUI/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | False 7 | 8 | 9 | True 10 | 11 | 12 | True 13 | 14 | 15 | True 16 | 17 | 18 | -------------------------------------------------------------------------------- /RipGrepGUI/RipGrepGUI.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A2A25A4F-3C53-4690-B81B-B6F6E4CFFE97} 8 | WinExe 9 | RipGrepGUI 10 | RipGrepGUI 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | search-svgrepo-com.ico 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Form 57 | 58 | 59 | RipGrepGUI.cs 60 | 61 | 62 | 63 | 64 | RipGrepGUI.cs 65 | 66 | 67 | ResXFileCodeGenerator 68 | Resources.Designer.cs 69 | Designer 70 | 71 | 72 | True 73 | Resources.resx 74 | 75 | 76 | SettingsSingleFileGenerator 77 | Settings.Designer.cs 78 | 79 | 80 | True 81 | Settings.settings 82 | True 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /RipGrepGUI/search-svgrepo-com.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/RipGrepGUI/search-svgrepo-com.ico -------------------------------------------------------------------------------- /RipGrepGUI/search-svgrepo-com.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/RipGrepGUI/search-svgrepo-com.png -------------------------------------------------------------------------------- /RipGrepGUI/search-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | 11 | 12 | 15 | 18 | 19 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /SysShellHandler/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | c:\CodeBlocks\driver_unpacking\x64\Release\MakeUsermode.exe 15 | 16 | 17 | c:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe 18 | 19 | 20 | c:\Program Files\NTCore\Explorer Suite\CFF Explorer.exe 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /SysShellHandler/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace SysShellHandler 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main(string[] args) 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new SysShellHandler(args)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /SysShellHandler/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SysShellHandler")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SysShellHandler")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("127b1dbb-e350-426e-982e-3c5a6f850f6b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SysShellHandler/Properties/Resources.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 SysShellHandler.Properties 12 | { 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", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SysShellHandler.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /SysShellHandler/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SysShellHandler/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 SysShellHandler.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.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 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("c:\\CodeBlocks\\driver_unpacking\\x64\\Release\\MakeUsermode.exe")] 29 | public string MakeUsermode { 30 | get { 31 | return ((string)(this["MakeUsermode"])); 32 | } 33 | } 34 | 35 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 36 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 37 | [global::System.Configuration.DefaultSettingValueAttribute("c:\\Program Files (x86)\\Windows Kits\\10\\bin\\x64\\signtool.exe")] 38 | public string Signtool { 39 | get { 40 | return ((string)(this["Signtool"])); 41 | } 42 | } 43 | 44 | [global::System.Configuration.ApplicationScopedSettingAttribute()] 45 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 46 | [global::System.Configuration.DefaultSettingValueAttribute("c:\\Program Files\\NTCore\\Explorer Suite\\CFF Explorer.exe")] 47 | public string CffExplorer { 48 | get { 49 | return ((string)(this["CffExplorer"])); 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /SysShellHandler/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | c:\CodeBlocks\driver_unpacking\x64\Release\MakeUsermode.exe 7 | 8 | 9 | c:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe 10 | 11 | 12 | c:\Program Files\NTCore\Explorer Suite\CFF Explorer.exe 13 | 14 | 15 | -------------------------------------------------------------------------------- /SysShellHandler/SysShellHandler.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {127B1DBB-E350-426E-982E-3C5A6F850F6B} 8 | WinExe 9 | SysShellHandler 10 | SysShellHandler 11 | v4.6.1 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | SysShellHandler.ico 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | Form 56 | 57 | 58 | SysShellHandler.cs 59 | 60 | 61 | 62 | 63 | SysShellHandler.cs 64 | 65 | 66 | ResXFileCodeGenerator 67 | Resources.Designer.cs 68 | Designer 69 | 70 | 71 | True 72 | Resources.resx 73 | 74 | 75 | SettingsSingleFileGenerator 76 | Settings.Designer.cs 77 | 78 | 79 | True 80 | Settings.settings 81 | True 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /SysShellHandler/SysShellHandler.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/SysShellHandler/SysShellHandler.ico -------------------------------------------------------------------------------- /separate-console/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /separate-console/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Diagnostics; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace separate_console 10 | { 11 | class Program 12 | { 13 | static int Main(string[] args) 14 | { 15 | if(args.Length < 1) 16 | { 17 | Console.Error.WriteLine("Usage: separate-console my.exe [argument]"); 18 | return 1; 19 | } 20 | var p = Process.Start(new ProcessStartInfo 21 | { 22 | FileName = args[0], 23 | Arguments = args.Length > 1 ? $"\"{args[1]}\"" : "", 24 | UseShellExecute = true, 25 | CreateNoWindow = false, 26 | }); 27 | p.WaitForExit(); 28 | return p.ExitCode; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /separate-console/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("separate-console")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("separate-console")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("4a112556-38f8-473b-9ba1-a8fa58338fd9")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /separate-console/separate-console.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {4A112556-38F8-473B-9BA1-A8FA58338FD9} 8 | Exe 9 | separate_console 10 | separate-console 11 | v4.6.1 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /sudo/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by resource.rc 4 | // 5 | #define IDI_ICON1 107 6 | #define IDC_BUTTON3 1003 7 | 8 | // Next default values for new objects 9 | // 10 | #ifdef APSTUDIO_INVOKED 11 | #ifndef APSTUDIO_READONLY_SYMBOLS 12 | #define _APS_NEXT_RESOURCE_VALUE 108 13 | #define _APS_NEXT_COMMAND_VALUE 40001 14 | #define _APS_NEXT_CONTROL_VALUE 1002 15 | #define _APS_NEXT_SYMED_VALUE 101 16 | #endif 17 | #endif 18 | -------------------------------------------------------------------------------- /sudo/resource.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #pragma code_page(65001) 4 | 5 | #include "resource.h" 6 | 7 | #define APSTUDIO_READONLY_SYMBOLS 8 | ///////////////////////////////////////////////////////////////////////////// 9 | // 10 | // Generated from the TEXTINCLUDE 2 resource. 11 | // 12 | #include "winres.h" 13 | 14 | ///////////////////////////////////////////////////////////////////////////// 15 | #undef APSTUDIO_READONLY_SYMBOLS 16 | 17 | ///////////////////////////////////////////////////////////////////////////// 18 | // Neutral resources 19 | 20 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) 21 | LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 22 | 23 | #ifdef APSTUDIO_INVOKED 24 | ///////////////////////////////////////////////////////////////////////////// 25 | // 26 | // TEXTINCLUDE 27 | // 28 | 29 | 1 TEXTINCLUDE 30 | BEGIN 31 | "resource.h\0" 32 | END 33 | 34 | 2 TEXTINCLUDE 35 | BEGIN 36 | "#include ""winres.h""\r\n" 37 | "\0" 38 | END 39 | 40 | 3 TEXTINCLUDE 41 | BEGIN 42 | "\r\n" 43 | "\0" 44 | END 45 | 46 | #endif // APSTUDIO_INVOKED 47 | 48 | 49 | ///////////////////////////////////////////////////////////////////////////// 50 | // 51 | // Version 52 | // 53 | 54 | VS_VERSION_INFO VERSIONINFO 55 | FILEVERSION 1,0,0,0 56 | PRODUCTVERSION 1,0,0,0 57 | FILEFLAGSMASK 0x3fL 58 | #ifdef _DEBUG 59 | FILEFLAGS 0x1L 60 | #else 61 | FILEFLAGS 0x0L 62 | #endif 63 | FILEOS 0x40004L 64 | FILETYPE 0x1L 65 | FILESUBTYPE 0x0L 66 | BEGIN 67 | BLOCK "StringFileInfo" 68 | BEGIN 69 | BLOCK "040904b0" 70 | BEGIN 71 | VALUE "FileDescription", "sudo" 72 | VALUE "FileVersion", "1.0.0.0" 73 | VALUE "LegalCopyright", "mrexodia.re" 74 | VALUE "ProductName", "sudo" 75 | VALUE "ProductVersion", "1.0.0.0" 76 | END 77 | END 78 | BLOCK "VarFileInfo" 79 | BEGIN 80 | VALUE "Translation", 0x409, 1200 81 | END 82 | END 83 | 84 | #endif // Neutral resources 85 | ///////////////////////////////////////////////////////////////////////////// 86 | 87 | 88 | ///////////////////////////////////////////////////////////////////////////// 89 | // Neutral (Default) (unknown sub-lang: 0x8) resources 90 | 91 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ZZZ) 92 | LANGUAGE LANG_NEUTRAL, 0x8 93 | 94 | ///////////////////////////////////////////////////////////////////////////// 95 | // 96 | // Icon 97 | // 98 | 99 | // Icon with lowest ID value placed first to ensure application icon 100 | // remains consistent on all systems. 101 | IDI_ICON1 ICON "uac.ico" 102 | 103 | #endif // Neutral (Default) (unknown sub-lang: 0x8) resources 104 | ///////////////////////////////////////////////////////////////////////////// 105 | 106 | 107 | 108 | #ifndef APSTUDIO_INVOKED 109 | ///////////////////////////////////////////////////////////////////////////// 110 | // 111 | // Generated from the TEXTINCLUDE 3 resource. 112 | // 113 | 114 | 115 | ///////////////////////////////////////////////////////////////////////////// 116 | #endif // not APSTUDIO_INVOKED 117 | 118 | -------------------------------------------------------------------------------- /sudo/sudo.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | static bool IsProcessElevated() 6 | { 7 | SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; 8 | PSID SecurityIdentifier; 9 | if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &SecurityIdentifier)) 10 | return 0; 11 | 12 | BOOL IsAdminMember; 13 | if (!CheckTokenMembership(NULL, SecurityIdentifier, &IsAdminMember)) 14 | IsAdminMember = FALSE; 15 | 16 | FreeSid(SecurityIdentifier); 17 | return !!IsAdminMember; 18 | } 19 | 20 | class RedirectWow 21 | { 22 | PVOID oldValue = NULL; 23 | BOOL(WINAPI* wow64DisableRedirection)(PVOID); 24 | BOOL(WINAPI* wow64RevertRedirection)(PVOID); 25 | 26 | public: 27 | RedirectWow() 28 | { 29 | wow64DisableRedirection = (decltype(wow64DisableRedirection))GetProcAddress(GetModuleHandleW(L"kernel32"), "Wow64DisableWow64FsRedirection"); 30 | wow64RevertRedirection = (decltype(wow64RevertRedirection))GetProcAddress(GetModuleHandleW(L"kernel32"), "Wow64RevertWow64FsRedirection"); 31 | if (wow64DisableRedirection) 32 | wow64DisableRedirection(&oldValue); 33 | } 34 | 35 | RedirectWow(const RedirectWow&) = delete; 36 | RedirectWow(RedirectWow&&) = delete; 37 | RedirectWow& operator=(const RedirectWow&) = delete; 38 | 39 | ~RedirectWow() 40 | { 41 | if (oldValue) 42 | wow64RevertRedirection(oldValue); 43 | } 44 | }; 45 | 46 | int wmain(int argc, wchar_t* argv[]) 47 | { 48 | RedirectWow redirectWow; 49 | 50 | // Helper functions for functioning printf 51 | auto printf = [](const char* fmt, auto... args) 52 | { 53 | char msg[1024] = ""; 54 | sprintf_s(msg, fmt, args...); 55 | DWORD w = 0; 56 | WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), msg, strlen(msg), &w, nullptr); 57 | }; 58 | auto puts = [&printf](const char* str) 59 | { 60 | printf("%s\n", str); 61 | }; 62 | 63 | // Get rid of application from command line 64 | auto commandLine = GetCommandLineW(); 65 | { 66 | if (*commandLine == L'\"') 67 | { 68 | commandLine++; 69 | while (*commandLine++ != L'\"'); 70 | commandLine++; 71 | } 72 | else 73 | { 74 | while (*commandLine != L' ' && *commandLine != L'\0') 75 | commandLine++; 76 | } 77 | while (*commandLine == L' ') 78 | commandLine++; 79 | if (!*commandLine) 80 | commandLine = nullptr; 81 | } 82 | 83 | if (!IsProcessElevated()) 84 | { 85 | // Restart sudo elevated 86 | SHELLEXECUTEINFOW ShExecInfo = { 0 }; 87 | ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW); 88 | ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; 89 | ShExecInfo.hwnd = GetConsoleWindow(); 90 | ShExecInfo.lpVerb = L"runas"; 91 | wchar_t sudo[MAX_PATH] = L""; 92 | GetModuleFileNameW(GetModuleHandleW(0), sudo, _countof(sudo)); 93 | ShExecInfo.lpFile = sudo; 94 | ShExecInfo.lpParameters = commandLine; 95 | ShExecInfo.lpDirectory = NULL; 96 | ShExecInfo.nShow = SW_HIDE; 97 | ShExecInfo.hInstApp = NULL; 98 | if (!ShellExecuteExW(&ShExecInfo)) 99 | { 100 | auto lastError = GetLastError(); 101 | if (lastError == ERROR_CANCELLED) 102 | puts("Elevation canceled by user"); 103 | else 104 | printf("ShellExecuteExW failed (LastError: %u)\n", GetLastError()); 105 | return EXIT_FAILURE; 106 | } 107 | WaitForSingleObject(ShExecInfo.hProcess, INFINITE); 108 | DWORD ExitCode = 0; 109 | if (!GetExitCodeProcess(ShExecInfo.hProcess, &ExitCode)) 110 | ExitCode = 1; 111 | CloseHandle(ShExecInfo.hProcess); 112 | return ExitCode; 113 | } 114 | else 115 | { 116 | // Get rid of the hidden console and attach to the parent sudo's console 117 | FreeConsole(); 118 | AttachConsole(ATTACH_PARENT_PROCESS); 119 | 120 | // Construct final command line for cmd 121 | std::vector finalCommandLine; 122 | auto append = [&finalCommandLine](const wchar_t* str) 123 | { 124 | auto length = wcslen(str); 125 | for (size_t i = 0; i < length; i++) 126 | finalCommandLine.push_back(str[i]); 127 | }; 128 | if (commandLine) 129 | { 130 | append(L"cmd.exe /C "); 131 | append(commandLine); 132 | } 133 | else 134 | { 135 | append(L"cmd.exe"); 136 | } 137 | finalCommandLine.push_back(L'\0'); 138 | 139 | // Create cmd instance 140 | STARTUPINFOW si = { sizeof(si) }; 141 | PROCESS_INFORMATION pi = { 0 }; 142 | if (!CreateProcessW(nullptr, finalCommandLine.data(), nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi)) 143 | { 144 | printf("CreateProcessW failed (LastError: %u)\n", GetLastError()); 145 | return EXIT_FAILURE; 146 | } 147 | WaitForSingleObject(pi.hProcess, INFINITE); 148 | DWORD ExitCode = 0; 149 | if (!GetExitCodeProcess(pi.hProcess, &ExitCode)) 150 | ExitCode = 1; 151 | CloseHandle(pi.hProcess); 152 | CloseHandle(pi.hThread); 153 | return ExitCode; 154 | } 155 | } -------------------------------------------------------------------------------- /sudo/sudo.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | 16.0 15 | Win32Proj 16 | {98578377-f8c7-4851-b746-11f7243aaafa} 17 | sudo 18 | 10.0 19 | 20 | 21 | 22 | Application 23 | true 24 | v142 25 | Unicode 26 | 27 | 28 | Application 29 | false 30 | v142 31 | true 32 | Unicode 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | true 48 | 49 | 50 | false 51 | 52 | 53 | 54 | Level3 55 | true 56 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 57 | true 58 | 59 | 60 | Console 61 | true 62 | 63 | 64 | 65 | 66 | Level3 67 | true 68 | true 69 | true 70 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 71 | true 72 | MultiThreaded 73 | 74 | 75 | Console 76 | true 77 | true 78 | true 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /sudo/sudo.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Header Files 25 | 26 | 27 | 28 | 29 | Resource Files 30 | 31 | 32 | 33 | 34 | Resource Files 35 | 36 | 37 | -------------------------------------------------------------------------------- /sudo/uac.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mrexodia/FunUtils/466967cbc3102d8db68f5193af45e2ef90e76a97/sudo/uac.ico --------------------------------------------------------------------------------