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文件。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章