ホームページ  >  記事  >  バックエンド開発  >  Go で `-ldflags -H=windowsgui` を使用するときにコマンド プロンプトに出力するにはどうすればよいですか?

Go で `-ldflags -H=windowsgui` を使用するときにコマンド プロンプトに出力するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-27 18:44:12468ブラウズ

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

-ldflags -H=windowsgui を使用してコマンド プロンプトに出力する

-ldflags -H=windowsgui を使用して Go アプリケーションをコンパイルする場合、標準入出力のハンドルが閉じられているため、コマンド プロンプトに出力を出力することが困難になります。この制限を克服するには、プロセスを親のコンソールに接続する必要があります。

これを実現する 1 つの方法は、syscall パッケージの AttachConsole 関数を使用することです。

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")
    }
}

AttachConsole を呼び出すことで、プロセスはコンソールにアクセスし、必要に応じてメッセージを出力できます。

AttachConsole が失敗した場合、代替オプションとして GUI ダイアログの作成が含まれます。または、AllocConsole を使用して新しいコンソール ウィンドウを割り当てます。ただし、GUI ダイアログにメッセージを表示する方が使いやすく、通常はコンソールに関連付けられているバージョン情報を表示するのに適しています。

以上がGo で `-ldflags -H=windowsgui` を使用するときにコマンド プロンプトに出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。