關於.Net中Process的使用方法和各種用途彙總

来源:http://www.cnblogs.com/menghuijinxi/archive/2016/08/03/5734274.html
-Advertisement-
Play Games

簡介: .Net中Process類功能十分強大。它可以接受程式路徑啟動程式,接受文件路徑使用預設程式打開文件,接受超鏈接自動使用預設瀏覽器打開鏈接,或者打開指定文件夾等等功能。 想要使用Process類之前,需要先引用using System.Diagnostics; Process類用法1: Pr ...


簡介:

  .Net中Process類功能十分強大。它可以接受程式路徑啟動程式,接受文件路徑使用預設程式打開文件,接受超鏈接自動使用預設瀏覽器打開鏈接,或者打開指定文件夾等等功能。

  想要使用Process類之前,需要先引用using System.Diagnostics;

 

Process類用法1:

  Process類有很多種使用方式,比如我只想打開一個應用程式的話,直接調用Process.Start("應用的路徑");即可打開對用的應用程式,用預設程式打開文件,打開超鏈接,打開文件夾也都只用給一個路徑即可。

  Process.Start("");調用之後大多數時候都會返回一個Process對象,但是參數是超鏈接和路徑的話是不會返回Process對象的。 

Process.Start(@"C:\Users"); //使用資源管理器打開目錄
Process.Start("http://www.cnblogs.com/menghuijinxi/p/5734274.html");  //使用預設瀏覽器打開網頁
Process.Start(@"C:\Users\XU\Desktop\新建文本文檔.txt"); //使用預設應用程式打開文件
rocess.Start(@"G:\Unity 5.3.5f1\Editor\Unity.exe");  //打開應用程式

 

Process類用法2:

  Process.Start("軟體路徑", "啟動時傳遞的參數");

  此方式啟動進程也很簡單,第一個參數給軟體的路徑,第二個參數給文件路徑。

  軟體路徑一定要是存在的路徑,不然會拋異常。

  如果給的文件路徑參數是錯誤的,而且是不受支持的話會怎麼樣?這裡我們要詳細介紹一下第二個參數的到底是什麼了?我們先看下代碼:

static void Main(string[] args)
{      
    Console.ReadKey();
}

  這段代碼是控制台應用程式中的,很多學了很長時間c#的同學恐怕都還不知道上面的args參數是幹嘛用的吧,平時我們通過編譯器創建出的控制台應用程式預設就有這些代碼,時間長了都習以為常了,也沒有什麼人在意這些參數的用途,不知道沒關係,咱們一一道來。

  我們從Main函數開始詳細講解,Main函數是整個應用程式的入口函數這個不用多說了,程式一開始運行就是調用這個函數。Main函數其實是可以有返回值的,這返回值有什麼用,還有如何獲取一個進程執行完畢後的返回值這些問題暫時先不討論。我們先討論Main函數的參數問題,經過測試C#中的Main數有且只能有一個字元數組參數。我們來詳細講解一下這個過程,假設其他應用程式"程式1"使用Process類啟動了我們寫的這個應用程式"程式2"(通常是操作系統完成這項工作),並傳入一個參數(Process.Start()方法的第二個參數),這個時候"程式2"的Main方法會被調用(期間怎麼被調用之類的我也不是很清楚了),並且被傳入一個參數(args參數),然後我們就可以獲取到"程式1"傳給我們的需要處理的參數了,之後我們就能隨心所欲的處理這些參數了。

  所以說args參數其實就是在程式啟動時或者說Main方法被調用時傳入的一個參數。

  這樣我們也就能理解第二個參數如果是不合法的話,會出現什麼情況了吧,這就不歸我們管了,這是我們調用的應用程式該處理的事情。

 

static class Program
{
     [STAThread]
     static void Main(string[] args)
     {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
     }
}

  這個是個Win32程式,Win32程式預設生成的代碼並沒有參數,不過不代表不支持參數,我們可以自行添加。

   

Process使用方法3:

  Process.Start("應用程式名稱");

Process.Start("cmd.exe");

 

Kill方法的用途和註意事項:

  在獲取到返回值Process對象後我們可以通過Kill()方法結束掉該進程,調用此方法前要確保進程在運行不然會拋異常。使用Process類啟動某些軟體後你會發現,進程對象獲取到了,而且對應的軟體已經打開了,但是在結束進程時會拋"進程已停止運行的異常",這種情況是你使用Process類啟動的應用程式啟動了另一個應用程式併在你調用Kill方法前關閉了自己。如果不太理解這句話,我詳細說來,你寫了一個無視窗程式名為"程式1",然後在"程式1"中用Process類啟動了另一個應用程式叫"程式2",在Process.Start("程式2");這行代碼調用完後自動關閉"程式1",這樣的話你用Process類啟動"程式1"後又試圖關閉"程式1"當然會拋異常啦。

  

  今天先寫到這裡,待續。。。 

文章原創,歡迎轉載,請標明出處。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 類的基本寫法: constructor構造函數其實就相當於ES5中的構造函數,用於定義類的實例屬性; 而在類中定義的其他方法像這裡的toString方法就相當於ES5中定義在原型prototype上的共用方法。 就是語法糖嘛。 constructor方法 這是類的預設方法,類必須有該方法,如果沒有顯 ...
  • 總結一下自己給編輯器定製樣式的過程中所遇到的問題,主要是編輯器的二次開發介面,以及用angular定製樣式,問題不少,終於在**的幫助下,完成了,還剩下老版本和新版本的交互沒有弄好,不過不難。下麵分別講解問題。 ueditor的開發 你可以在官網上下載任意版本,進行使用即可:http://uedit ...
  • JS DOM 來控制HTML元素 (ps:這個有很多方法,挑一些詳解,嘻嘻) 1.getElementsByName():獲取name. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` 例:<p name="pn">hello</p> <p name="pn">hello</ ...
  • JavaScript借鑒了許多語言的特點;例如語法類Java、函數借鑒Scheme、原型繼承借鑒自Self、正則表達式借鑒於Perl。(DC Javascript:語言精粹)。 首先,每個JS是一門基於原型繼承的面向對象的語言。裡面數組是對象、函數是對象、“對象”當然還是對象。而且每個對象都有一個i ...
  • SQL:Structured Quety Language SQL SERVER是一個以客戶/伺服器(c/s)模式訪問、使用Transact-SQL語言的關係型資料庫管理子系統(RDBMS) DBMS :Database Management System資料庫管理系統 資料庫:程式用來存取數據的 ...
  • 最近因為項目原因需要在阿裡雲伺服器上部署mongodb,網上查閱了一些資料,特此記錄一下步驟 1.運行apt-get install mongodb命令安裝mongodb服務(如果提示找不到該package,說明apt-get的資源庫版本比較舊,運行apt-get update來更新資源庫) 2.安 ...
  • 在查詢分析器中執行:select rand(),可以看到結果會是類似於這樣的隨機小數:0.36361513486289558,像這樣的小數在實際應用中用得不多,一般要取隨機數都會取隨機整數。那就看下麵的兩種隨機取整數的方法:1、A:select floor(rand()*N) 生成的數是這樣的:12 ...
  • 之前介紹了Linux的Screen命令,今天介紹一個更為強大的終端工具Tmux。 Tmux 是一個用於在一個終端視窗中運行多個終端會話的工具。它基本能替代nohup以及screen,甚至比它們更為強大: Screen 的項目大體上已經終止,並且代碼中有大量的問題,使用起來很不穩定; Tmux 是一個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...