Python / win32com-Проверьте, открыта ли программа

У меня есть скрипт, где я использую win32com для взаимодействия с COM-службой. Он работает по назначению, когда программа уже открыта. Я подключаюсь к нему с помощью win32com.клиент.активный.Отправка, а затем взаимодействовать с документом, который уже должен быть открыт. Предполагая, что программа уже открыта, я могу легко проверить, открыт ли документ, но я не уверен, как проверить, открыта ли программа или нет. Когда я использую упомянутую отправку, она просто запускает программу, если она еще не открыта, что это не то, чего я хочу.

1 ответов


попробовать win32com.клиент.GetActiveObject() метод. Это то, что я использую в некоторых удобных функций, которые я написал, это для Excel:

def Excel(visible=True):
    '''Get running Excel instance if possible, else 
    return new instance. 
    '''
    try: 
        excel = win32com.client.GetActiveObject("Excel.Application")
        print("Running Excel instance found, returning object")

    except:
        excel = new_Excel(visible=visible)
        print("No running Excel instances, returning new instance")

    else:
        if not excel.Workbooks.Count:
            excel.Workbooks.Add(1)
        excel.Visible = visible

    return excel

new_Excel - это еще одна удобная функция для открытия новых экземпляров объекта приложения Excel.