// Copyright (c) 2026 S.A. (SNOWARE). Written for SCU Team. // Licensed under MulanPubL-2.0. // You may obtain a copy at: http://license.coscl.org.cn/MulanPubL-2.0 // THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND. // console_windows 模块:通过 WinAPI(GetConsoleWindow + ShowWindowAsync)控制控制台窗口的显示/隐藏。 package main import ( "syscall" ) // 预加载 WinAPI 所需的 DLL 和函数。 var ( kernel32 = syscall.NewLazyDLL("kernel32.dll") user32 = syscall.NewLazyDLL("user32.dll") getConsoleWindow = kernel32.NewProc("GetConsoleWindow") showWindowAsync = user32.NewProc("ShowWindowAsync") ) // ShowWindow 常量。 const ( SW_HIDE = 0 // 隐藏窗口 SW_SHOW = 5 // 显示窗口 ) // hideConsoleWindow 获取当前控制台句柄并隐藏窗口。若无控制台则无操作。 func hideConsoleWindow() { hwnd, _, _ := getConsoleWindow.Call() if hwnd != 0 { showWindowAsync.Call(hwnd, SW_HIDE) log.Debug().Msg("控制台窗口已隐藏") } } // showConsoleWindow 获取当前控制台句柄并显示窗口。若无控制台则无操作。 func showConsoleWindow() { hwnd, _, _ := getConsoleWindow.Call() if hwnd != 0 { showWindowAsync.Call(hwnd, SW_SHOW) log.Debug().Msg("控制台窗口已显示") } }