【原创】在C#中调用其它程序

 有很多情况下我们需要在自己的程序中调用其它已经存在的应用程序来完成所需要的功能,比如调用cmd命令执

行一个dos命令等等。下面就以两个小例子来简单说明一下如何实现这个功能!

 示例1:通过调用cmd命令执行一个dos命令。代码片段如下:

  using System.Diagnostics;//这个是必需的命名空间,一定要导入

  private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //加载CMD命令行并传递参数执行
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";//这里是设置要调用的目标程序或文件,FileName 属性不

//需要表示可执行文件。它可以是其扩展名已经与系统上安装的应用程序关联的任何文件类型

                p.StartInfo.UseShellExecute = false;//是否使用操作系统外壳程序启动进程

                p.StartInfo.RedirectStandardInput = true;//重定向标准输入方向

                p.StartInfo.RedirectStandardOutput = true;//重定向标准输出方向

                p.StartInfo.RedirectStandardError = true;//是否将进程的错误输出写入 Process 实例的

//StandardError 成员

                p.StartInfo.CreateNoWindow = true;//是否显示CMD命令提示符窗口

                string strOutput = null;//接收dos命令执行结果

                p.Start();
                p.StandardInput.WriteLine(@"cd e:\downloads\");//这个就是要执行的dos命令
                p.StandardInput.WriteLine("exit");//退出CMD
                strOutput= p.StandardOutput.ReadToEnd();//取得CMD执行结果可用于调用或其它用途
          
                p.WaitForExit();
                p.Close();

              
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
     }

   请注意:在上面的示例中,并不是每一句代码都是必需的,可根据实际需要灵活更改。其中FileName是必须指

定的,Start()方法也是必须调用的。

  示例2.调用记事本程序并打开已存在的文档,假设打开E盘下的"笑话.txt"这个文本文件:
   2.1可以在示例一中将 p.StartInfo的FileName属性指定为"笑话.txt",如:p.StartInfo.FileName = "笑

话.txt"。
   2.2也可以直接执行下面的命令
    System.Diagnostics.Process.Start("notepad.exe", @"E:\笑话.txt");
  如果只是想打开记事本并不需要打开已有文件,直接调用"notepad.exe"文件即可。

  其实FileName属性后面的内容就相当于你在开始菜单的运行栏里面输入的内容一样,只要在运行里面输入命令可

以得到结果就可以直接写在这里,同样获得一样的结果。
  小提醒:如果要执行的dos命令目录中包含空格,则需要用引号(")将整个路径包含起来,否则将会无法执行,相

信但凡有一点dos知识的朋友都会知道这一点。
              
 更多的帮助内容还是看权威的.NET Framework帮助文档吧。。。。。。。。。

posted @ 2008-01-04 13:44  phcis  阅读(2330)  评论(0编辑  收藏  举报