2023-03-17 18:15:31 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								### [System.IconExtractor]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$dll_import = @"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Drawing;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Runtime.InteropServices;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								namespace System
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public class IconExtractor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public static Icon Extract(string file, int number, bool largeIcon)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IntPtr large;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IntPtr small;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ExtractIconEx(file, number, out large, out small, 1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								try
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return Icon.FromHandle(largeIcon ? large : small);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								catch
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"@
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Add-Type -TypeDefinition $dll_import -ReferencedAssemblies System.Drawing
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$menuItem.Image = [System.IconExtractor]::Extract("shell32.dll", 174, $true)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### [W.U32]::mouse_event
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[W.U32]::mouse_event(0x02 -bor 0x04 -bor 0x8000 -bor 0x01, .1*65535, .1 *65535, 0, 0)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### [Clicker]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$cSource = @'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Drawing;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Runtime.InteropServices;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Windows.Forms;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public class Clicker
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[StructLayout(LayoutKind.Sequential)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct INPUT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int        type; // 0 = INPUT_MOUSE,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            // 1 = INPUT_KEYBOARD
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            // 2 = INPUT_HARDWARE
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public MOUSEINPUT mi;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646273(v=vs.85).aspx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[StructLayout(LayoutKind.Sequential)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								struct MOUSEINPUT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int    dx ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int    dy ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int    mouseData ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int    dwFlags;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public int    time;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    public IntPtr dwExtraInfo;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//This covers most use cases although complex mice may have additional buttons
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//There are additional constants you can use for those cases, see the msdn page
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_MOVED      = 0x0001 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_LEFTDOWN   = 0x0002 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_LEFTUP     = 0x0004 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_RIGHTDOWN  = 0x0008 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_RIGHTUP    = 0x0010 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_MIDDLEDOWN = 0x0020 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_MIDDLEUP   = 0x0040 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_WHEEL      = 0x0080 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_XDOWN      = 0x0100 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_XUP        = 0x0200 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int MOUSEEVENTF_ABSOLUTE   = 0x8000 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const int screen_length          = 0x10000 ;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[System.Runtime.InteropServices.DllImport("user32.dll")]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern static uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public static void LeftClickAtPoint(int x, int y)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //Move the mouse
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    INPUT[] input = new INPUT[3];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input[0].mi.dx = x*(65535/System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input[0].mi.dy = y*(65535/System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input[0].mi.dwFlags = MOUSEEVENTF_MOVED | MOUSEEVENTF_ABSOLUTE;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //Left mouse button down
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //Left mouse button up
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SendInput(3, input, Marshal.SizeOf(input[0]));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'@
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Add-Type -TypeDefinition $cSource -ReferencedAssemblies System.Windows.Forms,System.Drawing
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[Clicker]::LeftClickAtPoint(1900,1070)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### [Audio]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Add-Type -Language CsharpVersion3 -TypeDefinition @"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Runtime.InteropServices;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								interface IAudioEndpointVolume {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// f(), g(), ... are unused COM method slots. Define these if you care
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int f(); int g(); int h(); int i();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int SetMasterVolumeLevelScalar(float fLevel, System.Guid pguidEventContext);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int j();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int GetMasterVolumeLevelScalar(out float pfLevel);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int k(); int l(); int m(); int n();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int GetMute(out bool pbMute);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								interface IMMDevice {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								interface IMMDeviceEnumerator {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int f(); // Unused
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public class Audio {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static IAudioEndpointVolume Vol() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var enumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IMMDevice dev = null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Marshal.ThrowExceptionForHR(enumerator.GetDefaultAudioEndpoint(/*eRender*/ 0, /*eMultimedia*/ 1, out dev));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IAudioEndpointVolume epv = null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var epvid = typeof(IAudioEndpointVolume).GUID;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Marshal.ThrowExceptionForHR(dev.Activate(ref epvid, /*CLSCTX_ALL*/ 23, 0, out epv));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return epv;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public static float Volume {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get {float v = -1; Marshal.ThrowExceptionForHR(Vol().GetMasterVolumeLevelScalar(out v)); return v;}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set {Marshal.ThrowExceptionForHR(Vol().SetMasterVolumeLevelScalar(value, System.Guid.Empty));}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public static bool Mute {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get { bool mute; Marshal.ThrowExceptionForHR(Vol().GetMute(out mute)); return mute; }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"@
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[Audio]::Volume = 0.50
							 
						 
					
						
							
								
									
										
										
										
											2023-03-24 12:17:25 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[Audio]::Mute = $true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### IWR 5.1 -SkipCertificateCheck
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								add-type @"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Net;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								using System.Security.Cryptography.X509Certificates;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public class TrustAllCertsPolicy : ICertificatePolicy {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public bool CheckValidationResult(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ServicePoint srvPoint, X509Certificate certificate,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								WebRequest request, int certificateProblem) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"@
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy