C# 在exe中启动另外一个exe时的关闭方法

在C#中,如果你想要从一个exe程序中启动另一个exe程序,并希望在需要时能够关闭它。

 

一、启动外部exe程序:

使用System.Diagnostics.Process启动程序,代码如下:

private void btnStart_Click(object sender, RoutedEventArgs e)
{FileInfo exePath = new FileInfo(Common.GetRunPath());//获取程序启动路径string path = System.IO.Path.Combine(exePath.Directory.FullName, "Other", "OtherEXE.exe");try{using (System.Diagnostics.Process baa = System.Diagnostics.Process.Start(path)){baa.WaitForInputIdle(500);}}catch (Exception ex){}
}

 

二、关闭外部exe程序:

在C#中,如果你通过Process类启动了另一个exe程序,你可以调用Process类的CloseMainWindow或者Kill方法来关闭它:

  1. CloseMainWindow()方法: 这个方法会发送一个关闭消息到主窗口,模拟用户点击窗口关闭按钮的行为。如果该进程只运行了一个主线程且没有处理这个关闭消息,那么整个进程将会结束。但如果被启动的应用程序有后台线程或其他未完成的任务,可能无法完全关闭。

  2. Kill()方法: 这个方法会强制终止进程及其所有子线程,无论它们是否正在执行重要任务。这是最直接但也是最粗暴的方法,可能会导致数据丢失或者其他未预期的问题。

建议首先尝试使用CloseMainWindow方法,如果无法正常关闭再考虑使用Kill方法。

Process process = new Process();
// 设置启动信息(例如文件路径等)
process.Start();// ... 在适当的时候关闭进程
process.CloseMainWindow();
if (!process.HasExited)
{// 如果CloseMainWindow未能关闭进程,则强制结束process.Kill();
}

 

或是使用Process.GetProcesses() 是一个静态方法,它返回当前系统中所有正在运行的进程的一个数组。然后匹配进程名称,使用Kill()方法: 

private void btnClose_Click(object sender, RoutedEventArgs e)
{Process[] process = Process.GetProcesses();foreach (Process prc in process){if (prc.ProcessName == "OtherEXE")prc.Kill();}
}

注意的是,关闭一个外部进程可能会影响到运行中的数据和资源,因此请谨慎使用Kill方法,并尽量确保外部exe程序能够正常处理关闭事件。

 

或是直接在进程中查找进程名,直接使用。

// 启动新的进程
Process processToStart = new Process();
processToStart.StartInfo.FileName = "path_to_your_exe";
processToStart.Start();// ... 在适当的时候关闭进程
// 假设你知道启动的exe的名称(这里是"YourExeName.exe")
Process[] processes = Process.GetProcessesByName("YourExeName.exe");
if (processes.Length > 0)
{// 关闭主窗口(如果有)processes[0].CloseMainWindow();// 等待一段时间看是否已退出processes[0].WaitForExit(5000); // 等待5秒if (!processes[0].HasExited){// 如果仍未退出,则强制结束processes[0].Kill();}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器使用教程_搭建网站教程_2024建站教程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

自然语言处理(NLP)—— 语言学、结构的主要任务

1. 计算语言学的任务 1.1 自然语言处理任务——句法分析任务 1.1.1 词法(Syntatic tasks:Word level) 在自然语言处理中,词法分析主要涉及到词汇层面的处理,包括形态划分、分词、切分以及词性标注等任务。 1.1.1.1 形态划分&am…

XUbuntu22.04之显示实时网速(二百一十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

智能网联各地市政策盘点

本文旨在对2023年及2024年初各地市所出台的智能网联相关政策进行全面的梳理与总结。通过与此前发布的关于2023年和2024年初各部委、省、直辖市智能网联相关政策的盘点相互呼应,力求为读者呈现一个全面、系统的政策概览。 文 | 吴冬升 全文6000字,预计阅读…

轮询--一起学习吧之架构

一、定义 轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输出入”(Programmed I/O)。这种方式是由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务&am…

html--3D爱心

文章目录 代码效果 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>爱心</title><style type"text/css">*{margin: 0px;border: 0px;}body{overflow: hidden;background-…

Docker-部署若依项目

文章目录 后端一、搭建局域网二、redis安装测试 三、MySQL安装四、后端项目放入位置及使用Dockerfile自定义镜像后端项目放入位置 前端配置检查各个端口是否启动nginx部署 首先得先把内部的文件给删除清空 docker images–查看有哪些文件 docker rmi -f ID–删除ID 后端 一、…

腾讯QQ推出AI聊天搭子;零一万物01AI宣布开源Yi-9B模型

&#x1f989; AI新闻 &#x1f680; 腾讯QQ推出AI聊天搭子&#xff0c;进军AI对话领域 摘要&#xff1a;腾讯QQ合作筑梦岛和混元助手&#xff0c;推出了AI对话功能“AI聊天搭子”&#xff0c;提供多种虚拟角色与用户实时互动&#xff0c;目前已开启测试。此外&#xff0c;抖…

STM32/GD32——I2C通信协议

芯片选型 Ciga Device — GD32F470系列 通讯规则 I2C协议&#xff08;或称IIC&#xff09;是由飞利浦&#xff08;现在的恩智浦半导体&#xff09;公司开发的一种通用的总线协议。它使用两根线&#xff08;时钟线和数据线&#xff09;来传输数据&#xff0c;支持多个设备共享…

智能设备 app 设计 —— 蓝蓝 UI 设计公司

今天给大家推荐是智能设备app设计&#xff0c;随着智能设备的逐渐普及随之操作app也越来越多&#xff0c;希望能给大家带来灵感 #日常灵感 #创意设计#UI提升#ui设计#app #设计案例分享|#设计 #产品设计#产品设计#设计灵感 #B端产品经理 #ui #产品 #美工 #交互 #产品经理 #开发 …

乐优商城(九)数据同步

1. 项目问题分析 现在项目中有三个独立的微服务&#xff1a; 商品微服务&#xff1a;原始数据保存在 MySQL 中&#xff0c;从 MySQL 中增删改查商品数据。搜索微服务&#xff1a;原始数据保存在 ES 的索引库中&#xff0c;从 ES 中查询商品数据。商品详情微服务&#xff1a;做…

python75-Python的函数参数,关键字(keyword)参数

在定义Python函数时可定义形参(形式参数的意思)这些形参的值要等到调用时才能确定下来,由函数的调用者负责为形参传入参数值。简单来说,就是谁调用函数,谁负责传入参数值。 关键字(keyword)参数 Python函数的参数名不是无意义的,Python 允许在调用函数时通过名字来传入参…

mysql 查看数据库、表的命令

查看所有的数据库 1.show databases; 2.select schema_name from information_schema.schemata\G \G 。以纵向报表的形式显示结果&#xff0c;方便查看。 查看mysql数据库的运行状态 status 选择数据库 use 库名 例 use TestDb 查看数据库中的表 show tables 查看表结构 de…

怎么在图片上直接编辑文字?3个方法教你轻松编辑

怎么在图片上直接编辑文字&#xff1f;随着技术的飞速发展&#xff0c;图片编辑已经成为我们日常生活和工作中不可或缺的一部分。在图片上直接编辑文字&#xff0c;不仅能够添加说明和标注&#xff0c;提高信息的传达效率&#xff0c;还能够增强图片的美观和设计感&#xff0c;…

qt练习案例

记录一下qt练习案例&#xff0c;方便学习qt知识点 基本部件 案例1 需求&#xff0c;做一个标签&#xff0c;显示"你好"知识点&#xff0c;QLabel画面 4. 参考&#xff0c;Qt 之 QLabel 案例2 需求&#xff0c;做一个标签&#xff0c;显示图片 知识点&#xff0c;…

在Linux/Ubuntu/Debian中用fdisk分区mkfs格式化

fdisk 是一个命令行实用程序&#xff0c;用于在类 Unix 操作系统&#xff08;包括 Linux&#xff09;中对磁盘进行分区。 如果你想使用“fdisk”格式化 USB 驱动器&#xff0c;通常会先对驱动器进行分区&#xff0c;然后使用特定的文件系统格式化分区。 以下是有关如何在 Linu…

c++初阶------类和对象(六大默认构造函数的揭破)

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

1.JavaWebJava基础加强[万字长文]-Junit、反射、注解核心知识点梳理

导语&#xff1a; 一、Junit单元测试 1.Junit测试概述 2.Junit使用步骤 3.Junit_Before&After 二、反射 1.反射概述 2.反射获取字节码Class对象的三种方式 3.Class对象功能概述 4.Class对象功能_获取Field 5.Class对象功能_获取Constructor 6.Class对象功能_获取…

20个实操保姆级副业项目

这边免费给到大家很多项目资料和工具&#xff0c;主要的就是为了消除信息壁垒&#xff0c;在互联网创业或兼职的路上不再被割&#xff0c;不再多花冤枉钱&#xff0c;相信人间有真爱&#xff0c;有不懂的问题可咨询博主&#xff01;为了帮助到更多的创业者&#xff0c;资料欢迎…

极狐GitLab 16.3 重磅发布,极致的 DevOps 体验等你来【一】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 极狐GitLab 在去年 8 月份发布了 16.3 版本。此次发布带来了合…