b1.3 Fix hide/show console window for only once.
This commit is contained in:
+15
-8
@@ -24,20 +24,27 @@ const (
|
|||||||
SW_SHOW = 5 // 显示窗口
|
SW_SHOW = 5 // 显示窗口
|
||||||
)
|
)
|
||||||
|
|
||||||
// hideConsoleWindow 获取当前控制台句柄并隐藏窗口。若无控制台则无操作。
|
// cachedConsoleHwnd 在 initConsoleHwnd() 中缓存,避免 systray.Run() 后 GetConsoleWindow 返回 0。
|
||||||
func hideConsoleWindow() {
|
var cachedConsoleHwnd uintptr
|
||||||
|
|
||||||
|
// initConsoleHwnd 在 main() 中提前调用,缓存控制台窗口句柄。
|
||||||
|
func initConsoleHwnd() {
|
||||||
hwnd, _, _ := getConsoleWindow.Call()
|
hwnd, _, _ := getConsoleWindow.Call()
|
||||||
if hwnd != 0 {
|
cachedConsoleHwnd = hwnd
|
||||||
showWindowAsync.Call(hwnd, SW_HIDE)
|
}
|
||||||
|
|
||||||
|
// hideConsoleWindow 隐藏控制台窗口。若无控制台则无操作。
|
||||||
|
func hideConsoleWindow() {
|
||||||
|
if cachedConsoleHwnd != 0 {
|
||||||
|
showWindowAsync.Call(cachedConsoleHwnd, SW_HIDE)
|
||||||
log.Debug().Msg("控制台窗口已隐藏")
|
log.Debug().Msg("控制台窗口已隐藏")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// showConsoleWindow 获取当前控制台句柄并显示窗口。若无控制台则无操作。
|
// showConsoleWindow 显示控制台窗口。若无控制台则无操作。
|
||||||
func showConsoleWindow() {
|
func showConsoleWindow() {
|
||||||
hwnd, _, _ := getConsoleWindow.Call()
|
if cachedConsoleHwnd != 0 {
|
||||||
if hwnd != 0 {
|
showWindowAsync.Call(cachedConsoleHwnd, SW_SHOW)
|
||||||
showWindowAsync.Call(hwnd, SW_SHOW)
|
|
||||||
log.Debug().Msg("控制台窗口已显示")
|
log.Debug().Msg("控制台窗口已显示")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ func main() {
|
|||||||
initLogger()
|
initLogger()
|
||||||
log.Info().Msg("程序启动")
|
log.Info().Msg("程序启动")
|
||||||
|
|
||||||
|
initConsoleHwnd()
|
||||||
hideConsoleWindow()
|
hideConsoleWindow()
|
||||||
|
|
||||||
p := NewPermission()
|
p := NewPermission()
|
||||||
@@ -83,16 +84,18 @@ func onReady() {
|
|||||||
|
|
||||||
// 显示控制台 → 调用 showConsoleWindow()
|
// 显示控制台 → 调用 showConsoleWindow()
|
||||||
go func() {
|
go func() {
|
||||||
<-mShowConsoleWindow.ClickedCh
|
for range mShowConsoleWindow.ClickedCh {
|
||||||
log.Info().Msg("用户点击显示控制台窗口")
|
log.Info().Msg("用户点击显示控制台窗口")
|
||||||
showConsoleWindow()
|
showConsoleWindow()
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// 隐藏控制台 → 调用 hideConsoleWindow()
|
// 隐藏控制台 → 调用 hideConsoleWindow()
|
||||||
go func() {
|
go func() {
|
||||||
<-mHideConsoleWindow.ClickedCh
|
for range mHideConsoleWindow.ClickedCh {
|
||||||
log.Info().Msg("用户点击隐藏控制台窗口")
|
log.Info().Msg("用户点击隐藏控制台窗口")
|
||||||
hideConsoleWindow()
|
hideConsoleWindow()
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user