第一步:新建一个控制台项目,作为关闭当前应用程序的调用程序。

using System;
using System.Configuration;
using System.Diagnostics; namespace RestartApp
{
class Program
{
private static string appName = ConfigurationManager.AppSettings["appName"];
static void Main(string[] args)
{
try
{
AppClose();
AppStart();
//退出应用程序
Environment.Exit(0);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 开启应用程序
/// </summary>
private static void AppStart()
{
ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.FileName = appName;
//不显示窗体
psInfo.CreateNoWindow = true;
//上级目录的文件
psInfo.WorkingDirectory = @"..\";
Process process;
try
{
process = Process.Start(psInfo);
}
catch (Exception exception)
{
throw;
}
} /// <summary>
/// 关闭应用程序
/// </summary>
private static void AppClose()
{
Process[] proc = Process.GetProcessesByName(appName);
for (int i = 0; i < proc.Length; i++)
{
if (proc[i].ProcessName == appName)
{
proc[i].Kill();
}
}
GC.Collect();
}
}
}

添加System.configuration的引用

添加配置文件app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="appName" value="winformTest"/>
</appSettings>
</configuration>

其中winformTest 是我要控制重启的应用程序名称

第二步:新建工程 winformTest

界面如图:

添加代码:

using System;
using System.Configuration;
using System.Diagnostics;
using System.Windows.Forms; namespace winformTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string appName = ConfigurationManager.AppSettings["appName"];
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.FileName = appName;
psInfo.WorkingDirectory = @".\appStart\";
Process process;
try
{
process = Process.Start(psInfo);
}
catch (Exception exception)
{
throw;
}
}
}
}

上面的目录是winformTest 请求的RestartApp所在的目录,我是放在一个单独文件夹中的

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="appName" value="RestartApp"/>
</appSettings>
</configuration>

第三步:将编译好的RestartApp运行文件放在appStart目录中,就可以了

测试-点击重启    软件启动RestartApp  然后RestartApp  关闭winformTest  ,最后执行启动winformTest  。完成

控制应用程序重启,外部程序C# 实例的更多相关文章

  1. 控制 Android 程序使用的内存

    如何控制应用程序使用的内存? 1. 记得关闭启动的服务 当服务中的任务完成后,要记得停止该服务.可以考虑使用 IntentService,因为 IntentService 在完成任务后会自动停止. 2 ...

  2. C#让应用程序只运行一个实例的几种方法

    一 判断是否有相同的实例已经运行 1 根据“Mutex”判断是否有相同的实例在运行 /// <returns>已有实例运行返回true,否则为false</returns>pu ...

  3. VSCode Git 没有活动的源代码控制提供程序

    主要原因:我以前安装的Git只允许在Git-Bash中运行,需要重新安装Git,选择允许三方软件的那个选项,然后安装Git插件,修改git.path即可. 以下是解决过程中的尝试,记录如下,实际上只需 ...

  4. 【Qt】实现程序重启的两种方法

    Qt5/PyQt5 实现程序重启的两种方法 前言 最近在写一个开源项目,需要实现一个程序自动重启的功能.尝试了好几种方式,效果均不太理想. 一开始的实现思路是,记为思路一吧.大概就是写一些 shell ...

  5. 使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示

    1.模拟键盘输入(SendKeys) 功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法:SendKeys.Send(string keys);SendKeys.SendWa ...

  6. winform程序重启

    winform程序重启的方法: private void ReStart() { string processName = System.Diagnostics.Process.GetCurrentP ...

  7. 程序4-6 utime函数实例

    //http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...

  8. 使用Nginx解决IIS绑定域名导致应用程序重启的问题

    在将多个站点迁移到一个站点(Tenant Feature)的时候碰到了一个棘手的问题,用户需要绑定自定义域名,但IIS绑定域名的时候会导致这个站点重启,那么只要一个用户绑定了一个域名则会导致这个应用上 ...

  9. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)

    Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...

随机推荐

  1. 51nod 1283 最小周长【注意开根号】

    1283 最小周长 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 一个矩形的面积为S,已知该矩形的边长都是整数,求所有 ...

  2. 训练指南 UVA - 11419(二分图最小覆盖数)

    layout: post title: 训练指南 UVA - 11419(二分图最小覆盖数) author: "luowentaoaa" catalog: true mathjax ...

  3. Maven / Nexus 的用法和经验

    Maven / Nexus 的用法和经验

  4. python3开发进阶-Django视图(View)的常见用法

    阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...

  5. python3 开发面试题(生成列表)6.1

    话不多说直接上题: 生成如下列表: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12]] # 方式一 list1 ...

  6. html5页面中 触发 拨打电话、发短信 的方式

    <a href="tel:18688888888">拨号</a> <a href="sms:18688888888">发短信 ...

  7. js数据加载完成的方法

    1.document.onreadystatechange(页面加载完成的方法)配合document.readyState(获取加载状态)使用 document.onreadystatechange= ...

  8. phpmyadmin后台4种拿shell方法 && php爆路径大法

    php后台拿shell要知道php的路径,文章下面将讲诉爆php路径的方法!!! 方法一: CREATE TABLE `mysql`.`xss` (`xss1` TEXT NOT NULL ); IN ...

  9. fedora25安装和docker-ce_清华源

    docker-ce_清华源 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/fedora/ fedora25 docker-ce版本: htt ...

  10. 【AS3 Coder】任务四:噪音的魅力(中)

    如果把Math.random方法作为一个生成随机数字的办法,那么bitmapData.perlinNoise就是一个生成随机颜色的办法.在这一部分的对于噪声的应用介绍文章中我们一起来看看使用柏林噪声的 ...