python - 需要将 Windows 应用程序(在我的例子中是 Excel)带到前台 - python

标签 python windows automation

我正在创建一个 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.exe 740 \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 \r\r\n'

最佳答案

如果您使用的是所有 Microsoft Office 应用程序,object.Activate() 方法很可能会起作用。这是也可用于第 3 方语言的 Microsoft VBA 和 C# 应用程序调用的一部分。下面的代码在我的 Windows 10 环境、带有 pywin32 的 python 3.7 和 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

关于python - 需要将 Windows 应用程序(在我的例子中是 Excel)带到前台 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821862/

相关文章:

R自动将图表/图形写入文件

python - 在qml中捕获信号参数

python - Snowflake中的异步查询执行: SQL execution canceled

python - Re.sub 不适合我

windows - 什么是 Windows 命令行 EXE 的 "side-by-side configuration",我该如何更正它?

c - Winsock 接受超时

linux - GTK 文件打开对话框样式

java - 断言 true,来自两种方法的变量

linux - 跨平台(主要是Linux)开发项目的持续集成

Python:群图覆盖箱形图中的中线