如何使用带有通配符的win32gui FindWindow

时间:2014-01-24 14:18:53

标签: 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)

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

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

额外说明: 我知道文件名,但它附有一个未知数字,类似于filename88,每次运行程序时都会有所不同。

2 个答案:

答案 0 :(得分:1)

找到答案我实际上正在寻找Here

rabs的答案对我也有帮助,谢谢!

答案 1 :(得分:-1)

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)

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