首頁 > 後端開發 > Golang > Go GUI 應用程式如何列印到命令列視窗?

Go GUI 應用程式如何列印到命令列視窗?

Linda Hamilton
發布: 2024-11-29 10:44:11
原創
267 人瀏覽過

How Can Go GUI Applications Print to the Command Window?

使用Windows GUI 連結的Go 應用程式將輸出列印到命令列視窗

使用-ldflags -H=windowsgui 標誌編譯Go 應用程式時,產生的可執行檔設定為Windows GUI 應用程式運作。預設情況下,GUI 應用程式無法存取控制台,從而阻止輸出列印字串。

要解決此問題,可以使用系統呼叫套件將 GUI 程序明確附加到其父級控制台。這允許應用程式將輸出列印到命令視窗:

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")
    }
}
登入後複製

附加到父控制台後,應用程式可以使用標準 fmt.Println() 函數或直接寫入 syscall.Stdout 列印輸出。但是,如果 AttachConsole() 失敗,應用程式應該:

  • 使用 AllocConsole() 建立自己的控制台視窗。
  • 在 GUI 對話方塊中顯示輸出。

以上是Go GUI 應用程式如何列印到命令列視窗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板