Как запустить скомпилированный скрипт Python скрыто при передаче флага при запуске?

У меня есть консольная программа для рассылки которая скомпилирована в exe файл через PyInstaller. При открытии она открывает консоль и выводит сведения о работе в неё, но я хочу добавить флаг "-s" при подаче которого программа будет открываться без отображения консоли. Подскажите как это можно реализовать в Python 3.11?


Ответы (3 шт):

Автор решения: Sohibnut

Попробуйте

--hide-console hide-early
→ Ссылка
Автор решения: Seffel

Всё оказалась не так уж и сложно.
Создаём обработчик аргументов, и к аргументу -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)
→ Ссылка
Автор решения: Fox Fox

Есть ещё вариант:

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 по умолчанию.

→ Ссылка