python - 如何使用带通配符的 win32gui FindWindow

标签 python pywin32 findwindow

<分区>

我正在尝试查找 Microsoft excel 是否有一个打开的窗口

import win32ui
import time

def WindowExists(windowname):
    try:
        win32ui.FindWindow(None, windowname)

    except win32ui.error:
        return False
    else:
        return True

if WindowExists("filename - Microsoft Excel"):
    print "Program is running"
    time.sleep(10)
else:
    print "Program is not running"
    time.sleep(10)

如果我输入正确的文件名,这会起作用,但问题是我不知道文件名。 那么,当我只知道部分标题时,如何才能完成这项工作呢?

或者我必须搜索类名吗?如果是这样,我怎么知道类名 :)?

补充说明: 我确实知道文件名,但它附加了一个未知数字,类似于 filename88,并且每次运行该程序时都不同。

最佳答案

def find_filename(substring):
    import os
    import re
    files = os.listdir(os.getcwd())
    for file in files:
        search = re.search(substring, file)
        if search:
            filename = file
            break
    return filename

file = find_filename('stringyouwant')
WindowExists(file)

此函数将返回包含您需要的较短字符串的完整文件名 - 但是,只有当您要搜索的文件是该目录中唯一具有该子字符串的文件时,它才会起作用。如果你想要更健壮的东西,你应该修改正则表达式。

关于python - 如何使用带通配符的 win32gui FindWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334952/

相关文章:

python - 在 Win32 上使用 Python 下载受 NTLM/SSPI 保护的文件而不提示输入凭据?

python - excel 访问被 win32 python pywin32 拒绝

windows - Powershell 中的 FindWindow 给我 0(在 w11 22h2 FR 上): unattended character in the title of a cmd elevated console?

python - 通过python监控dbus消息

python - 非常奇怪的Python 3字节到字符串失败

python - 将 CPP exe 打印成 Python 脚本输入

c++ - 使用 FindWindowEx 的程序在 Server 2003 上停止工作,为什么?

python - 正则表达式的pattern.match不起作用

python - 有什么更好的方法可以在 Python 中从 Active Directory 域获取用户/组信息?

c# - 以编程方式单击 MessageBox 按钮