如何使用Python最大化特定窗口?

Bru*_*dy' 8 python windows

我正在尝试使用python最大化特定窗口...

这是交易:我有一个脚本打开2个firefox窗口(selenium rc),我需要最大化第二个窗口,最后一个打开...我怎么能这样做?

我正在使用这个命令

window = win32gui.GetForegroundWindow()
win32gui.MoveWindow(window, 0, 0, 1440, 900, True)
Run Code Online (Sandbox Code Playgroud)

这是完美的,但只有焦点窗口...和firefox女巫的第二个窗口打开脚本没有集中...

ars*_*ars 16

这应该工作

import win32gui, win32con

hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
Run Code Online (Sandbox Code Playgroud)

  • TypeError:函数正好需要3个参数(给定2个) (3认同)
  • 对不起,它是`ShowWindow`而不是`SetWindowLong` - 上面更新了 (2认同)

Sim*_*mon 8

如果您不想安装单独的模块,可以使用内置的ctypes模块.除了您与DLL本身交互并且不必安装任何其他内容之外,其用法与上面接受的答案没有什么不同.

首先是代码:

import ctypes

user32 = ctypes.WinDLL('user32')

SW_MAXIMISE = 3

hWnd = user32.GetForegroundWindow()

user32.ShowWindow(hWnd, SW_MAXIMISE)
Run Code Online (Sandbox Code Playgroud)

现在说明一下:

  • 获取ctypes模块.
  • 获取适当的运行时,以供参考使用Windows文档并查看"要求".
  • SW_MAXIMISE值设置为3,因为这是将窗口设置为最大值的值(在文档中指出).
  • hWnd = user32.GetForegroundWindow()检索前景窗口(所有其他窗口前面的窗口) - 有关该功能的完整说明,请参见此处.
  • 使用ShowWindow()控制窗口显示状态.这需要两个参数,窗口的句柄(上面定义为hWnd)以及如何看到窗口(设置为3 SW_MAXIMISE = 3).您可以查看文档以获取各种选项的更完整列表.

你当然可以将它放入一个功能中,以便于使用.


另一种方法:

由于在这种情况下不必担心跨平台,因此您可以构建C或C++扩展.

优点:

挫折:

  • 需要编译(因为它只在Windows上,你只需要担心编译x32位和x64位)
  • 必须是一个模块(即你不能在一个文件中集成它)
  • 需要最低限度的C或C++知识以及Python api本身

要调用的实际函数应该不那么困难:

static PyObject * max_win(PyObject *self, PyObject *args) {
    ShowWindow(GetForegroundWindow(), SW_MAXIMISE);
    return Py_BuildValue(""); // Return nothing
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只是所需实际代码的一部分