无法通过使用taskkill和os.system杀死VLC.exe

问题描述 投票:2回答:2

我在这里有一个非常奇怪和困惑的问题。我正在尝试使用VLC Media Player自动打开和关闭.wmv文件。我最初用于打开文件的代码效果很好:

# set directory    
os.chdir("Path/to/folder/containing/wmvfiles")    
# start the given file name
os.startfile("ExampleFileName.wmv")

然后,当我准备播放该视频时,我将使用以下代码关闭该视频

os.system("taskkill /im vlc.exe") 

效果很好!但是……我需要它才能全屏打开。如此,我用以下代码替换了我的初始代码以开始播放视频:

 os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv""')

效果很好!它以全屏打开,一切正常。但是..... taskkill不会关闭该过程。具体来说,此代码不会将其关闭,VLC程序将保持打开状态:

# open the file in full screen    
os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv""')
# close the file
os.system("taskkill /im vlc.exe")

很奇怪吧?情况变得更糟。当我以这种方式打开文件时:

os.system
 ('""C:\Program Files\VideoLAN\VLC\\vlc.exe" -f "c:\videoFiles\\videoName.wmv")

然后我进入命令提示符并输入

taskkill /im vlc.exe

关闭。我完全不知道为什么会这样:

os.system("taskkill /im vlc.exe")

仅在以第一种方式启动文件(os.startfile)以及直接从命令提示符运行命令时有效。这可能是一个令人困惑的问题,但这是一个非常令人困惑的问题,非常感谢您的帮助或投入,谢谢!

python cmd vlc os.system taskkill
2个回答
1
投票

不确定。但是,我不会使用os,而是会使用subprocess

类似:

import shlex, subprocess
p = subprocess.Popen(shlex.split("cmd of some sort"))
#
# More code
#
p.terminate()

1
投票

[Update:使用vlc时,可以使用其参数/命令,在播放视频后通过vlc://quit自行退出vlc:

import subprocess
vlc_path =r'C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe'
open_mp4 =r'C:\\video\\Lean On Me _ Playing For Change.mp4'
vlc_full =r'-f'
vlc_quit =r'vlc://quit'
subprocess.call([vlc_path]+[open_mp4]+[vlc_full]+[vlc_quit])

因此,如果需要使用taskkill,可以通过添加/f = force并添加import os来更改命令:

import os
os.system('taskkill /f /im vlc.exe')

或者,也为了杀死vlc.exe创建的任何子进程,请添加/t

os.system('taskkill /f /im vlc.exe /t')
© www.soinside.com 2019 - 2024. All rights reserved.