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.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 | 「個人電腦」文件夾。
|
||
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的狀態 .