python - 为什么 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)
解决方案
我猜(而且我不在 Windows 上),但我认为subprocess.call
会等到您使用完 Snipping Tool,然后keyboard.press_and_release('ctrl+N')
才会转到 PowerPoint。
推荐阅读
- ethereum - USDC 无法在 Binance Smart Chain 上与 Web3JS 一起正常工作
- android-studio - 在片段到片段的通信中显示正确的值
- google-cloud-platform - 方法:accounts.channelPartnerLinks.customers.list
- python-3.x - 从嵌套列表中合并和删除重复项
- pine-script - 将 3commas 信号放入 pine-script 中的 alert()
- mysql - 在具有不同 WHERE 条件的 MySQL 中查找不同列的 SUM
- solidity - 如何使用安全帽在 Arbiscan 上验证合同
- html - 为什么内部链接在大页面宽度下不起作用
- linux - 生成核心转储时内部会发生什么
- git - “无法加载私钥(不是私钥)”当我推送我的 git 时。没有可用的受支持的身份验证方法(服务器发送:publickey)