Maison > développement back-end > Golang > Comment les applications Go GUI peuvent-elles imprimer dans la fenêtre de commande ?

Comment les applications Go GUI peuvent-elles imprimer dans la fenêtre de commande ?

Linda Hamilton
Libérer: 2024-11-29 10:44:11
original
267 Les gens l'ont consulté

How Can Go GUI Applications Print to the Command Window?

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")
    }
}
Copier après la connexion

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 :

  • Créer sa propre fenêtre de console à l'aide d'AllocConsole().
  • Afficher la sortie dans une boîte de dialogue GUI.

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!

source:php.cn
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