Voici une fonction pour maximiser la fenêtre de la console actuelle. Il utilise ctypes pour appeler les fonctions WinAPI. D'abord, il appelle GetLargestConsoleWindowSize
afin de comprendre la taille de la fenêtre, avec l'option de spécifier un nombre de lines
qui dépasse cette valeur pour obtenir un tampon de retour. Pour faire le travail de redimensionnement du tampon d'écran, il appelle simplement mode.com via subprocess.check_call
. Enfin, il obtient le handle de la fenêtre de la console via GetConsoleWindow
et appelle ShowWindow
pour le maximiser.
import os
import ctypes
import msvcrt
import subprocess
from ctypes import wintypes
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
user32 = ctypes.WinDLL('user32', use_last_error=True)
SW_MAXIMIZE = 3
kernel32.GetConsoleWindow.restype = wintypes.HWND
kernel32.GetLargestConsoleWindowSize.restype = wintypes._COORD
kernel32.GetLargestConsoleWindowSize.argtypes = (wintypes.HANDLE,)
user32.ShowWindow.argtypes = (wintypes.HWND, ctypes.c_int)
def maximize_console(lines=None):
fd = os.open('CONOUT$', os.O_RDWR)
try:
hCon = msvcrt.get_osfhandle(fd)
max_size = kernel32.GetLargestConsoleWindowSize(hCon)
if max_size.X == 0 and max_size.Y == 0:
raise ctypes.WinError(ctypes.get_last_error())
finally:
os.close(fd)
cols = max_size.X
hWnd = kernel32.GetConsoleWindow()
if cols and hWnd:
if lines is None:
lines = max_size.Y
else:
lines = max(min(lines, 9999), max_size.Y)
subprocess.check_call('mode.com con cols={} lines={}'.format(
cols, lines))
user32.ShowWindow(hWnd, SW_MAXIMIZE)
Windows CMD ne peut pas faire le plein écran de toute façon, AFAIK –
Cela est incorrect. Je peux appuyer sur le bouton maximiser sur CMD et ça marche bien. Quand je dis en plein écran, je ne veux pas dire que le plein écran prend du temps. Je veux dire plein écran fenêtré. Désolé pour la confusion. –
Copie possible de [Comment faire un fichier batch en plein écran?] (Http://stackoverflow.com/questions/26626068/how-to-make-a-batch-file-fullscreen) –