Функция SetForegroundWindow не функционирует без монитора
Я пытаюсь сделать автовыдачу из магазина моего сервера. Перед вводом самих команд выдачи я делаю окно игры активным, но ввиду того, что данный скрипт запущен на моем втором компе (под операцией Windows), у которого нет монитора (тем более включенного), при отключении и даже сворачивании удаленного рабочего стола функция SetForegroundWindow
перестаёт работать. Я попробовал сделать виртуальный монитор с помощью usbmmidd_v2
, но это никак не повлияло. Что не так? Вот мой код для фокусировки на нужном окне:
import logging
import win32gui
import win32con
import win32com.client
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
logger = logging.getLogger(__name__)
shell = win32com.client.Dispatch("WScript.Shell")
async def activate_scum_window() -> bool:
"""Активирует окно SCUM и делает его фокусным."""
try:
logger.info('Поиск окна SCUM...')
hwnd = win32gui.FindWindow(SCUM_WINDOW_CLASS, SCUM_WINDOW_TITLE)
if not hwnd:
logger.warning('Окно SCUM не найдено')
return False
logger.info('Активация окна SCUM')
shell.SendKeys('%')
win32gui.BringWindowToTop(hwnd)
win32gui.SetForegroundWindow(hwnd)
win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
return True
except Exception as ex:
logger.error(ex)
return False
Источник: Stack Overflow на русском