Необходимо вывести приложение Windows (Excel в моем случае) на передний план - Python - PullRequest
1 голос
/ 30 июня 2019

Я создаю скрипт автоматизации Windows. Мне нужно вывести приложение Excel на передний план. Я могу открыть приложение Excel и получить список запущенных подпроцессов. Но я не уверен, как приложение Excel на передний план. Пожалуйста, помогите

import subprocess
from win32com.client import Dispatch

xl = Dispatch("Excel.Application")
xl.Visible = True 

cmd = 'WMIC PROCESS get Caption,Commandline,Processid'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
    print(line)

У меня открывается список приложений, но мне нужно вывести Excel на передний план. Пожалуйста, помогите мне, как это сделать.

b'EXCEL.EXE "C: \ Program Files \ Microsoft Office \ root \ Office16 \ EXCEL.EXE"
b'SearchFilterHost.exe740 \ r \ r \ n 'b'python.exe C: \ Users \ arvin \ AppData \ Local \ Programs \ Python \ Python37-32 \ python.exe \ r \ r \ n 'b'conhost.exe \ ?? \ C: \ WINDOWS \ system32 \ conhost.exe 0x4 15724 \ r \ r \ n 'b'cmd.exe C: \ WINDOWS \ system32 \ cmd.exe / c "WMIC PROCESS get Caption, Commandline, Processid"18084 год - 1008 *

1 Ответ

3 голосов
/ 30 июня 2019

Если вы используете все приложения Microsoft Office, скорее всего, object.Activate () метод будет работать. Это часть вызовов приложений Microsoft VBA и C #, которые также доступны для сторонних языков. Приведенный ниже код был протестирован в моей среде Windows 10, python 3.7 с pywin32 и MS-Office 2013.

####### Activate one excel file ##############
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb1 = excel.Workbooks.Open(r'C:\python\so\sheet1.xlsx')
wb2 = excel.Workbooks.Open(r'C:\python\so\sheet2.xlsx')
wb3 = excel.Workbooks.Open(r'C:\python\so\sheet3.xlsx')    
excel.Visible = True

# This will open 3 workbooks with wb1 on top.

excel.Application.ActiveWorkbook.Name
# Prints name of currently active workbook, i.e., the one on top.

wb3.Activate()  # puts workbook3 on top
wb2.Activate()  # puts workbook2 on top

### You may need to install pywin32.
### pip install pywin32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...