2013-03-01 71 views
6

Tôi có một tập lệnh mà tôi sử dụng win32com để tương tác với dịch vụ COM. Nó hoạt động như dự định khi chương trình đã được mở. Tôi kết nối với nó bằng cách sử dụng win32com.client.dynamic.Dispatch, sau đó tương tác với một tài liệu đã được mở. Giả sử chương trình đã mở, tôi có thể dễ dàng kiểm tra xem một tài liệu có đang mở hay không, nhưng tôi không chắc chắn cách kiểm tra xem chương trình đã mở hay chưa. Khi tôi sử dụng công văn được đề cập, nó chỉ bắt đầu chương trình nếu nó chưa được mở, đó không phải là những gì tôi muốn.Python/win32com - Kiểm tra xem Chương trình có đang mở

Trả lời

10

thử phương thức win32com.client.GetActiveObject(). Đây là những gì tôi sử dụng trong một số chức năng thuận tiện tôi đã viết, chương trình này cho 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 chỉ là một chức năng thuận tiện cho việc mở trường mới của các đối tượng ứng dụng Excel.

Các vấn đề liên quan