Как закрыть два windows одного приложения, используя python? - PullRequest
1 голос
/ 09 февраля 2020

Я работаю над программой автоматизации в python, у меня на экране открыто два windows cmd. Я хочу, чтобы мой код закрывал только первое окно и оставлял второе окно как есть. Как заставить мой код определять, какое окно закрывать? Чтобы закрыть окно, я использую пакет клавиатуры в python, код пишет exit в окне cmd и генерирует клавишу ввода, чтобы выйти из окна.

keyboard.write("exit") # closes main cmd window
keyboard.press_and_release("enter") # window closes

1 Ответ

0 голосов
/ 09 февраля 2020

Если вы используете Windows ОС, вы можете использовать библиотеки pywin32 и win32 gui, которые содержат модули win32 gui и win32con, которые помогут найти через windows соответствующее имя и получить номер дескриптора окна. (HWND). Получив hwnd, вы можете затем закрыть первое открытое окно.

Сначала вам нужно будет установить pywin32 и wind32 gui:

pip install win32gui
pip install pywin32

Вот код для закрытия первого окно командной строки:

import win32gui
import win32con

def windowEnumerationHandler(hwnd, top_windows):
    top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))

def return_window_hwnd(window_name):
    '''Return list window handles of that match a given window name'''
    windows = []
    win32gui.EnumWindows(windowEnumerationHandler, windows)
    print(windows) #[(67084, 'Command Prompt'), (65868, ''), (722426, 'Command Prompt'), ...]
    hwnds = []
    for wind in windows:
        if window_name in wind[1] or window_name == wind[1]:
            hwnds.append(wind[0])
    return hwnds

# search for Command Prompt windows and return the list of hwnd
command_hwnd_arr = return_window_hwnd('Command Prompt')

# if more than 1 is window open, close the first opened window
if len(command_hwnd_arr) > 1:
    window_handle_to_close = command_hwnd_arr[1]
    win32gui.PostMessage(window_handle_to_close, win32con.WM_CLOSE, 0, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...