首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果另一个程序被打开,如何制作一个打开程序的后台脚本?

如果另一个程序被打开,如何制作一个打开程序的后台脚本?
EN

Stack Overflow用户
提问于 2019-06-25 08:13:54
回答 1查看 56关注 0票数 -2

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-06-25 08:54:12

让我们一步一步地解决你的问题:

始终在引导时在后台运行。

  • 为此,您必须将代码另存为一个.pyw文件(请注意最后的w )。常规.py.pyw文件的不同之处在于,.py调用控制台(~命令行)等效工具执行并在前台执行,而.pyw文件始终在后台运行(即控制台不会显示)。因此,它不需要您始终手动打开控制台来执行脚本,因为脚本将始终在后台运行。
  • 将此python文件复制到操作系统的启动文件夹中(此文件夹中的任何文件将在操作系统启动后自动执行)。这样做的目的是当操作系统启动时,您的python文件将在后台自动开始执行,因此您不必在每次系统启动时手动启动它。因为它在后台,所以不会影响你的工作。(如果您使用的是windows操作系统,则可以通过在运行时键入shell:common startup并按enter键来访问启动文件夹)(向此文件夹添加文件需要根用户权限。如果您无法访问该文件夹,则C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp是其在windows 10上的默认路径。

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

为此,使用以下代码:

代码语言:javascript
复制
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变量提供值时要注意大小写。

启动关联的应用程序

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

对于您的用例,我推荐使用subprocess库的Popen,因为您希望在打开应用程序后为其提供不同的输入。

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

This问题肯定就是你要找的。也有不同的方法来完成这一点,其中的选择/路径取决于用例(就像上一个)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56745317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档