首頁  >  文章  >  後端開發  >  在 Go 中使用 `-ldflags -H=windowsgui` 時如何列印到命令提示字元?

在 Go 中使用 `-ldflags -H=windowsgui` 時如何列印到命令提示字元?

Susan Sarandon
Susan Sarandon原創
2024-11-27 18:44:12469瀏覽

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

使用-ldflags -H=windowsgui 列印到命令提示字元

使用-ldflags -H=windowsgui

使用-ldflags -H=windowsgui

輸入/輸出句柄被關閉,這使得將輸出列印到命令提示字元變得困難。為了克服這個限制,有必要將進程附加到其父進程的控制台。
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")
    }
}

實現此目的的一種方法是使用 syscall 套件的 AttachConsole 函數:

透過呼叫 AttachConsole,該進程可以存取控制台並根據需要列印訊息。 如果 AttachConsole 失敗,替代選項包括建立 GUI 對話方塊或使用 AllocConsole 指派新的控制台視窗。但是,在 GUI 對話方塊中顯示訊息可能更加用戶友好,並且適合顯示通常與控制台關聯的版本資訊。

以上是在 Go 中使用 `-ldflags -H=windowsgui` 時如何列印到命令提示字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn