程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 簡單掌握Windows中C#啟動外部程序進程的方法

簡單掌握Windows中C#啟動外部程序進程的方法

編輯:關於C語言

許多用戶在程序開發過程中需要使用C#啟動一個外部程序(進程),在使用完畢該外部程序後,又希望能將其關閉。我們特在此對C#啟動和關閉外部進程的方法進行一個簡單的介紹。

  C#啟動外部程序(進程)有兩種方法:一種是直接使用C#提供的Process類,利用類的函數操作來直接啟動外部程序;另一種方法是使用傳統的Win32 API函數CreateProcess來實現外部進程的啟動。

  使用C#提供的Process類來啟動外部程序方法比較簡單,例舉代碼如下:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 using System.Diagnostics; // 包含了Process類的定義 int myprocessID; // 進程ID // 方法一:直接使用.Net提供的Process類來實現外部程序的啟動 private void openButton_Click(object sender, EventArgs e) {   Process myProcess = Process.Start('\\NandFlash\\SerialTST.exe', ''); // 啟動外部進程   myprocessID = myProcess.Id; // 獲得該外部進程ID }   使用傳統的Win32 API函數的方法相對復雜,代碼如下: using System.Runtime.InteropServices; // 使用外部Win32 API #region Win32 API CreateProcess函數聲明做函數申明。 [DllImport('coredll.Dll', EntryPoint = 'CreateProcess', SetLastError = true)] extern static int CreateProcess(string strImageName, string strCmdLine,            IntPtr pProcessAttributes, IntPtr pThreadAttributes,         int bInheritsHandle, int dwCreationFlags,                IntPtr pEnvironment, IntPtr pCurrentDir,                IntPtr bArray, ProcessInfo oProc); public class ProcessInfo {   public int hProcess;   public int hThread;   public int ProcessID;   public int ThreadID; } #endregion

方法二:使用Win32 API來實現外部程序的啟動

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 private void openButton_Click(object sender, EventArgs e) {   ProcessInfo pi = new ProcessInfo();   CreateProcess('\\NandFlash\\SerialTST.exe', '', IntPtr.Zero, IntPtr.Zero,          0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, pi);   myprocessID = pi.ProcessID; // 得到該程序的ID }   關閉外部進程的方法就是直接通過獲得的該外部進程的ID來關閉它。這裡只介紹使用.Net的Process類的方法: // 關閉外部進程 private void closeButton_Click(object sender, EventArgs e) {   Process myProcessA = Process.GetProcessById(myprocessID); // 通過ID關聯進程   myProcessA.Kill(); // kill進程 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved