控制应用程序重启,外部程序C# 实例
第一步:新建一个控制台项目,作为关闭当前应用程序的调用程序。
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# 实例的更多相关文章
- 控制 Android 程序使用的内存
如何控制应用程序使用的内存? 1. 记得关闭启动的服务 当服务中的任务完成后,要记得停止该服务.可以考虑使用 IntentService,因为 IntentService 在完成任务后会自动停止. 2 ...
- C#让应用程序只运行一个实例的几种方法
一 判断是否有相同的实例已经运行 1 根据“Mutex”判断是否有相同的实例在运行 /// <returns>已有实例运行返回true,否则为false</returns>pu ...
- VSCode Git 没有活动的源代码控制提供程序
主要原因:我以前安装的Git只允许在Git-Bash中运行,需要重新安装Git,选择允许三方软件的那个选项,然后安装Git插件,修改git.path即可. 以下是解决过程中的尝试,记录如下,实际上只需 ...
- 【Qt】实现程序重启的两种方法
Qt5/PyQt5 实现程序重启的两种方法 前言 最近在写一个开源项目,需要实现一个程序自动重启的功能.尝试了好几种方式,效果均不太理想. 一开始的实现思路是,记为思路一吧.大概就是写一些 shell ...
- 使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示
1.模拟键盘输入(SendKeys) 功能:将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法:SendKeys.Send(string keys);SendKeys.SendWa ...
- winform程序重启
winform程序重启的方法: private void ReStart() { string processName = System.Diagnostics.Process.GetCurrentP ...
- 程序4-6 utime函数实例
//http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...
- 使用Nginx解决IIS绑定域名导致应用程序重启的问题
在将多个站点迁移到一个站点(Tenant Feature)的时候碰到了一个棘手的问题,用户需要绑定自定义域名,但IIS绑定域名的时候会导致这个站点重启,那么只要一个用户绑定了一个域名则会导致这个应用上 ...
- 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)
Windows 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...
随机推荐
- Git命令使用指南
继续git相关的东西,网上很多讲解的,但是还是喜欢这个图:(爱屋及乌,当然内容也很好,文章链接:http://me.iblogc.com/2015/01/16/Git命令使用指南/) Git是软件开发 ...
- 欧拉图和欧拉圈-Play On Words(UVa10129)
欧拉路和欧拉圈,简言之就是,从无向图的一个结点出发,走一条路/圈,每条边恰好经过一次,即一笔画问题 欧拉定理:一个无向图最多只有两个奇结点,那么我们就从一个奇结点出发,到另一个结点为之,一定有一条欧拉 ...
- Codeforces #439 Div2 E
#439 Div2 E 题意 给出二维平面,有多个询问: 把某一区域围起来(围墙之间无交点) 移除某一区域的围墙(此时保证围墙一定存在) 选定两个位置问是否可以互相到达 分析 看起来很复杂,其实这道题 ...
- Linux命令之last
last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username..] [tty..] last作用是显示近期用 ...
- 【二分答案】【哈希表】【字符串哈希】bzoj2946 [Poi2000]公共串
二分答案,然后搞出hash值扔到哈希表里.期望复杂度O(n*log(n)). <法一>next数组版哈希表 #include<cstdio> #include<cstri ...
- NPOI读取Excel2003,2007
using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Lin ...
- jvm-监控指令-jinfo
格式: jinfo [option] pid 作用: 实时查看和调整虚拟机各项参数. 使用步骤: 1.查看: jinfo vmid. 2.查看指定的参数: jinfo -flag 参数名 v ...
- Telnet协议详解
转:http://www.cnblogs.com/dazhaxie/archive/2012/06/27/2566054.html 1. 概述 Telnet协议是TCP/IP协议族中的一员,是Inte ...
- 你真的了解try{ return }finally{}中的return?(转载)
发现一篇有意思的博文,分享一下 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class Test { public int aaa() { int x = 1; try { ...
- Java solr 分词
代码如下: import java.io.IOException; import java.util.*; import org.apache.solr.client.solrj.SolrClient ...