【问题标题】:How to control the size of the Windows shell window from within a python script?如何从 python 脚本中控制 Windows shell 窗口的大小?
【发布时间】:2010-09-05 14:16:56
【问题描述】:

当从 Windows 启动脚本类型的 python 文件时,您会得到一个运行脚本的 windows shell 类型的窗口。脚本如何确定并设置/控制所述窗口的窗口大小、屏幕缓冲区大小和窗口位置?我怀疑这可以用 pywin32 模块完成,但我找不到方法。

【问题讨论】:

  • 不清楚您是否要求 桌面上 的窗口位置(这就是我正在寻找的)或关于ScreenBuffer 的窗口位置(什么可以使用下面给出的SetConsoleWindowInfo 函数来完成)。

标签: python windows-shell pywin32


【解决方案1】:

您可以使用 win32 API 中的 SetConsoleWindowInfo 函数来执行此操作。以下应该有效:

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))

更新:

窗口位置基本上是上面的rect 变量通过left, top, right, bottom 参数设置的。实际大小来自这些参数:

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

要将屏幕缓冲区大小设置为 100 行 x 80 列,您可以使用SetConsoleScreenBufferSize API:

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

【讨论】:

  • 这适用于设置窗口大小。您还可以提供屏幕缓冲区大小和窗口位置的代码吗?我对 ctypes 和 win32 API 的了解为零。
  • STDOUT 实际上不应该是 -11 吗? msdn.microsoft.com/en-us/library/ms683231(VS.85).aspx
  • @user136036 感谢您指出这一点并提供参考;现已修复。
  • 我认为您需要添加 import ctypes.wintypes as wintypes 之类的内容才能使 rect = wintypes.SMALL_RECT(0, 50, 50, 80) 工作...
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2021-12-15
  • 1970-01-01
  • 2015-12-15
  • 1970-01-01
  • 2018-07-19
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多