Как использовать win32gui FindWindow с Wildcard

Я пытаюсь найти открытое окно 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, и он меняется каждый раз, когда я запускаю программу.

2 ответа

Решение
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)

Эта функция вернет полное имя файла, которое содержит более короткую строку, которая вам требуется, однако она будет работать только в том случае, если искомый файл является единственным файлом с этой подстрокой в ​​этом каталоге. Если вы хотите что-то более надежное, вы должны изменить регулярное выражение.

Нашел ответ, который я действительно искал Здесь

Ответ рабов также был полезен для меня, спасибо!

Другие вопросы по тегам