2013-03-01 11 views
6

मेरे पास एक स्क्रिप्ट है जहां मैं एक COM सेवा के साथ बातचीत करने के लिए win32com का उपयोग करता हूं। यह तब तक काम करता है जब कार्यक्रम पहले से ही खुला रहता है। मैं Win32com.client.dynamic.Dispatch का उपयोग करके उससे कनेक्ट करता हूं, फिर उस दस्तावेज़ से बातचीत करता हूं जो पहले से ही खुला होना चाहिए। मान लीजिए कि कार्यक्रम पहले से ही खुला है, मैं आसानी से जांच सकता हूं कि कोई दस्तावेज़ खुला है या नहीं, लेकिन मुझे यकीन नहीं है कि प्रोग्राम कैसे पहले से खुला है या नहीं। जब मैं निर्दिष्ट डिस्पैच का उपयोग करता हूं, तो यह प्रोग्राम शुरू होता है अगर यह पहले से खुला नहीं है, जो मैं नहीं चाहता हूं।पायथन/win32com - जांचें कि प्रोग्राम खुला है

उत्तर

10

win32com.client.GetActiveObject() विधि का प्रयास करें।

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 के लिए इस एक का उपयोग करें, है।

संबंधित मुद्दे