C#如何運行外部程序(打開可執行程序):ShellExcute和Process


最近的任務用到C#來調用C++內核程序,也就是C++編譯運行后生成的.exe文件。網搜了一下C#中運行外部程序大致有兩種方法,在此稍作總結:

(1)使用API函數ShellExcute

          添加引用 using System.Runtime.InteropServices;

public enum ShowWindowCommands : int
        {
            SW_HIDE = 0,
            SW_SHOWNORMAL = 1,    //用最近的大小和位置顯示,激活
            SW_NORMAL = 1,
            SW_SHOWMINIMIZED = 2,
            SW_SHOWMAXIMIZED = 3,
            SW_MAXIMIZE = 3,
            SW_SHOWNOACTIVATE = 4,
            SW_SHOW = 5,
            SW_MINIMIZE = 6,
            SW_SHOWMINNOACTIVE = 7,
            SW_SHOWNA = 8,
            SW_RESTORE = 9,
            SW_SHOWDEFAULT = 10,
            SW_MAX = 10
        }
        [DllImport("shell32.dll")]
        public static extern IntPtr ShellExecute(
            IntPtr hwnd,
            string lpszOp,
            string lpszFile,
            string lpszParams,
            string lpszDir,
            ShowWindowCommands FsShowCmd
            );

---------------------

執行語句只有這句:

         ShellExecute(IntPtr.Zero, "open", "testIO.exe", null, null, ShowWindowCommands.SW_SHOWNORMAL);

         對於ShellExecute函數,http://baike.baidu.com/link?url=j6AhrfaS5YyMQ_8peNIdCsM0SWCjMoVDK_Lbzi5A4lz7VjNNCRsZU-bXrYFgfe6T_Rd1MKjQ9GelkuolNqNx1K

//調用計算器
       ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
       //調用 記事本
       ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL);
       ●hWnd:用於指定父 窗口句柄。當 函數調用過程出現錯誤時,它將作為Windows消息窗口的父窗口。例如,可以將其設置為 應用程序窗口句柄,即Application.Handle,也可以將其設置為 桌面窗口句柄(用GetDesktopWindow函數獲得)。
       ●Operation:用於指定要進行的操作。其中“open”操作表示執行由FileName參數指定的程序,或打開由FileName參數指定的文件或文件夾;“print”操作表示打印由FileName參數指定的文件;“explore”操作表示瀏覽由FileName參數指定的文件夾。當參數設為nil時,表示執行默認操作“open”。
       ●FileName:用於指定要打開的文件名、要執行的程序文件名或要瀏覽的文件夾名。
       ●Parameters:若FileName參數是一個可執行程序,則此參數指定 命令行參數,否則此參數應為nil或PChar(0)。
       ●Directory:用於指定默認目錄。
       ●ShowCmd:若FileName參數是一個可執行程序,則此參數指定程序窗口的初始顯示方式,否則此參數應設置為0。
       若ShellExecute 函數調用成功,則返回值為被執行程序的實例句柄。若返回值小於32,則表示出現錯誤。

       另外,ShellExecute還有一些特殊用法,如打開網頁,打開郵件窗口等,詳細內容看參看上面的鏈接。

(2)使用Process類

       添加引用using System.Diagnostics;


      Process process = new Process();
      //process.StartInfo.UseShellExecute = false;
      process.StartInfo.FileName = "testIO.exe";
      //process.StartInfo.CreateNoWindow = true;
      process.Start();

      如此即可用C#打開testIO.exe文件。。。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM