zoukankan      html  css  js  c++  java
  • ASP.NET、C#调用外部可执行exe文件--多种方案

    一、

    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());
            }

    二、

    //调用外部程序导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可执行文件所用到的属性和事件.System.Diagnostics.Process pExecuteEXE = new System.Diagnostics.Process();
    pExecuteEXE.StartInfo.FileName = @"E:Delphi.exe";
    pExecuteEXE.StartInfo.Arguments = "'paramstr1 paramstr2,paramstr3'";
    pExecuteEXE.Start();
    pExecuteEXE.WaitForExit();//无限期等待完成
    //pExecuteEXE.WaitForExit(10000);//等待最长10秒钟完成。Delphi可执行程序作为被调用程序,主要是接收参数信息,执行程序,由于程序执行程序完毕不能返回给调用程序信息,只能将信息写入某一位置等待调用者读取。
    procedure    TForm1.Button1Click(Sender:    TObject);   
        
    var   
           i:integer;   
    begin   
         self.Caption   :='';   
        for i:=0 to paramcount do
         begin   
             self.Caption   :=self.Caption+ '['+inttostr(i)+':'+paramstr(i)+']';   
         end;   
        
    end;   

    完成后退出。

    这里是一个简单的调用例子,可以效仿:
    *   功         能:通过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("系统找不到指定的程序文件。 {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);
    }
    }

  • 相关阅读:
    【AGC010 C】Cleaning
    【未知来源】火神的鱼
    【2017 北京集训 String 改编版】子串
    【未知来源】记忆
    【2017 江苏集训】子串
    【未知来源】循环移位
    【未知来源】K-th String
    【hdu 6067】Big Integer
    【CERC 2014 E】2048
    【hdu 6155】Subsequence Count
  • 原文地址:https://www.cnblogs.com/elves/p/3713448.html
Copyright © 2011-2022 走看看