如果打开另一个程序,如何制作一个打开程序的背景脚本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (44)

为了自动化打开一组相关应用程序的过程,Python脚本需要1)始终在启动时在后台运行。2)如果触发软件已打开,则每隔几秒检查一次。3)启动相关的应用程序。4)在应用程序中执行任何操作即为我创建新项目。

我以前没有这方面的经验,但这与优化我的Windows PC上的一些东西有关。

任何有知识和礼貌帮助的人,时间,请这样做。谢谢。

提问于
用户回答回答于

让我们逐步解决您的问题: -

始终在启动时在后台运行。

  • 为此,您必须将代码保存为。pyw文件(注意到w 最后)。一个普通的区别.py的一个.pyw文件是,.py执行调用控制台(命令行〜),相当于工具和执行的前景,在另一方面.pyw文件在任何时候在后台运行(即控制台将不会显示)。因此,它不会要求您始终手动打开控制台来执行脚本,因为脚本将始终在后台运行。
  • 将此python文件复制到操作系统的启动文件夹中(该文件夹中的任何文件将在操作系统启动后自动执行)。这将是什么操作系统启动时,您的python文件将自动开始在后台执行,因此您不必在每次系统启动时手动启动它。而且由于它在后台,它不会干扰你的工作。(如果您使用的是Windows操作系统,可以通过shell:common startup在运行中键入并按Enter 键来访问您的启动文件夹 )(将文件添加到此文件夹需要root权限。如果您无法访问该文件夹,那么C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp它的默认路径是窗户10。

检查是否打开了所需的程序?

为此使用此代码: -

import win32com.client
import os

# This infinite loop ensures that the program run's at all times 
while 1:

    # Halting the execution of the program for 5 seconds
    # This will act as a bottleneck to reduce resource usage of this program
    os.sleep(5)

    wmi=win32com.client.GetObject('winmgmts:')

    # change the value of this variable with your application name
    program_name = "chrome.exe"

    for p in wmi.InstancesOf('win32_process'):    
        if p.Name == program_name:
            # Add code for launching your desired application from here 

上面的代码将检查所有当前正在运行的进程,并尝试将它们的名称与program_name变量匹配。使用要检查,正在运行或未运行的程序的名称更改变量program_name的值。(此过程将每五秒钟发生一次)

笔记:-

  1. 如果您运行的程序的多个实例(例如,chrome.exe 单独运行多个进程),则p.Name == program_name对于给定名称将多次为true。
  2. 程序名称区分大小写。即chrome.exe和Chrome.exe的处理方式不同,因此在为program_name变量提供值时要注意这一点 。

启动关联的应用程序

有十几种方法可以在您的操作系统中打开您选择的应用程序。选择取决于您的程序执行后您愿意做什么。

我建议您使用Popensubprocess作为用例,因为您希望在打开它之后为应用程序提供不同的输入。

在应用程序中执行任何操作即为我创建新项目。

这个问题肯定是你要找的。有不同的方法来实现这一点,选择/路径取决于用例(如前一个)。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励