Подведите окно к фокусу с python периодически - PullRequest
0 голосов
/ 13 апреля 2020
import win32gui
import time

def windowEnumerationHandler(hwnd, top_windows):
    top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))
if __name__ == "__main__":
    top_windows = []
    win32gui.EnumWindows(windowEnumerationHandler, top_windows)
    for i in top_windows:
        print(i)
        if "zoom" in i[1].lower():
            print(i, 'is found')
            while True:
                win32gui.ShowWindow(i[0],5)
                win32gui.SetForegroundWindow(i[0])
                time.sleep(1)

Я слышал, что зум контролирует, не находится ли окно в фокусе более 30 секунд, поэтому я работал над способом повторного выброса его вперед, пока я работаю над другими проектами. Проблема в том, что код вызывает исключение

0, 'SetForegroundWindow', 'No error message is available'

, и окно просто мигает желтым цветом. Та же проблема с chrome. Буду признателен за помощь здесь:)

1 Ответ

0 голосов
/ 13 апреля 2020

У меня была такая же проблема, когда я пытался SetForegroundWindow(hwnd). Значок на панели задач просто мигал, но программа осталась в фоновом режиме. Как вы можете прочитать здесь: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-setforegroundwindow?redirectedfrom=MSDN

"Приложение не может принудительно заставить окно на передний план, пока пользователь работает с другим окном. Вместо этого Windows мигает кнопка на панели задач окно для уведомления пользователя. "

Для меня помогло:

import win32gui, win32com.client     


    shell = win32com.client.Dispatch("WScript.Shell")
    shell.SendKeys('%')
    win32gui.SetForegroundWindow(hwnd)
...