您的位置:首页 > 编程语言 > C#

C# 运行指定程序,可以方便扩展

2012-05-14 19:35 309 查看
主要测试代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace CallBat
{
/// <summary>
/// 作者:Jave.Lin
/// </summary>
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
if (args.Length == 0)
{
Console.WriteLine("args.Length==0 error!");
return;
}
string fileName = args[0];
if (!File.Exists(fileName))
{
Console.WriteLine("fileName is not Exists error! the fileName is:\r\n"+fileName);
return;
}
string fileNameNoExtension = Path.GetFileNameWithoutExtension(fileName);
Process[] tps = Process.GetProcessesByName(fileNameNoExtension);
if (tps != null)
{
foreach (Process tp in tps)
{
if (tp.ProcessName == fileNameNoExtension)
{
try
{
Console.WriteLine("[" + fileNameNoExtension + "] process had run, and then will kill it!");
tp.Kill();
tp.Close();
}
catch
{ }
}
}
}

string workDirectory = Path.GetDirectoryName(fileName);

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;//设置为false将会看到程序窗口
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//启动进程时窗口状态
p.StartInfo.RedirectStandardOutput = true;
//p.StartInfo.FileName = Server.MapPath("a.bat");
p.StartInfo.FileName = fileName;//如果a.bat在System32文件夹中,此处只需填写文件名即可
p.StartInfo.WorkingDirectory = workDirectory;
if (args.Length > 1)
{
string argsStr = string.Empty;
for (int i = 1; i < args.Length; i++)
{
argsStr += args[i] + " ";
}
p.StartInfo.Arguments = argsStr;
}

p.Start();
p.Close();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐