From 93da16897afc101a9facc3a3d2b9e58b50b7d0c3 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Wed, 3 Mar 2021 19:01:40 +0800 Subject: [PATCH] feat double click check. --- global/terminal/double_click.go | 7 +++++++ global/terminal/double_click_windows.go | 23 +++++++++++++++++++++++ main.go | 17 +++++++++++------ 3 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 global/terminal/double_click.go create mode 100644 global/terminal/double_click_windows.go diff --git a/global/terminal/double_click.go b/global/terminal/double_click.go new file mode 100644 index 0000000..bc0d06a --- /dev/null +++ b/global/terminal/double_click.go @@ -0,0 +1,7 @@ +// +build !windows + +package terminal + +func RunningByDoubleClick() bool { + return false +} diff --git a/global/terminal/double_click_windows.go b/global/terminal/double_click_windows.go new file mode 100644 index 0000000..3e2b33f --- /dev/null +++ b/global/terminal/double_click_windows.go @@ -0,0 +1,23 @@ +// +build windows + +package terminal + +import ( + "syscall" + "unsafe" +) + +// RunningByDoubleClick 检查是否通过双击直接运行 +func RunningByDoubleClick() bool { + kernel32 := syscall.NewLazyDLL("kernel32.dll") + lp := kernel32.NewProc("GetConsoleProcessList") + if lp != nil { + var ids [2]uint32 + var maxCount uint32 = 2 + ret, _, _ := lp.Call(uintptr(unsafe.Pointer(&ids)), uintptr(maxCount)) + if ret > 1 { + return false + } + } + return true +} diff --git a/main.go b/main.go index e6b6a9a..b7f52ef 100644 --- a/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( "encoding/base64" "encoding/hex" "fmt" + "github.com/Mrs4s/go-cqhttp/global/terminal" rotatelogs "github.com/lestrrat-go/file-rotatelogs" easy "github.com/t-tomalak/logrus-easy-formatter" "io" @@ -53,6 +54,11 @@ func init() { panic(err) } + conf = getConfig() + if conf == nil { + os.Exit(1) + } + // 在debug模式下,将在标准输出中打印当前执行行数 if conf.Debug { log.SetReportCaller(true) @@ -90,11 +96,6 @@ func init() { _ = os.Remove("cqhttp.json") } - conf = getConfig() - if conf == nil { - os.Exit(1) - } - if !global.PathExists(global.ImagePath) { if err := os.MkdirAll(global.ImagePath, 0755); err != nil { log.Fatalf("创建图片缓存文件夹失败: %v", err) @@ -118,7 +119,11 @@ func init() { } func main() { - + if terminal.RunningByDoubleClick() { + log.Warning("警告: 强烈不推荐通过双击直接运行本程序, 这将导致一些非预料的后果.") + log.Warning("将等待10s后启动") + time.Sleep(time.Second * 10) + } var byteKey []byte arg := os.Args if len(arg) > 1 {