From c3840a59880b8f21ff6a751ca248a0484724cbe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:25:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=9C=A8=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E8=AE=BE=E7=BD=AE=E6=A0=87=E9=A2=98=E4=B8=BA=20`go-cq?= =?UTF-8?q?http=20=E7=89=88=E6=9C=AC=20=E7=89=88=E6=9D=83`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- global/terminal/title.go | 15 +++++++++++++ global/terminal/title_windows.go | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 global/terminal/title.go create mode 100644 global/terminal/title_windows.go 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())) +} From 04c44464961c7ffadd56212283e2ee1baa9ffb0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 2 Mar 2023 15:08:50 +0800 Subject: [PATCH 2/2] fix: linkname --- global/terminal/title.go | 4 ++-- global/terminal/title_windows.go | 25 ++++++++----------------- main.go | 1 + 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/global/terminal/title.go b/global/terminal/title.go index b2fc8d7..806f1ed 100644 --- a/global/terminal/title.go +++ b/global/terminal/title.go @@ -9,7 +9,7 @@ import ( "github.com/Mrs4s/go-cqhttp/internal/base" ) -func init() { - // 设置标题 +// SetTitle 设置标题为 go-cqhttp `版本` `版权` +func SetTitle() { 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 index 1302db0..098d628 100644 --- a/global/terminal/title_windows.go +++ b/global/terminal/title_windows.go @@ -11,28 +11,19 @@ import ( "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) +func setConsoleTitle(title string) error { + p0, err := syscall.UTF16PtrFromString(title) if err != nil { - return + return err } - r1, _, e1 := syscall.Syscall(procSetConsoleTitle.Addr(), 1, uintptr(unsafe.Pointer(p0)), 0, 0) + r1, _, err := windows.NewLazySystemDLL("kernel32.dll").NewProc("SetConsoleTitleW").Call(uintptr(unsafe.Pointer(p0))) if r1 == 0 { - err = errnoErr(e1) + return err } - return + return nil } -func init() { +// SetTitle 设置标题为 go-cqhttp `版本` `版权` +func SetTitle() { _ = setConsoleTitle(fmt.Sprintf("go-cqhttp "+base.Version+" © 2020 - %d Mrs4s", time.Now().Year())) } diff --git a/main.go b/main.go index 90f5b20..a63f864 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ import ( ) func main() { + terminal.SetTitle() gocq.InitBase() _ = terminal.DisableQuickEdit() _ = terminal.EnableVT100()