package app import ( "fmt" "log" "strings" "syscall" "unsafe" ) const ( vkControl = 0x11 vkShift = 0x10 vkM = 0x4D keyUp = 0x0002 swRestore = 9 ) func pressDiscordMuteHotkey() error { user32 := syscall.NewLazyDLL("user32.dll") enumWindows := user32.NewProc("EnumWindows") getWindowTextW := user32.NewProc("GetWindowTextW") isWindowVisible := user32.NewProc("IsWindowVisible") setForegroundWindow := user32.NewProc("SetForegroundWindow") showWindow := user32.NewProc("ShowWindow") getWindowRect := user32.NewProc("GetWindowRect") keybdEvent := user32.NewProc("keybd_event") setCursorPos := user32.NewProc("SetCursorPos") sleep := syscall.NewLazyDLL("kernel32.dll").NewProc("Sleep") var target uintptr cb := syscall.NewCallback(func(hwnd uintptr, lparam uintptr) uintptr { vis, _, _ := isWindowVisible.Call(hwnd) if vis == 0 { return 1 } buf := make([]uint16, 512) n, _, _ := getWindowTextW.Call(hwnd, uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf))) if n == 0 { return 1 } title := strings.ToLower(strings.TrimSpace(syscall.UTF16ToString(buf[:n]))) if !strings.Contains(title, "discord") { return 1 } target = hwnd return 0 }) r1, _, err1 := enumWindows.Call(cb, 0) if r1 == 0 && target == 0 { return fmt.Errorf("discord window not found: %v", err1) } if target == 0 { return fmt.Errorf("discord window not found") } showWindow.Call(target, swRestore) setForegroundWindow.Call(target) sleep.Call(150) type rect struct { Left int32 Top int32 Right int32 Bottom int32 } var r rect if v, _, _ := getWindowRect.Call(target, uintptr(unsafe.Pointer(&r))); v != 0 { x := int((r.Left + r.Right) / 2) y := int((r.Top + r.Bottom) / 2) setCursorPos.Call(uintptr(x), uintptr(y)) sleep.Call(50) } send := func(vk byte, flags uintptr) { keybdEvent.Call(uintptr(vk), 0, flags, 0) } send(vkControl, 0) send(vkShift, 0) send(vkM, 0) send(vkM, keyUp) send(vkShift, keyUp) send(vkControl, keyUp) sleep.Call(100) SetDiscordWindow("Discord") log.Printf("discord hotkey sent via keybd_event") return nil }