Как создать исполняемый файл из Golang, который при запуске не открывает окно консоли?
33646 просмотра
3 ответа
Я создал приложение, которое хочу запускать незаметно в фоновом режиме (без консоли). Как мне это сделать?
(Это для Windows, протестировано на Windows 7 Pro 64 bit)
Автор: Bart Silverstrim Источник Размещён: 12.11.2019 09:26Ответы (3)
49 плюса
Документация, найденная в Интернете, говорит, что я могу скомпилировать что-то вроде:
go build -ldflags -Hwindowsgui filename.go
Но это дает ошибку: unknown flag -Hwindowsgui
С более свежими (1.1?) Версиями компилятора это должно работать:
go build -ldflags -H=windowsgui filename.go
Когда я продолжил поиск, я обнаружил, что официальная документация должна быть обновлена в ближайшее время, но в то же время есть много примеров более старых примеров, где есть эта ошибка.
Автор: Bart Silverstrim Размещён: 23.04.2014 04:4336 плюса
Использование Go версии 1.4.2
go build -ldflags "-H windowsgui"
Автор: Shannon Matthews Размещён: 01.07.2015 06:19Из документов Go:
go build [-o output] [-i] [build flags] [packages]
-ldflags 'flag list'
аргументы для передачи при каждом вызове компоновщика 5l, 6l или 8l.
9 плюса
Если вы не хотите вводить длинные инструкции по сборке каждый раз во время отладки, но по-прежнему хотите, чтобы окно консоли исчезало, вы можете добавить этот код в начале вашей основной функции:
package main
import "github.com/gonutz/w32"
func main() {
console := w32.GetConsoleWindow()
if console != 0 {
_, consoleProcID := w32.GetWindowThreadProcessId(console)
if w32.GetCurrentProcessId() == consoleProcID {
w32.ShowWindowAsync(console, w32.SW_HIDE)
}
}
}
Теперь вы можете скомпилировать go build
. Ваша программа на короткое время покажет окно консоли при запуске, а затем сразу же скроет его.
Вопросы из категории :
- console Console.WriteLine и общий список
- console Как запустить интерактивную консоль для Perl?
- console Capturing console output from a .NET application (C#)
- console Как получить консольный вывод в C ++ с помощью программы Windows?
- console Как скомпилировать и запустить C / C ++ в консоли Unix / Mac?
- console Перенаправить консольный вывод в текстовое поле в отдельной программе
- console Зеркальное отображение вывода консоли в файл
- console Как стереть напечатанные символы в консольном приложении (Linux)?
- console Как очистить консоль переводчика?
- console Win32 программирование, скрывающее окно консоли
- go похожее на getopt поведение в Go
- go Как перевернуть строку в Go?
- go Как эффективно объединить строки в Go?
- go Как вы получаете вывод системной команды в Go?
- go Необязательные параметры?
- go Как проверить, содержит ли карта ключ в Go?
- go Как реализовать BitSet с Go?
- go Почему Go такой медленный (по сравнению с Java)?
- go Есть ли реализация очереди?
- go Проверка наличия готового к чтению канала с помощью Go