diff --git a/global/terminal/title.go b/global/terminal/title.go new file mode 100644 index 0000000..b2fc8d7 --- /dev/null +++ b/global/terminal/title.go @@ -0,0 +1,15 @@ +//go:build !windows + +package terminal + +import ( + "fmt" + "time" + + "github.com/Mrs4s/go-cqhttp/internal/base" +) + +func init() { + // 设置标题 + fmt.Printf("\033]0;go-cqhttp "+base.Version+" © 2020 - %d Mrs4s"+"\007", time.Now().Year()) +} diff --git a/global/terminal/title_windows.go b/global/terminal/title_windows.go new file mode 100644 index 0000000..1302db0 --- /dev/null +++ b/global/terminal/title_windows.go @@ -0,0 +1,38 @@ +package terminal + +import ( + "fmt" + "syscall" + "time" + "unsafe" + + "golang.org/x/sys/windows" + + "github.com/Mrs4s/go-cqhttp/internal/base" +) + +var ( + //go:linkname modkernel32 golang.org/x/sys/windows.modkernel32 + modkernel32 *windows.LazyDLL + procSetConsoleTitle = modkernel32.NewProc("SetConsoleTitleW") +) + +//go:linkname errnoErr golang.org/x/sys/windows.errnoErr +func errnoErr(e syscall.Errno) error + +func setConsoleTitle(title string) (err error) { + var p0 *uint16 + p0, err = syscall.UTF16PtrFromString(title) + if err != nil { + return + } + r1, _, e1 := syscall.Syscall(procSetConsoleTitle.Addr(), 1, uintptr(unsafe.Pointer(p0)), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func init() { + _ = setConsoleTitle(fmt.Sprintf("go-cqhttp "+base.Version+" © 2020 - %d Mrs4s", time.Now().Year())) +}