如何用Python关闭Windows系统中指定的运行中应用?
关闭指定运行中应用的几种可行方法
你的send_keys('%{F4}')失效,核心原因是这个快捷键只会作用于当前激活的前台窗口,如果Discord没处于前台,操作就不会生效。下面是几种更可靠的解决方案:
方法1:用pywinauto直接连接并关闭应用(延续你现有库)
你已经在使用pywinauto的application模块,可以直接连接到运行中的Discord进程,无需激活窗口就能关闭:
from pywinauto import application # 启动Discord的代码不变 elif "discord" in you: app = application.Application() app.start("C://Users//admin//AppData//Local//Discord//Update.exe --processStart Discord.exe") robot_brain = "正在运行Discord" elif you == " exit discord": try: # 匹配标题含Discord的窗口 app = application.Application().connect(title_re=".*Discord.*") app.close() # 优雅关闭(等效于点击关闭按钮) # 如果需要强制终止用 app.kill() robot_brain = "已关闭Discord" except Exception: robot_brain = "未找到运行中的Discord"
方法2:通过进程名直接终止(适合多进程应用)
用psutil库可以直接定位并终止Discord进程,无需依赖窗口:
- 先安装依赖:
pip install psutil - 代码示例:
import psutil def kill_process_by_name(process_name): for proc in psutil.process_iter(['name']): try: # 忽略大小写匹配进程名 if proc.info['name'].lower() == process_name.lower(): proc.terminate() except (psutil.NoSuchProcess, psutil.AccessDenied): pass # 替换你的关闭逻辑 elif you == " exit discord": kill_process_by_name("Discord.exe") robot_brain = "已关闭Discord"
方法3:通过窗口句柄发送关闭指令(使用pywin32)
通过Windows API找到Discord窗口,直接发送关闭消息,不需要激活窗口:
- 先安装依赖:
pip install pywin32 - 代码示例:
import win32gui import win32api import win32con def close_window_by_title(keyword): def window_callback(handle, extra): if win32gui.IsWindowVisible(handle): title = win32gui.GetWindowText(handle) if keyword in title: extra.append(handle) return True windows = [] win32gui.EnumWindows(window_callback, windows) for handle in windows: # 发送关闭窗口的系统消息 win32api.SendMessage(handle, win32con.WM_CLOSE, 0, 0) # 替换你的关闭逻辑 elif you == " exit discord": close_window_by_title("Discord") robot_brain = "已关闭Discord"
内容的提问来源于stack exchange,提问作者noober
相关产品推荐
相关产品推荐

