Windows GUI にリンクされた Go アプリケーションを使用してコマンド ウィンドウに出力を出力する
-ldflags -H=windowsgui フラグを使用して Go アプリケーションをコンパイルする場合、結果として得られる実行可能ファイルは、Windows GUI アプリケーションとして実行されるように設定されます。デフォルトでは、GUI アプリケーションはコンソールにアクセスできないため、印刷文字列が出力されません。
この問題に対処するには、syscall パッケージを使用して、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 中国語 Web サイトの他の関連記事を参照してください。