From 7998884a9d56d87c80c0e2c35e68c371b909e3ef Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 5 Jul 2022 23:36:44 +0200 Subject: [PATCH] adopt the osd hider --- contrib/media-osd-bgone.ps1 | 104 ++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 contrib/media-osd-bgone.ps1 diff --git a/contrib/media-osd-bgone.ps1 b/contrib/media-osd-bgone.ps1 new file mode 100644 index 00000000..8018bd69 --- /dev/null +++ b/contrib/media-osd-bgone.ps1 @@ -0,0 +1,104 @@ +# media-osd-bgone.ps1: disable media-control OSD on win10do +# v1.1, 2021-06-25, ed , 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()