控制应用程序重启,外部程序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 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...
随机推荐
- EasyUI----DataGrid行明细增删改操作
http://blog.csdn.net/huchiwei/article/details/7787947 本文实现的是EasyUI-DataGrid行明细的增删改操作.具体参考来自以下文章: 官 ...
- HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...
- 带WHERE子句的UPDATE语句
目前演示的几个UPDATE语句都是一次性更新所有行的数据,这无法满足只更新符合特定条件的行的需求,比如“将Tom 的年龄修改为12 岁”.要实现这样的功能只要使用WHERE 子句就可以了,在WHERE ...
- Android的日志工具Log
Android中的日志工具类是Log(android.util.Log),这个类提供了以下几个方法来供我们打印日志. ♦ Log.v():这个方法用于打印那些最为琐碎的,意义最小的日志信息.对应级别v ...
- 某考试 T1 lcm
把lcm写成 (a+n)*(b+n) / gcd(a+n,b+n). 因为gcd可以辗转相减,所以就成了gcd(abs(a-b),a+n),一个常量一个变量之间的gcd,我们可以直接把abs(a-b) ...
- 【知识点总结】NOIP前夕 2014.11.4
2014.11.4 7:33 还有三天半就要NOIP,圈一下要背的知识点: 一.数论 1.素数判断 2.筛法求素数 3.求一个数的欧拉函数值 4.预处理欧拉函数 5.卡塔兰数递推式 6.快速幂(模素数 ...
- subprocess使用,进入到某个目录下执行shell命令
subprocess是用来fork一个子进程的.这个子进程可以运行一个外部程序. 函数: subprocess.call() subprocess.check_output() subprocess. ...
- ylbtech-LanguageSamples-ConditionalMethods(条件方法)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ConditionalMethods(条件方法) 1.A,示例(Sample) 返回顶部 ...
- javascript快速入门10--运算符,语句
一元运算符 一元运算符只有一个参数,即要操作的对象或值.它们是 ECMAScript 中最简单的运算符. delete 运算符删除对以前定义的对象属性或方法的引用.例如: var obj = new ...
- 一起來玩鳥 Starling Framework(8)BitmapFont
所謂BitmapFont,就是事先將我們會用到的字型,會用到的字,輸出成一張圖片,類似Sprite sheet,以及一個xml格式的Data file,然後我們一次將這文字圖片轉成Texture,up ...