Files
SRCC/console_windows.go
T

44 lines
1.3 KiB
Go
Raw Normal View History

2026-06-22 11:33:18 +08:00
// 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 模块:通过 WinAPIGetConsoleWindow + 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("控制台窗口已显示")
}
}