C# 打開指定路徑下文件
/// <summary> /// 打開指定路徑下文件,比如:Word、Excel、Dll、圖片等都可以(前提是你已經安裝打開程序的對應軟件) /// </summary> /// <param name="NewFileName">eg:D:\Test\模版8.doc</param> /// <param name="NewFileName">eg:D:\Test\模版8.doc</param> private void OpenFile(string NewFileName) { Process process = new Process(); ProcessStartInfo processStartInfo = new ProcessStartInfo(NewFileName); process.StartInfo = processStartInfo; # region 下麵這段被注釋掉代碼(可以用來全屏打開代碼) ////建立新的係統進程 //System.Diagnostics.Process process = new System.Diagnostics.Process(); ////設置文件名,此處為圖片的真實路徑+文件名(需要有後綴) //process.StartInfo.FileName = NewFileName; ////此為關鍵部分。設置進程運行參數,此時為最大化窗口顯示圖片。 //process.StartInfo.Arguments = "rundll32.exe C://WINDOWS//system32//shimgvw.dll,ImageView_Fullscreen"; //// 此項為是否使用Shell執行程序,因係統默認為true,此項也可不設,但若設置必須為true //process.StartInfo.UseShellExecute = true; #endregion try { process.Start(); try { // process.WaitForExit(); } catch (Exception ex) { throw ex; } } catch (Exception ex) { throw ex; } finally { try { if (process != null) { process.Close(); process = null; } } catch { } } }
今天,測試的時候,不知道誰在
process.StartInfo = processStartInfo;這個句話的後麵,添加了這麼一句話:
process.StartInfo.UseShellExecute = false;
一開始也沒注意,然後一直報下麵這個錯誤:
The specified executable is not a validapplication for this OS platform.
解釋:
ProcessStartInfo.UseShellExecute 屬性:獲取或設置一個值,該值指示是否使用操作係統外殼程序啟動進程。
屬性值:
若要在啟動進程時使用外殼程序,則為 true;否則,直接從可執行文件創建進程。默認為 true。將屬性設置為 false 能夠重定向輸入流、輸出流和錯誤流。否則不行。
使用操作係統外殼程序啟動進程時,可以使用 Process 組件啟動任何文檔(可以是與可執行文件關聯的、具有默認打開操作的任何注冊文件類型),並對該文件執行操作(如打印)。如果 UseShellExecute 為 false,則隻能使用 Process組件啟動可執行文件。
最後更新:2017-04-03 12:55:32