控制应用程序重启,外部程序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 下一个典型的特征就是多任务,我们可以同时打开多个窗口进行操作,也可以同时运行程序的多个实例,比如可以打开许多个资源管理器进行文件的移动复制操作.但有时出于某种考虑(比如安全性),我们要 ...
随机推荐
- centos6.5 安装vlc播放器【超简单】
# cd /etc/yum.repos.d/ # wget http://pkgrepo.linuxtech.net/el6/release/linuxtech.repo //我试了3次才下载下来 # ...
- Spring Cloud 常用依赖
<!-- 将微服务provider侧注册进eureka --> <dependency> <groupId>org.springframework.cloud< ...
- [haoi2009]巧克力
鉴于河南是oi弱省,所以想来这道题也没什么人会翻出来写吧,而且这还是haoi2009的一道简单题目,所以估计也没几个人会写博客的,那么看在我这么弱的份上,我觉得是应该写一篇出来的. 这道题我是按照贪心 ...
- SPOJ IITWPC4F - Gopu and the Grid Problem (双线段树区间修改 区间查询)
Gopu and the Grid Problem Gopu is interested in the integer co-ordinates of the X-Y plane (0<=x,y ...
- Linux命令之vim(二)
这一章主要介绍vim编辑器的内部使用方法和注意事项 vim编辑器有四种工作模式:正常模式.插入模式.命令模式.可视模式.简单的判断方法就是看底部,什么都没有就是正常模式,光标在编辑器最底下时则是命令模 ...
- ASP.NET Core 2.2 基础知识(十) Web服务器 - Kestrel
ASP.NET Core 应用与进程内的 HTTP 服务器实现一起运行.该服务器实现侦听 HTTP 请求,并在一系列请求功能被写到 HttpContext 时,将这些请求展现到应用中. ASP.NET ...
- 日期 function
SELECT SYSDATE, ADD_MONTHS(SYSDATE,), ADD_MONTHS(SYSDATE,), LAST_DAY(SYSDATE), MONTHS_BETWEEN(SYSDAT ...
- POJ 1180 Batch Scheduling(斜率优化DP)
[题目链接] http://poj.org/problem?id=1180 [题目大意] N个任务排成一个序列在一台机器上等待完成(顺序不得改变), 这N个任务被分成若干批,每批包含相邻的若干任务. ...
- SSH学习——Spring基础
1.理解什么是Spring框架? spring是J2EE应用程序框架,是轻量级的IOC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框 ...
- iOS项目之企业证书打包和发布
一.打包ipa 个人发布证书和企业发布证书打包 app 大同小异,只是打包时导出选项不同,企业证书打包选择 Save for Enterprise Deployment ,并最终导出 ipa 包.详细 ...