2013-03-01 99 views
6

我有一個腳本,我使用win32com與COM服務進行交互。它在程序已經打開時按預期工作。我使用win32com.client.dynamic.Dispatch連接到它,然後與應該已經打開的文檔進行交互。假設程序已經打開,我可以很容易地檢查文檔是否打開,但我不知道如何檢查程序是否已經打開。當我使用提到的Dispatch時,它只是啓動程序,如果它尚未打開,這不是我想要的。Python/win32com - 檢查程序是否打開

回答

10

嘗試win32com.client.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應用程序對象的新實例另一個方便的功能。