mirror of
				https://github.com/9001/copyparty.git
				synced 2025-11-03 21:43:12 +00:00 
			
		
		
		
	adopt the osd hider
This commit is contained in:
		
							
								
								
									
										104
									
								
								contrib/media-osd-bgone.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								contrib/media-osd-bgone.ps1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,104 @@
 | 
			
		||||
# media-osd-bgone.ps1: disable media-control OSD on win10do
 | 
			
		||||
# v1.1, 2021-06-25, ed <irc.rizon.net>, MIT-licensed
 | 
			
		||||
# https://github.com/9001/copyparty/blob/hovudstraum/contrib/media-osd-bgone.ps1
 | 
			
		||||
#
 | 
			
		||||
# locates the first window that looks like the media OSD and minimizes it;
 | 
			
		||||
# doing this once after each reboot should do the trick
 | 
			
		||||
# (adjust the width/height filter if it doesn't work)
 | 
			
		||||
#
 | 
			
		||||
# ---------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
# tip: save the following as "media-osd-bgone.bat" next to this script:
 | 
			
		||||
#   start cmd /c "powershell -command ""set-executionpolicy -scope process bypass; .\media-osd-bgone.ps1"" & ping -n 2 127.1 >nul"
 | 
			
		||||
#
 | 
			
		||||
# then create a shortcut to that bat-file and move the shortcut here:
 | 
			
		||||
#   %appdata%\Microsoft\Windows\Start Menu\Programs\Startup
 | 
			
		||||
#
 | 
			
		||||
# and now this will autorun on bootup
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Add-Type -TypeDefinition @"
 | 
			
		||||
using System;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace A {
 | 
			
		||||
  public class B : Control {
 | 
			
		||||
 | 
			
		||||
    [DllImport("user32.dll")]
 | 
			
		||||
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
 | 
			
		||||
 | 
			
		||||
    [DllImport("user32.dll", SetLastError = true)]
 | 
			
		||||
    static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
 | 
			
		||||
 | 
			
		||||
    [DllImport("user32.dll", SetLastError=true)]
 | 
			
		||||
    static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect);
 | 
			
		||||
 | 
			
		||||
    [DllImport("user32.dll")]
 | 
			
		||||
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
 | 
			
		||||
 | 
			
		||||
    [StructLayout(LayoutKind.Sequential)]
 | 
			
		||||
    public struct RECT {
 | 
			
		||||
      public int x;
 | 
			
		||||
      public int y;
 | 
			
		||||
      public int x2;
 | 
			
		||||
      public int y2;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    bool fa() {
 | 
			
		||||
      RECT r;
 | 
			
		||||
      IntPtr it = IntPtr.Zero;
 | 
			
		||||
      while ((it = FindWindowEx(IntPtr.Zero, it, "NativeHWNDHost", "")) != IntPtr.Zero) {
 | 
			
		||||
        if (FindWindowEx(it, IntPtr.Zero, "DirectUIHWND", "") == IntPtr.Zero)
 | 
			
		||||
          continue;
 | 
			
		||||
        
 | 
			
		||||
        if (!GetWindowRect(it, out r))
 | 
			
		||||
          continue;
 | 
			
		||||
 | 
			
		||||
        int w = r.x2 - r.x + 1;
 | 
			
		||||
        int h = r.y2 - r.y + 1;
 | 
			
		||||
 | 
			
		||||
        Console.WriteLine("[*] hwnd {0:x} @ {1}x{2} sz {3}x{4}", it, r.x, r.y, w, h);
 | 
			
		||||
        if (h != 141)
 | 
			
		||||
          continue;
 | 
			
		||||
        
 | 
			
		||||
        ShowWindow(it, 6);
 | 
			
		||||
        Console.WriteLine("[+] poof");
 | 
			
		||||
        return true;
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void fb() {
 | 
			
		||||
      keybd_event((byte)Keys.VolumeMute, 0, 0, 0);
 | 
			
		||||
      keybd_event((byte)Keys.VolumeMute, 0, 2, 0);
 | 
			
		||||
      Thread.Sleep(500);
 | 
			
		||||
      keybd_event((byte)Keys.VolumeMute, 0, 0, 0);
 | 
			
		||||
      keybd_event((byte)Keys.VolumeMute, 0, 2, 0);
 | 
			
		||||
 | 
			
		||||
      while (true) {
 | 
			
		||||
        if (fa()) {
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
        Console.WriteLine("[!] not found");
 | 
			
		||||
        Thread.Sleep(1000);
 | 
			
		||||
      }
 | 
			
		||||
      this.Invoke((MethodInvoker)delegate {
 | 
			
		||||
        Application.Exit();
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Run() {
 | 
			
		||||
      Console.WriteLine("[+] hi");
 | 
			
		||||
      new Thread(new ThreadStart(fb)).Start();
 | 
			
		||||
      Application.Run();
 | 
			
		||||
      Console.WriteLine("[+] bye");
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
"@ -ReferencedAssemblies System.Windows.Forms
 | 
			
		||||
 | 
			
		||||
(New-Object -TypeName A.B).Run()
 | 
			
		||||
		Reference in New Issue
	
	Block a user