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

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. linux查看cpu内存信息

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...

  2. 【博弈论】【SG函数】【枚举】bzoj1188 [HNOI2007]分裂游戏

    因为第i个瓶子里的所有豆子都是等价的,设sg(i)表示第i个瓶子的sg值,可以转移到sg(j)^sg(k)(i<j<n,j<=k<n)的状态. 只需要考虑豆子数是奇数的瓶子啦, ...

  3. 输入格式CombineFileInput

    此输入格式的作用就是可以将来自多个不同文件的物理块作为一个split,然后由一个map进行处理. http://www.blogjava.net/shenh062326/archive/2012/07 ...

  4. SSH学习——声明式事物管理(Spring)

    1.什么是事物? 事务是一组操作的执行单元,相对于数据库操作来讲,事务管理的是一组SQL指令,比如增加,修改,删除等,事务的一致性,要求,这个事务内的操作必须全部执行成功,如果在此过程种出现了差错,比 ...

  5. python 文件操作与集合

    对文件的操作 1.打开文件,获取句柄 2.根据句柄操作文件 3.关闭文件 现有文档 poem.txt 一天很短, 短得来不及拥抱清晨, 就已经手握黄昏. 一年很短, 短得来不及细品初春殷红窦绿, 就要 ...

  6. iOS:友盟SDK分享

    友盟SDK分享   基本步骤: 1.注册友盟开发者账号 2.登陆账号,添加新应用,获取AppKey 3.下载并安装SDK 4.解压SDK压缩包,将形如UMSocial_sdk_x.x.x文件拖入工程中 ...

  7. Linq-语句之Select/Distinct和Count/Sum/Min/Max/Avg

    上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to Data ...

  8. selenium以手机模拟器方式打开Google浏览器

    使用chrome driver和chrome浏览器并进入chrome的 toggle device mode 模式,就可以很好的模拟手机端,下面直接上代码 public class runtest { ...

  9. Java中的值传递与“引用传递”

    首先,Java没有 引用传递 这么一说. Java仅仅有值传递.传递的都是值,基本数据类型传递的是值.引用类型传递的是地址值. 我来理一下这当中宛如米线跟米面绞在一起了,再跟粉丝混在一起的关系. 好的 ...

  10. 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法

    http://blog.csdn.net/levy_cui/article/details/51251095 1.python 版本切换到2.7 推荐使用pythonbrew,http://blog. ...