J'ai créé une application que je souhaite exécuter de manière invisible en arrière-plan (pas de commande/console cmd). Comment puis-je faire cela?
(Ceci est pour Windows, testé sur Windows 7 Pro 64 bits)
La documentation trouvée en ligne indique que je peux compiler avec quelque chose comme,
go build -ldflags -Hwindowsgui filename.go
Mais cela donne une erreur: unknown flag -Hwindowsgui
Avec les versions plus récentes (1.1?) Du compilateur, cela devrait fonctionner:
go build -ldflags -H=windowsgui filename.go
Quand j'ai continué à chercher, j'ai trouvé une note que la documentation officielle devrait être mise à jour bientôt, mais en attendant, il y a beaucoup d'exemples de réponses plus anciennes à cette erreur.
Utilisation de Go version 1.4.2
go build -ldflags "-H windowsgui"
À partir des documents Go:
go build [-o output] [-i] [build flags] [packages]
-ldflags 'flag list'
arguments pour transmettre chaque appel de l'éditeur de liens 5l, 6l ou 8l.
Si vous ne voulez pas taper les longues instructions de construction à chaque fois pendant le débogage mais que vous voulez quand même que la fenêtre de la console disparaisse, vous pouvez ajouter ce code au début de votre fonction principale:
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)
}
}
}
Vous pouvez maintenant compiler avec go build
. Votre programme affichera la fenêtre de la console pendant un court instant au démarrage, puis la masquera immédiatement.