Impression de la sortie dans la fenêtre de commande avec des applications Go liées à l'interface graphique Windows
Lors de la compilation d'applications Go avec l'indicateur -ldflags -H=windowsgui, l'exécutable résultant est configuré pour s'exécuter en tant qu'application GUI Windows. Par défaut, les applications GUI n'ont pas accès à la console, ce qui empêche la sortie des chaînes imprimées.
Pour résoudre ce problème, le package syscall peut être utilisé pour attacher explicitement le processus GUI à la console de son parent. Cela permet à l'application d'imprimer la sortie dans la fenêtre de commande :
package main import ( "fmt" "syscall" ) const ( ATTACH_PARENT_PROCESS = ^uint32(0) // (DWORD)-1 ) var ( modkernel32 = syscall.NewLazyDLL("kernel32.dll") procAttachConsole = modkernel32.NewProc("AttachConsole") ) func AttachConsole(dwParentProcess uint32) (ok bool) { r0, _, _ := syscall.Syscall(procAttachConsole.Addr(), 1, uintptr(dwParentProcess), 0, 0) ok = bool(r0 != 0) return } func main() { ok := AttachConsole(ATTACH_PARENT_PROCESS) if ok { fmt.Println("Okay, attached") } }
Après la connexion à la console parent, l'application peut imprimer la sortie à l'aide de la fonction standard fmt.Println() ou en écrivant directement dans syscall.Stdout. Cependant, si AttachConsole() échoue, l'application doit soit :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!