//go:build cgo package desktop import ( "os" "syscall" "unsafe" ) // Нативный максимум окна через Win32. // // Fyne (v2.6) не даёт ни Move, ни Maximize у fyne.Window, поэтому разворот на // экран (над панелью задач) делаем напрямую через user32: находим HWND нашего // процесса через EnumWindows и вызываем ShowWindow(SW_MAXIMIZE). // Только Windows (платформа приложения по спеке — Windows). const ( swMaximize = 9 ) var ( user32 = syscall.NewLazyDLL("user32.dll") procEnumWindows = user32.NewProc("EnumWindows") procGetWindowThreadProcID = user32.NewProc("GetWindowThreadProcessId") procIsWindowVisible = user32.NewProc("IsWindowVisible") procShowWindow = user32.NewProc("ShowWindow") ) func maximizeWindow() { pid := uint32(os.Getpid()) cb := syscall.NewCallback(func(hwnd syscall.Handle, _ uintptr) uintptr { var winPid uint32 procGetWindowThreadProcID.Call(uintptr(hwnd), uintptr(unsafe.Pointer(&winPid))) if winPid != pid { return 1 // continue перечисление } visible, _, _ := procIsWindowVisible.Call(uintptr(hwnd)) if visible == 0 { return 1 // continue перечисление } procShowWindow.Call(uintptr(hwnd), swMaximize) return 0 // остановить перечисление }) procEnumWindows.Call(cb, 0) }