使用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() 失敗,應用程式應該:
以上是Go GUI 應用程式如何列印到命令列視窗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!