You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中关闭Opera浏览器后仅执行一次视频播放命令?

问题描述

我希望关闭Opera浏览器时自动播放一段视频,当前写的Python代码虽然能实现播放,但Opera关闭后会重复执行播放操作;我需要实现仅在Opera关闭时执行一次视频播放,不会重复执行。当前代码如下:

# Import module
import wmi
from playsound import playsound
import os
import time
from os import startfile

while True:
    # Initializing the wmi constructor
    f = wmi.WMI()
    
    flag = 0
    
    # Iterating through all the running processes
    for process in f.Win32_Process():
        if "opera.exe" == process.Name:
            print("Application is Running")
            playsound('C:/Users/USER/Desktop/pyworkspace/waltuh3.mp3')
            flag = 1
            break
    
    if flag == 0:
        print("Application is not Running")
        class Video(object):
            def __init__(self,path):
                self.path = path

            def play(self):
                startfile(self.path)

        class Movie_MP4(Video):
            type = "MP4"

        movie = Movie_MP4(r"C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\POLAR_BEAR.mp4")
        movie.play()

    time.sleep(3)
解决方案

原代码的问题在于每次检测到Opera没运行就播放视频,没判断是不是刚从运行状态关掉。只要加个变量跟踪Opera的状态变化,只在“从运行变关闭”的瞬间触发播放就行。

修改后的代码:

import wmi
import time
from os import startfile

# 初始化状态:默认Opera没在运行
opera_was_running = False

def play_video(video_path):
    # 直接播放视频,原有的类定义完全没必要,简化一下
    startfile(video_path)

def check_opera_running():
    # 把检测Opera的逻辑单独拎出来,代码更清晰
    wmi_instance = wmi.WMI()
    for process in wmi_instance.Win32_Process():
        if process.Name == "opera.exe":
            return True
    return False

while True:
    current_opera_state = check_opera_running()
    
    # 只有当Opera之前在运行,现在刚关掉时,才播放视频
    if opera_was_running and not current_opera_state:
        print("Opera已关闭,开始播放视频")
        play_video(r"C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\POLAR_BEAR.mp4")
    
    # 更新状态,下次循环用
    opera_was_running = current_opera_state
    
    # 如果你需要Opera运行时播放那个音频,就保留下面这段,不需要就删掉
    # if current_opera_state:
    #     playsound('C:/Users/USER/Desktop/pyworkspace/waltuh3.mp3')
    
    time.sleep(3)
改动说明
  • 加了opera_was_running变量,专门记录上一次循环时Opera的状态,用来判断是不是刚关闭
  • 把检测和播放的逻辑封装成函数,代码更整洁,也方便后续修改
  • 去掉了没必要的类定义,直接调用startfile就能播放视频,简化代码
  • 只在状态从“运行”变“关闭”时触发播放,确保只执行一次

内容的提问来源于stack exchange,提问作者Docem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:55:23