2010-09-05 3 views
2

При запуске скриптового типа python из Windows вы получаете окно типа оболочки Windows, в котором запускается скрипт. Как скрипт определяет, а также устанавливает/управляет размером окна, размером буфера экрана и расположением окна указанного окна ?. Я подозреваю, что это можно сделать с помощью модуля pywin32, но я не могу найти, как это сделать.Как контролировать размер окна оболочки Windows из сценария python?

ответ

9

Вы можете сделать это, используя функцию SetConsoleWindowInfo из API win32. Следующие должны работать:

from ctypes import windll, byref 
from ctypes.wintypes import SMALL_RECT 

STDOUT = -11 

hdl = windll.kernel32.GetStdHandle(STDOUT) 
rect = wintypes.SMALL_RECT(0, 50, 50, 80) # (left, top, right, bottom) 
windll.kernel32.SetConsoleWindowInfo(hdl, True, byref(rect)) 

UPDATE:

положение окна в основном то, что rect переменная выше множеств через left, top, right, bottom аргументов. Фактический размер выводится из этих аргументов:

width = right - left + 1 
height = bottom - top + 1 

Чтобы установить размер буфера экрана, скажем, 100 строк на 80 столбцов, вы можете использовать SetConsoleScreenBufferSize API:

bufsize = wintypes._COORD(100, 80) # rows, columns 
windll.kernel32.SetConsoleScreenBufferSize(h, bufsize) 
+0

Это работает для настройки окна Размер. Можете ли вы также предоставить код для размера буфера экрана и положения окна. Мои знания о типах ctypes и win32 API равны нулю. – LtPinback

+0

@LtPinback: см. Обновление выше. – ars

+0

Должен ли STDOUT на самом деле быть -11? https://msdn.microsoft.com/en-us/library/ms683231(VS.85).aspx – user136036