使用Python(Windows)更改控制台窗口的位置

6

是否可以通过Python更改Windows控制台的位置?

如果不行,有没有任何解决方法?

我不知道您是否需要任何特定信息,但以防万一:我正在使用Windows 8.1(64x),Python 3.5.0,控制台是通过Popen生成的,主要目标是将其移动到右上角。

如果需要任何信息,请告诉我。


步骤1,获取控制台的窗口句柄。步骤2,移动窗口。移动窗口的程序是使用Popen的程序还是在控制台中的程序? - Mark Ransom
最好使用Popen来完成(但如果你认为从“内部”处理会更容易,那也没问题)。 - ArsonFG
1
通过 AttachConsole 暂时连接到子控制台。调用 GetConsoleWindow 获取控制台窗口句柄。然后通过 FreeConsole 分离。接下来调用 MoveWindowSetWindowPos 来移动和调整控制台窗口大小。 - Eryk Sun
请问您能否给出一个带有示例的答案?我尝试过了,但是我认为没有示例我很难理解...(抱歉,我还在学习Python的基础知识) - ArsonFG
1个回答

4
我从NYMK的答案中进行了修改。这段代码可以移动和调整单个命令提示符窗口(由CMD打开)。它很简单,不处理错误、多个命令提示符窗口或命令行。
import win32gui

appname = 'Command Prompt'
xpos = 50
ypos = 100
width = 800
length = 600

def enumHandler(hwnd, lParam):
    if win32gui.IsWindowVisible(hwnd):
        if appname in win32gui.GetWindowText(hwnd):
            win32gui.MoveWindow(hwnd, xpos, ypos, width, length, True)


win32gui.EnumWindows(enumHandler, None)

要获取完整的命令行准备 - 尝试:

import win32gui
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("app_name", type=str, default='Command Prompt', help="The window name")
parser.add_argument("xpos", type=int,  default=0, help="x position: 0 or greater")
parser.add_argument("ypos", type=int,  default=0, help="y position: 0 or greater")
parser.add_argument("width", type=int, default=100, help="window width: 10 or greater")
parser.add_argument("length", type=int, default=100, help="window length: 10 or greater")

args = parser.parse_args()

appname = args.app_name
xpos = args.xpos
ypos = args.ypos
width = args.width
length = args.length


def enumHandler(hwnd, lParam):
    if win32gui.IsWindowVisible(hwnd):
        if appname in win32gui.GetWindowText(hwnd):
            win32gui.MoveWindow(hwnd, xpos, ypos, width, length, True)


win32gui.EnumWindows(enumHandler, None)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接