Maison > développement back-end > Golang > Comment puis-je imprimer vers l'invite de commande lors de l'utilisation de « -ldflags -H=windowsgui » dans Go ?

Comment puis-je imprimer vers l'invite de commande lors de l'utilisation de « -ldflags -H=windowsgui » dans Go ?

Susan Sarandon
Libérer: 2024-11-27 18:44:12
original
572 Les gens l'ont consulté

How Can I Print to the Command Prompt When Using `-ldflags -H=windowsgui` in Go?

Impression vers une invite de commande avec -ldflags -H=windowsgui

Lors de la compilation d'une application Go avec -ldflags -H=windowsgui, la norme les poignées d'entrée/sortie sont fermées, ce qui rend difficile l'impression de la sortie sur l'invite de commande. Pour surmonter cette limitation, il est nécessaire d'attacher le processus à la console de son parent.

Une méthode pour y parvenir consiste à utiliser la fonction AttachConsole du package syscall :

package main

import (
    "fmt"
    "syscall"
)

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(syscall.ATTACH_PARENT_PROCESS)
    if ok {
        fmt.Println("Okay, attached")
    }
}
Copier après la connexion

En appelant AttachConsole, le processus peut accéder à la console et imprimer les messages comme vous le souhaitez.

Si AttachConsole échoue, d'autres options incluent la création d'une boîte de dialogue GUI ou allouer une nouvelle fenêtre de console à l'aide d'AllocConsole. Cependant, l'affichage des messages dans une boîte de dialogue GUI peut être plus convivial et approprié pour afficher les informations de version généralement associées à la console.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal