【c#】Winform调用外部exe和关闭窗口时关闭exe

最近做项目遇到需要通过程序启动打开exe文件进行通信的,网上找了一篇文章,在关闭exe时遇到一点问题,所以做个记录

参考地址:
http://t.csdnimg.cn/EpPEc

我界面上用了一个button打开程序和一个richTextBox显示当前任务管理器中所有进程的名称,因为关闭exe时需要关闭名称,一开始忘了可以用程序获取了,所以就做了个显示看进程名称
界面如下:
在这里插入图片描述
点击按钮功能:

1.打开exe
2.获取任务管理器中所有进程,并将进程名称显示到界面

按钮点击函数如下:

        private static System.Diagnostics.Process p;//打开进程对象
        private void button1_Click(object sender, EventArgs e)
        {
            //进程对象为空则新建进程
            if (p == null)
            {
                p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "C:\\Users\\realredtec003\\AppData\\Local\\Programs\\bilidown\\bilidown.exe";
                p.Start();
            }
            else//显示窗口
            {
                if (p.HasExited) //是否正在运行
                {
                    p.Start();
                }
            }
            //设置启动时使用窗口状态
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;

            //获取任务管理器全部进程
            Process[] pProcess;
            pProcess = Process.GetProcesses();
            //显示全部进程名称
            richTextBox1.Text += "当前正在运行程序名称列表:" + "\n";
            for (int i = 1; i <= pProcess.Length - 1; i++)
            {
                richTextBox1.Text += pProcess[i].ProcessName.ToString() + "\n";
            }
        }

考虑到界面上没有专门的退出按钮,所有选择使用窗口关闭事件来实现exe与调用窗口一起关闭

窗口关闭事件的添加
首先点击窗口
然后在属性中找到事件图标
最后滑到底部在【行为】事件中找到FormClosing并双击
在这里插入图片描述

由此创建窗口关闭事件函数,窗口关闭事件函数功能如下:

1.获取当前任务管理器所有进程
2.找到软件调用进程并关闭

窗口关闭事件函数代码如下:

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //获取任务管理器全部进程
            Process[] pProcess;
            pProcess = Process.GetProcesses();
            //遍历进程找到应用程序
            for (int i = 1; i <= pProcess.Length - 1; i++)
            {
                if (pProcess[i].ProcessName == p.ProcessName)//任务管理器应用程序的名
                //if (pProcess[i].ProcessName == "应用程序名称")//此处若是打开与关闭软件不同可以采用字符串查找
                {
                    pProcess[i].Kill();

                    if (!pProcess[i].HasExited) // 判断进程是否已经退出
                    {
                        pProcess[i].CloseMainWindow(); // 关闭主窗口
                        pProcess[i].WaitForExit(5000); // 等待进程退出,最多等待5秒
                        break;
                    }
                }
            }
        }

综上,实现点击按钮打开exe,关闭窗口时关闭调用exe功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有只小白叫岳飒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值