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

时间:2019-06-25 00:13:54

标签: python-3.x

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

我对此没有任何经验,但这与优化Windows pc上的某些内容有关。

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

1 个答案:

答案 0 :(得分:0)

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

  

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

  • 为此,您必须将代码另存为。pyw文件(请注意w 到底)。常规.py.pyw文件之间的区别 就是说.py调用控制台(〜命令行)的等效工具 执行并在前台执行,另一方面,.pyw文件 始终在后台运行(即控制台不会显示)。 因此,您无需始终手动打开控制台即可 执行脚本,因为脚本将在后台运行 在任何时候。
  • 将此python文件复制到操作系统的启动文件夹中( 该文件夹将在操作系统执行后自动执行 已启动)。这将是操作系统启动时的python文件 会自动在后台开始执行,因此您不会 必须在每次系统启动时手动启动它。既然是 在后台不会干扰您的工作。 (如果您在 Windows OS,您可以通过键入以下内容访问启动文件夹 shell:common startup,然后按Enter键(添加文件) 此文件夹需要root特权。如果无法访问该文件夹,则C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp是Windows 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将是 给定名称多次正确。
  2. 程序名称区分大小写。即chrome.exe和Chrome.exe是 对待方式有所不同,因此请在为案例提供价值的同时注意案例 program_name变量。
  

启动关联的应用程序

有十多种方法可以在您的OS中打开您选择的应用程序。选择取决于程序执行后对程序的处理意愿。

我建议您在使用案例Popen中使用subprocess库,因为您想在打开应用程序后向应用程序提供不同的输入。

  

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

This问题肯定是您要寻找的。也有不同的方法可以完成此操作,其中选择/路径取决于用例(如上一个案例)。