Поскольку я больше знаком с pywin32, это способ делать вещи выше с pywin32. Эти примеры кода предполагают, что вы знаете hwnd окна, которое вы хотите проверить
1) Проверка активного окна test_hwnd == win32gui.GetForegroundWindow()
даст вам логическое значение, независимо от того, является ли это окном переднего плана (мое понимание активного)
2) Список всех windows (сохранен в dict {hwnd:title}
) (измененная версия Как получить список имен каждого открытого окна? )
def get_all_windows():
windows_by_hwnd = {}
def winEnumHandler(hwnd, ctx):
title = win32gui.GetWindowText(hwnd)
if win32gui.IsWindowVisible(hwnd) and title:
windows_by_hwnd[hwnd] = title
win32gui.EnumWindows( winEnumHandler, None )
return windows_by_hwnd
3)
def move_by_offset(hwnd, x, y):
rect = win32gui.GetWindowRect(hwnd)
win32gui.MoveWindow(hwnd, rect[0]+x, rect[1]+y, rect[2]+x, rect[3]+y, True)
def move_to(hwnd, x, y):
rect = win32gui.GetWindowRect(hwnd)
win32gui.MoveWindow(hwnd, x, y, rect[2]-rect[0], rect[3]-rect[1], True)
4) Я предлагаю использовать один из множества интерфейсов командной строки Python, чтобы сделать windows "open with ..." что-то вроде os.system("c:/path/to/exe.exe c:/path/to/file.ending")
И вы здесь лучше использовать подпроцесс, так как он лучше обрабатывает ошибки, чем os, но в Stackoverflow достаточно ответов о том, как использовать подпроцесс. Вы, вероятно, в конечном итоге получите что-то вроде subprocess.call("c:/path/to/exe.exe c:/path/to/file.ending", shell=True)
, но, поскольку я не очень хорошо знаком с подпроцессом, я не могу сказать, что это хороший способ сделать это.
Надеюсь, это поможет вам.