-
Notifications
You must be signed in to change notification settings - Fork 16
/
main_windows.go
75 lines (69 loc) · 1.62 KB
/
main_windows.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//go:build windows
package main
import (
"github.com/lxn/win"
"golang.design/x/hotkey"
"github.com/getlantern/systray"
)
var showWindow = true
var programHotkey = hotkey.New([]hotkey.Modifier { hotkey.ModCtrl, hotkey.ModAlt }, hotkey.KeyB)
func Platform_ShowOrHiddenWindow() {
consoleWindow := win.GetConsoleWindow()
if showWindow {
Log("Debug-ShowOrHiddenWindow", GetLangText("Debug-ShowOrHiddenWindow_HideWindow"), false)
showWindow = false
win.ShowWindow(consoleWindow, win.SW_HIDE)
} else {
Log("Debug-ShowOrHiddenWindow", GetLangText("Debug-ShowOrHiddenWindow_ShowWindow"), false)
showWindow = true
win.ShowWindow(consoleWindow, win.SW_SHOW)
}
}
func Platform_Stop() {
programHotkey.Unregister()
systray.Quit()
}
func RegHotKey() {
err := programHotkey.Register()
if err != nil {
Log("RegHotKey", GetLangText("Error-RegHotkey"), false, err.Error())
return
}
Log("RegHotKey", GetLangText("Success-RegHotkey"), false)
for range programHotkey.Keydown() {
Platform_ShowOrHiddenWindow()
}
}
func RegSysTray() {
if needHideSystray {
return
}
systray.Run(func () {
systray.SetIcon(icon_Windows)
systray.SetTitle(programName)
mShow := systray.AddMenuItem("显示/隐藏", "显示/隐藏程序")
mQuit := systray.AddMenuItem("退出", "退出程序")
go func() {
for {
select {
case <-mShow.ClickedCh:
Platform_ShowOrHiddenWindow()
case <-mQuit.ClickedCh:
systray.Quit()
}
}
}()
}, func () {
ReqStop()
})
}
func main() {
if PrepareEnv() {
if needHideWindow && showWindow {
Platform_ShowOrHiddenWindow()
}
go RegHotKey()
go RegSysTray()
RunConsole()
}
}