Explorer/Assemblies.ps1

Add-Type -assembly System
Add-Type -assembly System.Runtime.InteropServices
Add-Type -assembly System.Windows.Forms
Add-Type -assembly System.Data
Add-Type -assembly System.Drawing
Add-Type -assembly System.Design
    #---------------------
    # treeView checkboxes
    #---------------------
    # https://stackoverflow.com/questions/698369/how-to-disable-a-winforms-treeview-node-checkbox
    # P/invoke
    $TypeDefinition = @'
    using System;
    using System.Runtime.InteropServices;
    namespace Win32Functions {
        public class Win32TreeView {
            // constants used to hide a checkbox
            public const int TVIF_STATE = 0x8;
            public const int TVIS_STATEIMAGEMASK = 0xF000;
            public const int TV_FIRST = 0x1100;
            public const int TVM_SETITEM = TV_FIRST + 63;
 
            [DllImport("user32.dll", SetLastError = true)]
            public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 
            // struct used to set node properties
            public struct TVITEM
            {
                public int mask;
                public IntPtr hItem;
                public int state;
                public int stateMask;
                [MarshalAs(UnmanagedType.LPTStr)]
                public String lpszText;
                public int cchTextMax;
                public int iImage;
                public int iSelectedImage;
                public int cChildren;
                public IntPtr lParam;
            }
 
            public const int SB_HORZ = 0x0;
            public const int SB_VERT = 0x1;
 
            [DllImport("user32.dll", CharSet = CharSet.Unicode)]
            public static extern int GetScrollPos(IntPtr hWnd, int nBar);
             
            [DllImport("user32.dll", CharSet = CharSet.Unicode)]
            public static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
 
            public const int EM_SETCUEBANNER = 0x1501;
             
        }
    }
'@
                   
Add-Type -TypeDefinition $TypeDefinition #-PassThru

#Add-Type -ErrorAction SilentlyContinue -TypeDefinition @"
#public enum SRxFilteringResult { REMOVED, PROCESSED, ATTRIBUTES }
#"@

Add-Type -TypeDefinition @"
            using System;
            using System.Diagnostics;
            using System.Security.Principal;
            using System.Runtime.InteropServices;
 
            public static class Kernel32
            {
                [DllImport("kernel32.dll")]
                public static extern bool CheckRemoteDebuggerPresent(
                    IntPtr hProcess,
                    out bool pbDebuggerPresent);
 
                [DllImport("kernel32.dll")]
                public static extern int DebugActiveProcess(int PID);
 
                [DllImport("kernel32.dll")]
                public static extern int DebugActiveProcessStop(int PID);
            }
"@