Я объединил информацию из нескольких источников и заставил это работать (Miniconda Python 3.6, Windows 10)
import win32gui
import win32con
def windowEnumHandler(hwnd, top_windows):
top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))
def bringToFront(window_name):
top_windows = []
win32gui.EnumWindows(windowEnumHandler, top_windows)
for i in top_windows:
# print(i[1])
if window_name.lower() in i[1].lower():
# print("found", window_name)
win32gui.ShowWindow(i[0], win32con.SW_SHOWNORMAL)
win32gui.SetForegroundWindow(i[0])
break
# Test with notepad
if __name__ == "__main__":
winname = "notepad"
bringToFront(winname)
Обработчик не оптимален; он выплевывает различные процессы, которые не являются windows на панели задач. Однако, пока ваш window_name
указан c, я не думаю, что у вас возникнут проблемы. Если вы удалите break
, все совпадения будут «открыты».
Источники: Мышь и Python Блог
Другой вопрос StackOverflow