Как запустить скомпилированный скрипт Python скрыто при передаче флага при запуске?
У меня есть консольная программа для рассылки которая скомпилирована в exe файл через PyInstaller. При открытии она открывает консоль и выводит сведения о работе в неё, но я хочу добавить флаг "-s" при подаче которого программа будет открываться без отображения консоли. Подскажите как это можно реализовать в Python 3.11?
Ответы (3 шт):
Всё оказалась не так уж и сложно.
Создаём обработчик аргументов, и к аргументу -s
привязываем следующую функцию:
def Hide():
import win32gui, win32con
console = win32gui.GetForegroundWindow()
win32gui.ShowWindow(console, win32con.SW_HIDE)
После её выполнения окно консоли будет мгновенно скрыто.
Для повторного отображения консоли используем функцию:
def Show():
import win32gui, win32con
console = win32gui.GetForegroundWindow()
win32gui.ShowWindow(console, win32con.SW_SHOW)
Есть ещё вариант:
import ctypes as ctypes
def show_console(mode=0): ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), mode)
Если mode=0, консоль скрыта, если mode=3, консоль показана и максимизирована. Есть и другие варианты параметра для показа консоли, см. документацию. Для того, чтоб попытаться вообще замаскировать, нужно привлекать при сборке опцию --hide-console hide-early. Однако, я не уверен, что это сильно поможет. Всё равно на экране что-то "дёрнется", особенно на слабых компах. Надеюсь, понятно, что в моём варианте вы можете передавать свой флаг в такую функцию. Передавайте 0 или 3, но в этому случае не назначайте mode по умолчанию.