C# Process.Start()方法詳解 .

http://blog.csdn.net/czw2010/article/details/7896264html

System.Diagnostics.Process.Start(); 能作什麼呢?它主要有如下幾個功能:shell

一、打開某個連接網址(彈窗)。windows

二、定位打開某個文件目錄。瀏覽器

三、打開系統特殊文件夾,如「控制面板」等。服務器

那麼它是怎麼實現這幾個功能的呢?在講應用前,咱們先來看看Process.Star()的構造方法。網絡

 

名稱 說明
Process.Start () 啓動(或重用)此 Process 組件的 StartInfo 屬性指定的進程資源,並將其與該組件關聯。
Process.Start (ProcessStartInfo) 啓動由包含進程啓動信息(例如,要啓動的進程的文件名)的參數指定的進程資源,並將該資源與新的 Process 組件關聯。
Process.Start (String) 經過指定文檔或應用程序文件的名稱來啓動進程資源,並將資源與新的 Process 組件關聯。
Process.Start (String, String) 經過指定應用程序的名稱和一組命令行參數來啓動一個進程資源,並將該資源與新的 Process 組件相關聯。
Process.Start (String, String, SecureString, String) 經過指定應用程序的名稱、用戶名、密碼和域來啓動一個進程資源,並將該資源與新的 Process 組件關聯起來。
Process.Start (String, String, String, SecureString, String) 經過指定應用程序的名稱和一組命令行參數、用戶名、密碼和域來啓動一個進程資源,並將該資源與新的 Process 組件關聯起來。

 

(1) publicbool Start ()app

System.Diagnostics.Process process = new System.Diagnostics.Process();tcp

process.StartInfo.FileName = "iexplore.exe";   //IE瀏覽器,能夠更換ide

process.StartInfo.Arguments = "http://www.baidu.com";函數

process.Start();

 

(2) publicstaticProcessStart (ProcessStartInfostartInfo)

System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo();

processStartInfo.FileName = "explorer.exe";  //資源管理器

processStartInfo.Arguments = @"D:\";

System.Diagnostics.Process.Start(processStartInfo);

 

(3) publicstaticProcessStart (stringfileName)

System.Diagnostics.Process.Start(@"D:\Program Files\Tencent\QQ\Bin\QQ.exe");  //直接調用打開文件

 

(4) Process.Start (StringfileName, Stringarguments) 

System.Diagnostics.Process.Start("explorer.exe", "D:\\Readme.txt");   //直接打開文件Readme.txt

 

上面已經舉例了用process.start()打開網站的方法,如今講講用processs.star()定位到某個文件的方法。

這種定位方法相似於快捷方式上的查找目標://explorer /select,"D:\Program Files\Tencent\QQ\Bin\QQ.exe"

String path = @"D:\Program Files\Tencent\QQ\Bin\QQ.exe";

System.Diagnostics.Process.Start("explorer.exe", "/select," +path);  //定位打開D:\Program Files\Tencent\QQ\Bin文件目錄並選中了QQ.exe

注意:/select後還有個逗號(,)。

 

接下來來說講經過調用rundll32.exe來打開一些系統特定文件,先簡單介紹下rundll32.exe的功能和做用。

顧名思義,rundll32就是"執行32位的dll文件",也就是執行dll文件中的內部函數,能夠以命令行的形式調用windows32位的動態連接庫。

同理,rundll.exe就是"執行16位的dll文件",調用的是16位的動態連接庫。咱們經過rundll32.exe執行指令來完成一些功能。

舉個例子:

System.Diagnostics.Process.Start("rundll32.exe","user.exe,restartwindows");      //系統重啓命令

rundll32命令大全


命令列:rundll32.exe user.exe,restartwindows 
功能: 系統重啓

命令列:rundll32.exe user.exe,exitwindows
功能: 關閉系統

命令列: rundll32.exe shell32.dll,Control_RunDLL 
功能: 顯示控制面板 

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1 
功能: 顯示「控制面板-輔助選項-鍵盤」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2 
功能: 顯示「控制面板-輔助選項-聲音」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3 
功能: 顯示「控制面板-輔助選項-顯示」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4 
功能: 顯示「控制面板-輔助選項-滑鼠」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5 
功能: 顯示「控制面板-輔助選項-傳統」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1 
功能: 執行「控制面板-添加新硬體」嚮導。 

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter 
功能: 執行「控制面板-添加新印表機」嚮導。 

 

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
功能: 顯示 「控制面板-添加/刪除程式」 面板。

 

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1 

功能: 顯示 「控制面板-添加/刪除程式-安裝/卸載」 面板。 

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2 
功能: 顯示 「控制面板-添加/刪除程式-安裝Windows」 面板。 

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3 
功能: 顯示 「控制面板-添加/刪除程式-啓動盤」 面板。 

命令列: rundll32.exe syncui.dll,Briefcase_Create 
功能: 在桌面上創建一個新的「個人公文包」。 

命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll 
功能: 顯示覆制軟碟視窗 

命令列: rundll32.exe apwiz.cpl,NewLinkHere %1 
功能: 顯示「創建快捷方式」的對話框,所創建的快捷方式的位置由%1參數決定。 

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0 
功能: 顯示「日期與時間」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1 
功能: 顯示「時區」選項視窗。 

命令列: rundll32.exe rnaui.dll,RnaDial [某個撥號鏈接的名稱] 
功能: 顯示某個撥號鏈接的撥號視窗。若是已經撥號鏈接,則顯示目前的鏈接狀態的視窗。 

命令列: rundll32.exe rnaui.dll,RnaWizard 
功能: 顯示「新建撥號鏈接」嚮導的視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0 
功能: 顯示「顯示屬性-背景」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1 
功能: 顯示「顯示屬性-螢屏保護」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2 
功能: 顯示「顯示屬性-外觀」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3 
功能: 顯示顯示「顯示屬性-屬性」選項視窗。 

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder 
功能: 顯示Windows的「字體」檔案夾。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3 
功能: 一樣是顯示Windows的「字體」檔案夾。 

命令列: rundll32.exe shell32.dll,SHFormatDrive 
功能: 顯示格式化軟碟對話框。 

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0 
功能: 顯示「控制面板-遊戲控制器-通常」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1 
功能: 顯示「控制面板-遊戲控制器-進階」選項視窗。 

命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文檔) 
功能: 列印HTML文檔。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl 
功能: 顯示Microsoft Exchange通常選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0 
功能: 顯示「控制面板-滑鼠」 選項 。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1 
功能: 顯示 「控制面板-鍵盤屬性-速度」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1 
功能: 顯示 「控制面板-鍵盤屬性-語言」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2 
功能: 顯示Windows「印表機」檔案夾。 

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4 
功能: 顯示「控制面板-輸入法屬性-輸入法」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add 
功能: 執行「添加新調制解調器」嚮導。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0 
功能: 顯示「控制面板-多媒體屬性-音頻」屬性頁。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1 
功能: 顯示「控制面板-多媒體屬性-視頻」屬性頁。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 
功能: 顯示「控制面板-多媒體屬性-MIDI」屬性頁。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3 
功能: 顯示「控制面板-多媒體屬性-CD音樂」屬性頁。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4 
功能: 顯示「控制面板-多媒體屬性-設備」屬性頁。 

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1 
功能: 顯示「控制面板-聲音」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl 
功能: 顯示「控制面板-網路」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl 
功能: 顯示ODBC32資料管理選項視窗。 

命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:/path/filename} 
功能: 顯示指定檔案(drive:/path/filename)的「打開方式」對話框。 

命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl 
功能: 顯示「控制面板-密碼」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl 
功能: 顯示「控制面板-電源管理屬性」選項視窗。 

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder 
功能: 顯示Windows「印表機」檔案夾。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0 
功能: 顯示「控制面板-區域設置屬性-區域設置」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1 
功能: 顯示「控制面板-區域設置屬性-數字」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2 
功能: 顯示「控制面板-區域設置屬性-貨幣」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3 
功能: 顯示「控制面板-區域設置屬性-時間」選項視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4 
功能: 顯示「控制面板-區域設置屬性-日期」選項視窗。 

命令列: rundll32.exe desk.cpl,InstallScreenSaver [螢屏保護檔案名] 
功能: 將指定的螢屏保護檔案設置爲Windows的屏保,並顯示螢屏保護屬性視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0 
功能: 顯示「控制面板-系統屬性-傳統」屬性視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1 
功能: 顯示「控制面板-系統屬性-設備管理器」屬性視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2 
功能: 顯示「控制面板-系統屬性-硬體配置檔案」屬性視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3 
功能: 顯示「控制面板-系統屬性-性能」屬性視窗。 

命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl 
功能: 顯示「撥號屬性」選項視窗 

命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl 

功能: 顯示「桌面主題」選項面板

 

命令列: rundll32.exe shell32.dll,Control_RunDLL firewall.cpl
功能: 顯示「Windows防火牆"面板

命令列: rundll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW
功能: 顯示「無線網絡設置"面板

更多的命令請到這裏下載:http://download.csdn.net/detail/czw2010/4530206

 


System.Diagnostics.Process.Start("notepad.exe");        -- 打開記事本

System.Diagnostics.Process.Start("calc.exe ");                -- 打開計算器

System.Diagnostics.Process.Start("regedit.exe ");           -- 打開註冊表

System.Diagnostics.Process.Start("mspaint.exe ");        -- 打開畫圖板

System.Diagnostics.Process.Start("write.exe ");              -- 打開寫字板

System.Diagnostics.Process.Start("mplayer2.exe ");        --打開播放器

System.Diagnostics.Process.Start("taskmgr.exe ");          --打開任務管理器

System.Diagnostics.Process.Start("eventvwr.exe ");          --打開事件查看器

System.Diagnostics.Process.Start("winmsd.exe ");           --打開系統信息

System.Diagnostics.Process.Start("winver.exe ");              --打開Windows版本信息

System.Diagnostics.Process.Start("mailto: "+ address);    -- 發郵件

 


shutdown.exe:

參數:-s 關機   -r重啓   -f強行   -t 時間    -a 取消關機   -l 註銷    -i 顯示用戶界面

System.Diagnostics.Process.Start("shutdown.exe","-r");              -- 關閉並重啓計算機

System.Diagnostics.Process.Start("shutdown.exe","-s -f");          -- 關閉計算機

System.Diagnostics.Process.Start("shutdown.exe","-s -f 30");     -- 30s後關閉計算機

System.Diagnostics.Process.Start("shutdown.exe","-l");              --註銷計算機

System.Diagnostics.Process.Start("shutdown.exe","-a");              --撤銷關閉計算機

 


SpecialFolder枚舉成員:

 

成員名稱 說明
ApplicationData 目錄,它用做當前漫遊用戶的應用程序特定數據的公共儲存庫。

漫遊用戶在網絡上的多臺計算機上工做。漫遊用戶的配置文件保存在網絡服務器上,當用戶登陸到某個系統上時,它會加載到該系統。

CommonApplicationData 目錄,它用做全部用戶使用的應用程序特定數據的公共儲存庫。
CommonProgramFiles 用於應用程序間共享的組件的目錄。
Cookies 用做 Internet Cookie 的公共儲存庫的目錄。
Desktop 邏輯桌面,而不是物理文件系統位置。
DesktopDirectory 用於物理上存儲桌面上的文件對象的目錄。

不該將此目錄與桌面文件夾自己混淆,後者是虛擬文件夾。

Favorites 用做用戶收藏夾項的公共儲存庫的目錄。
History 用做 Internet 歷史記錄項的公共儲存庫的目錄。
InternetCache 用做 Internet 臨時文件的公共儲存庫的目錄。
LocalApplicationData 目錄,它用做當前非漫遊用戶使用的應用程序特定數據的公共儲存庫。
MyComputer 「個人電腦」文件夾。
注意

因爲沒有爲「個人電腦」文件夾定義路徑,所以 MyComputer 常數將始終生成空字符串 ("")。

MyDocuments 「個人電腦」文件夾。
MyMusic 「My Music」文件夾。
MyPictures 「My Pictures」文件夾。
Personal 用做文檔的公共儲存庫的目錄。
ProgramFiles 「Program files」目錄。
Programs 包含用戶程序組的目錄。
Recent 包含用戶最近使用過的文檔的目錄。
SendTo 包含「發送」菜單項的目錄。
StartMenu 包含「開始」菜單項的目錄。
Startup 對應於用戶的「啓動」程序組的目錄。

每當用戶登陸、啓動 Windows NT 或更高版本或啓動 Windows 98 時,系統均會啓動這些程序。

System 「System」目錄。
Templates 用做文檔模板的公共儲存庫的目錄。

 

經過Environment.GetFolderPath(Environment.SpecialFolder.XXXXX);咱們能夠輕鬆地得到系統特殊文件夾的具體路徑,而後用Process.Start()方法打開該文件夾。

例如:

System.Diagnostics.Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.System));   //打開系統文件夾(System32文件夾)

 


 

 [System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
        private static extern int FindWindow(string ClassName, string WindowName);

[System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern int ShowWindow(int handle, int cmdShow);

[System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        private static extern int mciSendString(string lpstrCommand, string lpstrReturnstring, int uReturnLength, int hwndCallback);

        private const int SW_HIDE = 0;//API參數表示隱藏窗口
        private const int SW_SHOW = 5;//API參數表示用當前的大小和位置顯示窗口

        ShowWindow(FindWindow("Shell_TrayWnd", null), SW_HIDE);         -- 隱藏隱藏任務欄

        ShowWindow(FindWindow("Shell_TrayWnd", null), SW_SHOW);      --  顯示任務欄

        mciSendString("set CDAudio door open", null, 127, 0);       -- 彈出光驅

        mciSendString("set CDAudio door closed", null, 127, 0);     --關閉光驅

 

同步問題

調用執行檔後須要等待調用結束再往下執行 , 就像 ShellExecute 和ShellExecuteEx() .

解決的辦法是process.start()以後 判斷Process.HasExited的狀態 .

相關文章
相關標籤/搜索