如何从Golang创建可执行文件,该可执行文件在运行时不会打开命令(cmd)窗口?
I created an application that I want to run invisibly in the background (no command / cmd console). How do I do this?
(This is for Windows, tested on Windows 7 Pro 64 bit)
我创建了一个想要在后台隐身运行的应用程序(无命令/ cmd控制台)。 我该怎么做? p>
(这是Windows操作系统,已在Windows 7 Pro 64位上测试) p> div>
The documentation found online says I can compile with something along the lines of,
go build -ldflags -Hwindowsgui filename.go
But this gives an error: unknown flag -Hwindowsgui
With more recent (1.1?) versions of the compiler, this should work:
go build -ldflags -H=windowsgui filename.go
When I continued searching around I found a note that the official documentation should be updated soon, but in the meantime there are a lot of older-style example answers out there that error.
Using Go Version 1.4.2
go build -ldflags "-H windowsgui"
From the Go docs:
go build [-o output] [-i] [build flags] [packages]
-ldflags 'flag list'
arguments to pass on each 5l, 6l, or 8l linker invocation.
If you don't want to type the long build instructions every time during debugging but still want the console window to disappear, you can add this code at the start of your main function:
package main
import "github.com/gonutz/w32"
func main() {
console := w32.GetConsoleWindow()
if console != 0 {
_, consoleProcID := w32.GetWindowThreadProcessId(console)
if w32.GetCurrentProcessId() == consoleProcID {
w32.ShowWindowAsync(console, w32.SW_HIDE)
}
}
}
Now you can compile with go build
. Your program will show the console window for a short moment on start-up and then immediately hide it.