【发布时间】:2017-07-18 22:35:15
【问题描述】:
假设我有以下代码,使用syscall 隐藏命令行窗口
process := exec.Command(name, args...)
process.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
err := process.Start()
if err != nil {
log.Print(err)
}
但是当我编译它并尝试在 Windows 中运行它时,命令行窗口又出现了
如何防止命令行窗口出现?
PS 我已经知道如何使用 go build -ldflags -H=windowsgui 将 golang 源代码编译成 Windows GUI 可执行文件,但这样做只能确保程序本身不会弹出命令行窗口,Exec 无论如何都会显示这些窗口
【问题讨论】:
-
您能否更准确地说明您要隐藏的提示?您已经说过正确的命令隐藏了 Go 命令行窗口和 exec 生成的窗口。目前我最好的猜测是你正在执行的命令会产生一个额外的窗口。
-
也有可能,我要检查哪个命令产生了命令提示符(不过很快就会消失)
-
@jm33_m0 我刚刚尝试过,您的问题中的 sysProcAttr 方法,它是一个巨大的改进——windows 只会短暂闪烁。你有没有找到完全防止闪光的解决方案
标签: windows go command-line system-calls