Как я могу максимизировать конкретное окно с Python? - PullRequest
7 голосов
/ 07 мая 2010

Я пытаюсь максимизировать конкретное окно с помощью Python ...

Вот сделка: у меня есть скрипт, который открывает 2 окна Firefox (селен RC), и мне нужно максимизировать второе окно, последнее, что открывается ... Как я могу это сделать?

Я использую эту команду

window = win32gui.GetForegroundWindow()
win32gui.MoveWindow(window, 0, 0, 1440, 900, True)

, которая отлично работает, но только с окном фокусировки ... ивторое окно Firefox Witch открывается сценарием не фокусируется ...

Ответы [ 2 ]

13 голосов
/ 08 мая 2010

Это должно работать

import win32gui, win32con

hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
6 голосов
/ 21 апреля 2018

Если вы не хотите устанавливать отдельные модули, вы можете использовать встроенный модуль ctypes .Использование ничем не отличается от принятого ответа выше, за исключением того, что вы взаимодействуете с самими библиотеками DLL и не должны устанавливать ничего другого.

Сначала вот код:

import ctypes

user32 = ctypes.WinDLL('user32')

SW_MAXIMISE = 3

hWnd = user32.GetForegroundWindow()

user32.ShowWindow(hWnd, SW_MAXIMISE)

Теперь объяснение:

  • Получить модуль ctypes.
  • Получить соответствующую среду выполнения, для справки используйте документацию Windows и посмотрите в разделе «Требования».
  • Установите значение SW_MAXIMISE равным 3, поскольку это значение (указанное в документации ), чтобы установить максимальное окно.
  • hWnd = user32.GetForegroundWindow() возвращает окно переднего плана (окно, которое находится перед всеми остальными) - см. здесь для полного описания функции.
  • Используйте ShowWindow() для управления состоянием отображения окон.Это принимает два аргумента: дескриптор окна (определенный выше как hWnd) и то, как окно должно быть видно (установите 3 в SW_MAXIMISE = 3).Вы можете просмотреть документацию для более полного списка различных опций.

Вы, конечно, можете включить это в функцию, чтобы упростить ее использование.


Другой подход:

Поскольку в этом случае не нужно беспокоиться о кроссплатформенности, вы можете вместо этого создать расширение C или C ++.

Преимущества:

Недостатки:

  • необходимо скомпилировать (поскольку это только для Windows, вам нужно беспокоиться только о компиляции для x32 и x64 бит)
  • must быть модулем (т.е. вы не можете интегрировать его в один файл)
  • требует минимального уровня знаний C или C ++, а также самого Python API

Фактическийвызываемая функция не должна быть такой сложной:

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

Обратите внимание, что это только фрагменткод необходим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...