ASP.NET、C#調用外部可執行exe檔案--多種方案

來源:互聯網
上載者:User

標籤:style   blog   class   code   java   tar   

一、

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("系統找不到指定的程式檔案。\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);
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.