【问题标题】:Changing the position of the console window with Python (Windows)使用 Python (Windows) 更改控制台窗口的位置
【发布时间】:2018-01-31 08:20:51
【问题描述】:

是否可以通过python改变Windows控制台的位置? 如果没有,有什么解决方法吗?

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

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

【问题讨论】:

  • 第一步,获取控制台的窗口句柄。第二步,移动窗口。移动窗口的程序是使用Popen 的程序还是控制台中的程序?
  • 最好是使用Popen的那个(但如果你认为从“内部”做会更容易,那没问题)
  • 通过AttachConsole 临时附加到孩子的控制台。调用GetConsoleWindow 获取控制台窗口句柄。然后通过FreeConsole 分离。然后调用MoveWindowSetWindowPos 移动控制台窗口并调整其大小。
  • 你能用一个例子把它放在一个答案上吗?试过了,但我觉得这对我来说有点太多了,没有例子就无法理解......(对不起,还在学习python的基础知识)

标签: python windows windows-console


【解决方案1】:

我改编自an answer by 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2014-11-12
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多