欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單掌握Windows中C#啟動(dòng)外部程序進(jìn)程的方法

 更新時(shí)間:2016年03月17日 17:11:52   投稿:goldensun  
這篇文章主要介紹了Windows中C#啟動(dòng)外部程序進(jìn)程的方法,例子中同時(shí)包括了進(jìn)程關(guān)閉的方法,需要的朋友可以參考下

許多用戶在程序開發(fā)過程中需要使用C#啟動(dòng)一個(gè)外部程序(進(jìn)程),在使用完畢該外部程序后,又希望能將其關(guān)閉。我們特在此對(duì)C#啟動(dòng)和關(guān)閉外部進(jìn)程的方法進(jìn)行一個(gè)簡單的介紹。

  C#啟動(dòng)外部程序(進(jìn)程)有兩種方法:一種是直接使用C#提供的Process類,利用類的函數(shù)操作來直接啟動(dòng)外部程序;另一種方法是使用傳統(tǒng)的Win32 API函數(shù)CreateProcess來實(shí)現(xiàn)外部進(jìn)程的啟動(dòng)。

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

using System.Diagnostics; // 包含了Process類的定義

int myprocessID;  // 進(jìn)程ID

// 方法一:直接使用.Net提供的Process類來實(shí)現(xiàn)外部程序的啟動(dòng)
private void openButton_Click(object sender, EventArgs e)
{
  Process myProcess = Process.Start('\\NandFlash\\SerialTST.exe', ''); // 啟動(dòng)外部進(jìn)程
  myprocessID = myProcess.Id; // 獲得該外部進(jìn)程ID
}

  使用傳統(tǒng)的Win32 API函數(shù)的方法相對(duì)復(fù)雜,代碼如下:

using System.Runtime.InteropServices;  // 使用外部Win32 API

#region Win32 API CreateProcess函數(shù)聲明做函數(shù)申明。
[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來實(shí)現(xiàn)外部程序的啟動(dòng)

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
}

  關(guān)閉外部進(jìn)程的方法就是直接通過獲得的該外部進(jìn)程的ID來關(guān)閉它。這里只介紹使用.Net的Process類的方法:

// 關(guān)閉外部進(jìn)程
private void closeButton_Click(object sender, EventArgs e)
{
  Process myProcessA = Process.GetProcessById(myprocessID);   // 通過ID關(guān)聯(lián)進(jìn)程
  myProcessA.Kill();          // kill進(jìn)程
}

相關(guān)文章

  • C#實(shí)現(xiàn)的ZPL條碼打印類完整實(shí)例

    C#實(shí)現(xiàn)的ZPL條碼打印類完整實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的ZPL條碼打印類,結(jié)合實(shí)例形式詳細(xì)分析了C#實(shí)現(xiàn)條碼打印的原理與使用方法,代碼注釋中備有詳盡的說明,便于理解使用,需要的朋友可以參考下
    2016-06-06
  • C#中dotnetcharting的用法實(shí)例詳解

    C#中dotnetcharting的用法實(shí)例詳解

    這篇文章主要介紹了C#中dotnetcharting的用法,以實(shí)例形式詳細(xì)分析了基于dotnetcharting的圖表繪制的各種常用方法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • 基于C#實(shí)現(xiàn)串口通信

    基于C#實(shí)現(xiàn)串口通信

    這篇文章主要為大家詳細(xì)介紹了基于C#實(shí)現(xiàn)串口通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用NOPI讀取Word、Excel文檔內(nèi)容

    使用NOPI讀取Word、Excel文檔內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了使用NOPI讀取Word、Excel文檔內(nèi)容的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C#中反射和擴(kuò)展方法如何運(yùn)用

    C#中反射和擴(kuò)展方法如何運(yùn)用

    這篇文章主要為大家詳細(xì)介紹了C#中反射和擴(kuò)展方法的運(yùn)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#使用哈希表實(shí)現(xiàn)XML文件查詢

    C#使用哈希表實(shí)現(xiàn)XML文件查詢

    這篇文章主要為大家詳細(xì)介紹了C#如何使用哈希表實(shí)現(xiàn)XML文件查詢功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-02-02
  • C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法

    C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)輸入漢字獲取其拼音(漢字轉(zhuǎn)拼音)的2種方法,本文分別給出了使用微軟語言包、手動(dòng)編碼實(shí)現(xiàn)兩種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2015-01-01
  • C#中的預(yù)定義類型與引用類型

    C#中的預(yù)定義類型與引用類型

    這篇文章介紹了C#中的預(yù)定義類型與引用類型,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#類和結(jié)構(gòu)詳解

    C#類和結(jié)構(gòu)詳解

    本文詳細(xì)講解了C#中的類和結(jié)構(gòu),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 淺談C#中HttpWebRequest與HttpWebResponse的使用方法

    淺談C#中HttpWebRequest與HttpWebResponse的使用方法

    本篇文章主要介紹了淺談C#中HttpWebRequest與HttpWebResponse的使用方法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01

最新評(píng)論