重新启动软件

2024-10-02 22:35:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行MediaPlayerClassic,作为任务栏中的最小化窗口(请参见here和其他答案),带有:

import subprocess, win32con, win32gui, win32process, win32api

info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = win32con.SW_MINIMIZE
app = subprocess.Popen(r'c:\path\to\mpc-h64.exe "d:\mp3\song.mp3"', startupinfo=info)

它起作用了。但有时,我想用另一首替换当前播放的歌曲,并发送相同的先前代码(使用另一个mp3)。你知道吗

由于MediaPlayerClassic只允许1个实例,因此重新运行以前的代码确实会用新的替换当前播放的歌曲,这就是我想要的,所以它也可以工作。除了新窗口不再最小化之外。这可能是因为没有启动新进程:它重用以前存在的进程,而MediaPlayerClassic在接收到新MP3播放时“打开窗口”(?)。你知道吗

添加:

time.sleep(0.2)  # required, if not the next action happens before the MP3 changes

def callback(hwnd, hwnds):
    text = win32gui.GetWindowText(hwnd)
    if win32gui.GetClassName(hwnd) == 'MediaPlayerClassicW':
        win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
    return True

win32gui.EnumWindows(callback, [])

几乎解决了它,只是窗口快速闪烁,然后最小化。你知道吗

问题:如何重新启动像MediaPlayerClassic那样已经启动的.exe并使其最小化?这里应该使用subprocess.Popen以外的东西吗?你知道吗


Tags: 代码info进程sw歌曲exemp3subprocess