首页 > 解决方案 > 为什么 subprocess 会启动“额外”应用程序?

问题描述

我编写了一个 Python 脚本来检测Print Screen按键,并启动截图工具。该脚本使用 subprocess.call 来处理应用程序启动。

我面临的问题是,当我使用完 Snipping Tool 并关闭应用程序时,我会启动一个“额外”的应用程序。例如,如果我截取了一个 PowerPoint 演示文稿,那么当我关闭 Snipping Tool 时,我会自动启动一个新的/空白的 Power Point 实例。我不希望这种情况发生,只是希望截图工具在没有任何额外操作的情况下关闭。

有人可以帮助解释我的代码中缺少什么吗?

# https://stackoverflow.com/questions/24072790/detect-key-press-in-python
# https://pypi.org/project/keyboard/
# https://github.com/boppreh/keyboard#api

import keyboard #pip install keyboard
import time
import subprocess

while True:
    if keyboard.is_pressed('print screen'):
        subprocess.call(r'SnippingTool.exe') # blocking; waits until open
        keyboard.press_and_release('ctrl+N')
    #elif keyboard.is_pressed('ctrl+print screen'): # not recognizing "print screen" here
    elif keyboard.is_pressed('ctrl+esc'):        
        print 'killing it now'
        break
    else:
        time.sleep(0.1)

标签: pythonpython-2.7subprocess

解决方案


我猜(而且我不在 Windows 上),但我认为subprocess.call会等到您使用完 Snipping Tool,然后keyboard.press_and_release('ctrl+N')才会转到 PowerPoint。


推荐阅读