定期使用 python 使窗口聚焦

Posted

技术标签:

【中文标题】定期使用 python 使窗口聚焦【英文标题】:Bring window to focus with python periodically 【发布时间】:2020-04-13 01:10:14 【问题描述】:
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】:

我在尝试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)

【讨论】:

以上是关于定期使用 python 使窗口聚焦的主要内容,如果未能解决你的问题,请参考以下文章

除非主窗口未聚焦,否则不会更新 QLabel

如何聚焦光线或如何仅在 pygame 中绘制窗口的某些圆形部分?

Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行

FLTK:窗口聚焦在 MacOS 上时的事件

如何检查 Chrome 窗口是不是聚焦?

如何使 div 及其所有后代无法聚焦