是否可以在运行时检测Go二进制文件是否用-H = windowsgui编译

我构建了一个工具,该工具可以在启动时通过标志-tray的情况下从控制台运行或在系统托盘中运行。仅运行没有构建标志的go build <list of go files>将创建一个可以在系统托盘中运行的二进制文件,但它也会产生一个控制台窗口。如果我通过了构建标志-H=windowsgui,那么控制台窗口将被隐藏,但是我仍然需要通过-tray才能使其真正在系统托盘中运行。

在运行时是否有一种方法可以检测到二进制文件是使用标志-H=windowsgui构建的,因此我可以自动执行正确的操作并启用托盘,而无需使用-tray标志通过了?

z979581569 回答:是否可以在运行时检测Go二进制文件是否用-H = windowsgui编译

According to the Go source,似乎在链接时设置了Subsystem的{​​{1}}。

因此,您可以使用debug/pe来获取它。

以下代码在用OptionalHeader编译时将打印it is windows GUI,否则将打印go build -ldflags "-H windowsgui"

请注意,it is windows CUI可能返回符号链接的路径,因此可能不可靠。请参阅:the document of os.Executable()

os.Executable()
本文链接:https://www.f2er.com/3119411.html

大家都在问