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

如何实现进程退出后仍留存的Windows提示弹窗?

进程退出后保留提示弹窗的实现方案

在Windows平台下,完全可以实现触发弹窗的进程退出后,弹窗仍保留至用户手动关闭,核心是借助系统级的弹窗托管能力,以下是两种实用方案:

方案一:使用Windows原生msg.exe工具

这是最轻量化的实现方式,msg.exe是系统自带的命令行工具,专门用于发送用户通知弹窗,其弹窗由Windows终端服务组件托管,与调用进程完全独立:

  • 执行命令:msg %username% "服务器已终止您的会话"
  • 效果:命令执行后,即便触发该命令的客户端进程立即退出,弹窗依然会留在用户桌面,直到用户点击确认才消失,不会留下任何残留模块。

方案二:通过Windows API创建系统托管弹窗

如果需要自定义弹窗的样式、图标或标题,可以使用MessageBoxIndirect API,并指定MB_SERVICE_NOTIFICATION标志,该标志会让系统进程(如winlogon.exe)接管弹窗的生命周期,脱离调用进程的约束:

  • 核心代码示例(C++):
#include <windows.h>

int main() {
    MSGBOXPARAMS msgParams = {0};
    msgParams.cbSize = sizeof(MSGBOXPARAMS);
    msgParams.hwndOwner = NULL;
    msgParams.hInstance = GetModuleHandle(NULL);
    msgParams.lpszText = L"服务器已终止您的会话";
    msgParams.lpszCaption = L"会话终止通知";
    msgParams.dwStyle = MB_OK | MB_ICONINFORMATION;
    // 关键标志:委托系统进程托管弹窗
    msgParams.dwFlags = MB_SERVICE_NOTIFICATION;

    MessageBoxIndirect(&msgParams);
    // 进程直接退出,弹窗由系统维持
    return 0;
}
  • 效果:调用进程退出后,弹窗会继续保留在用户桌面,直到用户点击关闭,全程无模块残留。

注意事项

  • msg.exe在Windows Vista及以上版本默认预装,调用时只需当前用户的常规权限即可生效。
  • 使用MB_SERVICE_NOTIFICATION标志时,无需特殊系统权限,普通用户进程即可正常调用,弹窗会自动由系统进程接管。

内容的提问来源于stack exchange,提问作者Mr. Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:26:15