バックグラウンドで目に見えないように実行したいアプリケーションを作成しました(コマンド/ cmdコンソールなし)。どうすればいいですか?
(これはWindows用で、Windows 7 Pro 64ビットでテスト済みです)
オンラインで見つかったドキュメントには、次のように何かをコンパイルできると書かれています。
go build -ldflags -Hwindowsgui filename.go
しかし、これはエラーを与えます:unknown flag -Hwindowsgui
コンパイラのより新しい(1.1?)バージョンでは、これは動作するはずです:
go build -ldflags -H=windowsgui filename.go
私が周りを探し続けたとき、私は公式ドキュメントがすぐに更新されるべきであるというメモを見つけましたが、その間、そのエラーがそこにある古いスタイルの例の答えがたくさんあります。
Goバージョン1.4.2の使用
go build -ldflags "-H windowsgui"
Goドキュメントから:
go build [-o output] [-i] [build flags] [packages]
-ldflags 'flag list'
引数は、5l、6l、または8lの各リンカー呼び出しで渡されます。
デバッグ中に毎回長いビルド指示を入力したくないが、コンソールウィンドウを非表示にする場合は、メイン関数の開始時にこのコードを追加できます。
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)
}
}
}
これで、go build
でコンパイルできます。プログラムは、起動時に短時間コンソールウィンドウを表示し、すぐに非表示にします。