首页 > Web开发 > 详细

ASP.NET、C#调用外部可执行exe文件--多种方案

时间:2014-05-07 16:51:12      阅读:1077      评论:0      收藏:0      [点我收藏+]

一、

bubuko.com,布布扣
try
        {
            //方法一
            //调用自己的exe传递参数
            //Process proc = new Process();
            //proc.StartInfo.FileName = @"D:\\hotelsoft\\zk.exe";
            //proc.Start();
            //Thread.Sleep(3000);//暂停3秒
            //foreach (System.Diagnostics.Process pro in 

System.Diagnostics.Process.GetProcessesByName("zk"))
            //{
            //  查找并关闭进程
            //    pro.Kill();
            //}

            //方法二
            ProcessStartInfo startInfo = new ProcessStartInfo(@"D:\\hotelsoft\\zk.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);
        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
bubuko.com,布布扣

 

二、

//调用外部程序导cmd命令行
    Process p = new Process();
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.CreateNoWindow = false;
    p.Start(); 
    / /向cmd.exe输入command 
    p.StandardInput.WriteLine("cd C:\\Inetpub\\wwwroot\\Paicdom\\PaWebService\\PaWeb\\Manage\\Exportcsv");
    //cmd又调用了ociuldr.ex
    p.StandardInput.WriteLine("ociuldr.exe");
    p.StandardInput.WriteLine("exit"); //需要有这句,不然程序会挂机
    //string output = p.StandardOutput.ReadToEnd(); 这句可以用来获取执行命令的输出结果

我在ASP.NET中调用,一直想看看到执行窗口,但无论怎么设置参数,都看不到。不知如何。

 

 

三、

C#程序作为调用这需要生成一个Progress类,该类提供了调用EXE可执行文件所用到的属性和事件.bubuko.com,布布扣System.Diagnostics.Process pExecuteEXE = new System.Diagnostics.Process();
bubuko.com,布布扣pExecuteEXE.StartInfo.FileName = @"E:\Delphi.exe";
bubuko.com,布布扣pExecuteEXE.StartInfo.Arguments = "‘paramstr1 paramstr2,paramstr3‘";
bubuko.com,布布扣pExecuteEXE.Start();
bubuko.com,布布扣pExecuteEXE.WaitForExit();//无限期等待完成
bubuko.com,布布扣//pExecuteEXE.WaitForExit(10000);//等待最长10秒钟完成。Delphi可执行程序作为被调用程序,主要是接收参数信息,执行程序,由于程序执行程序完毕不能返回给调用程序信息,只能将信息写入某一位置等待调用者读取。
bubuko.com,布布扣procedure    TForm1.Button1Click(Sender:    TObject);   
bubuko.com,布布扣    
bubuko.com,布布扣var   
bubuko.com,布布扣       i:integer;   
bubuko.com,布布扣begin   
bubuko.com,布布扣     self.Caption   :=‘‘;   
bubuko.com,布布扣    for i:=0 to paramcount do
bubuko.com,布布扣     begin   
bubuko.com,布布扣         self.Caption   :=self.Caption+ ‘[‘+inttostr(i)+‘:‘+paramstr(i)+‘]‘;   
bubuko.com,布布扣     end;   
bubuko.com,布布扣    
bubuko.com,布布扣end;   
bubuko.com,布布扣

完成后退出。

 

这里是一个简单的调用例子,可以效仿:
*   功         能:通过C#程序调用   Windows   记事本程序   编辑一个
*   名为   test.txt   的文本文件。
*
*   在整个程序中   System.Diagnostics.Process.Start(Info)  
*   为主要语句。
*   如果只是单独执行一个外部程序,可用一条如下代码即可:
*   System.Diagnostics.Process.Start(
*   "外部程序名","启动参数");
*/

using   System;

class   test
{
static   void   Main()
{

//声明一个程序信息类
System.Diagnostics.ProcessStartInfo   Info   =   new   System.Diagnostics.ProcessStartInfo();

//设置外部程序名
Info.FileName   =   "notepad.exe";

//设置外部程序的启动参数(命令行参数)为test.txt
Info.Arguments   =   "test.txt";

//设置外部程序工作目录为   C:\
Info.WorkingDirectory   =   "C:\\";

//声明一个程序类
System.Diagnostics.Process   Proc   ;

try
{
//
//启动外部程序
//
Proc   =   System.Diagnostics.Process.Start(Info);
}
catch(System.ComponentModel.Win32Exception   e)
{
Console.WriteLine("系统找不到指定的程序文件。\r{0}",   e);
return;
}

//打印出外部程序的开始执行时间
Console.WriteLine("外部程序的开始执行时间:{0}",   Proc.StartTime);

//等待3秒钟
Proc.WaitForExit(3000);

//如果这个外部程序没有结束运行则对其强行终止
if(Proc.HasExited   ==   false)
{
Console.WriteLine("由主程序强行终止外部程序的运行!");
Proc.Kill();
}
else
{
Console.WriteLine("由外部程序正常退出!");
}
Console.WriteLine("外部程序的结束运行时间:{0}",   Proc.ExitTime);
Console.WriteLine("外部程序在结束运行时的返回值:{0}",   Proc.ExitCode);
}
}

ASP.NET、C#调用外部可执行exe文件--多种方案,布布扣,bubuko.com

ASP.NET、C#调用外部可执行exe文件--多种方案

原文:http://www.cnblogs.com/elves/p/3713448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!