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

Susan Sarandon
リリース: 2024-11-27 18:44:12
オリジナル
467 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート