日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

关于.Net中Process和ProcessStartInfor的使用

發(fā)布時(shí)間:2023/12/20 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于.Net中Process和ProcessStartInfor的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下幾個(gè)功能:

1、打開某個(gè)鏈接網(wǎng)址(彈窗)。
2、定位打開某個(gè)文件目錄。
3、打開系統(tǒng)特殊文件夾,如“控制面板”等。

那么它是怎么實(shí)現(xiàn)這幾個(gè)功能的呢?在講應(yīng)用前,我們先來看看Process.Star()的構(gòu)造方法。

名稱 ?? ?說明
Process.Start () ?? ?啟動(dòng)(或重用)此 Process 組件的 StartInfo 屬性指定的進(jìn)程資源,并將其 與該組件關(guān)聯(lián)。
Process.Start (ProcessStartInfo) ?? ?啟動(dòng)由包含進(jìn)程啟動(dòng)信息(例如,要啟動(dòng)的進(jìn)程的文 件名)的參數(shù)指定的進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)。
Process.Start (String) ?? ?通過指定文檔或應(yīng)用程序文件的名稱來啟動(dòng)進(jìn)程資源,并將資源

與新的 Process 組件關(guān)聯(lián)。
Process.Start (String, String) ?? ?通過指定應(yīng)用程序的名稱和一組命令行參數(shù)來啟動(dòng)一個(gè)進(jìn)程資源 ,并將該資源與新的 Process 組件相關(guān)聯(lián)。
Process.Start (String, String, SecureString, String) ?? ?通過指定應(yīng)用程序的名稱、用戶名、密碼 和域來啟動(dòng)一個(gè)進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)起來。
Process.Start (String, String, String, SecureString, String) ?? ?通過指定應(yīng)用程序的名稱和一 組命令行參數(shù)、用戶名、密碼和域來啟動(dòng)一個(gè)進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)起 來。


(1) publicbool Start ()
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "iexplore.exe";?? //IE瀏覽器,可以更換
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");? //直接 調(diào)用打開文件


(4) Process.Start (StringfileName, Stringarguments)?

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


上面已經(jīng)舉例了用process.start()打開網(wǎng)站的方法,現(xiàn)在講講用processs.star()定位到某個(gè)文件的 方法。

這種定位方法類似于快捷方式上的查找目標(biāo)://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后還有個(gè)逗號(,)。

接下來來講講通過調(diào)用rundll32.exe來打開一些系統(tǒng)特定文件,先簡單介紹下rundll32.exe的功能 和作用。
顧名思義,rundll32就是"執(zhí)行32位的dll文件",也就是執(zhí)行dll文件中的內(nèi)部函數(shù),可以以命令行 的形式調(diào)用windows32位的動(dòng)態(tài)鏈接庫。
同理,rundll.exe就是"執(zhí)行16位的dll文件",調(diào)用的是16位的動(dòng)態(tài)鏈接庫。我們通過 rundll32.exe執(zhí)行指令來完成一些功能。


舉個(gè)例子

System.Diagnostics.Process.Start("rundll32.exe","user.exe,restartwindows");????? //系統(tǒng)重啟

命令
rundll32命令大全
命令列:rundll32.exe user.exe,restartwindows
功能: 系統(tǒng)重啟

命令列:rundll32.exe user.exe,exitwindows
功能: 關(guān)閉系統(tǒng)

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

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
功能: 顯示“控制面板-輔助選項(xiàng)-鍵盤”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
功能: 顯示“控制面板-輔助選項(xiàng)-聲音”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
功能: 顯示“控制面板-輔助選項(xiàng)-顯示”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
功能: 顯示“控制面板-輔助選項(xiàng)-滑鼠”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
功能: 顯示“控制面板-輔助選項(xiàng)-傳統(tǒng)”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
功能: 執(zhí)行“控制面板-添加新硬體”向?qū)А?

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
功能: 執(zhí)行“控制面板-添加新印表機(jī)”向?qū)А?/span>

命令列: 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
功能: 顯示 “控制面板-添加/刪除程式-啟動(dòng)盤” 面板。

命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一個(gè)新的“我的公文包”。

命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 顯示復(fù)制軟碟視窗

命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 顯示“建立快捷方式”的對話框,所建立的快捷方式的位置由%1參數(shù)決定。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 顯示“日期與時(shí)間”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 顯示“時(shí)區(qū)”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
功能: 顯示 “控制面板-添加/刪除程式-啟動(dòng)盤” 面板。

命令列: rundll32.exe syncui.dll,Briefcase_Create
功能: 在桌面上建立一個(gè)新的“我的公文包”。

命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
功能: 顯示復(fù)制軟碟視窗

命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
功能: 顯示“建立快捷方式”的對話框,所建立的快捷方式的位置由%1參數(shù)決定。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
功能: 顯示“日期與時(shí)間”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
功能: 顯示“時(shí)區(qū)”選項(xiàng)視窗。

命令列: rundll32.exe rnaui.dll,RnaDial [某個(gè)撥號連接的名稱]
功能: 顯示某個(gè)撥號連接的撥號視窗。如果已經(jīng)撥號連接,則顯示目前的連接狀態(tài)的視窗。

命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 顯示“新建撥號連接”向?qū)У囊暣啊?/span>

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 顯示“顯示屬性-背景”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 顯示“顯示屬性-螢屏保護(hù)”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 顯示“顯示屬性-外觀”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 顯示顯示“顯示屬性-屬性”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 顯示W(wǎng)indows的“字體”檔案夾。?

命令列: rundll32.exe rnaui.dll,RnaDial [某個(gè)撥號連接的名稱]
功能: 顯示某個(gè)撥號連接的撥號視窗。如果已經(jīng)撥號連接,則顯示目前的連接狀態(tài)的視窗。

命令列: rundll32.exe rnaui.dll,RnaWizard
功能: 顯示“新建撥號連接”向?qū)У囊暣啊?/span>

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
功能: 顯示“顯示屬性-背景”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
功能: 顯示“顯示屬性-螢屏保護(hù)”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
功能: 顯示“顯示屬性-外觀”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
功能: 顯示顯示“顯示屬性-屬性”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
功能: 顯示W(wǎng)indows的“字體”檔案夾。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
功能: 同樣是顯示W(wǎng)indows的“字體”檔案夾。

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

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
功能: 顯示“控制面板-游戲控制器-一般”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
功能: 顯示“控制面板-游戲控制器-進(jìn)階”選項(xiàng)視窗。

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

命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
功能: 顯示Microsoft Exchange一般選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
功能: 顯示“控制面板-滑鼠” 選項(xiàng) 。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
功能: 顯示 “控制面板-鍵盤屬性-速度”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
功能: 顯示 “控制面板-鍵盤屬性-語言”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
功能: 顯示W(wǎng)indows“印表機(jī)”檔案夾。

命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
功能: 顯示“控制面板-輸入法屬性-輸入法”選項(xiàng)視窗。?

命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
功能: 執(zhí)行“添加新調(diào)制解調(diào)器”向?qū)А?/span>

命令列: 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
功能: 顯示“控制面板-多媒體屬性-設(shè)備”屬性頁。?

命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
功能: 顯示“控制面板-聲音”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
功能: 顯示“控制面板-網(wǎng)路”選項(xiàng)視窗。

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

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

命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
功能: 顯示“控制面板-密碼”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
功能: 顯示“控制面板-電源管理屬性”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder
功能: 顯示W(wǎng)indows“印表機(jī)”檔案夾。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl?

@2)

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0?
功能: 顯示“控制面板-區(qū)域設(shè)置屬性-區(qū)域設(shè)置”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
功能: 顯示“控制面板-區(qū)域設(shè)置屬性-數(shù)字”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
功能: 顯示“控制面板-區(qū)域設(shè)置屬性-貨幣”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
功能: 顯示“控制面板-區(qū)域設(shè)置屬性-時(shí)間”選項(xiàng)視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
功能: 顯示“控制面板-區(qū)域設(shè)置屬性-日期”選項(xiàng)視窗。

命令列: rundll32.exe desk.cpl,InstallScreenSaver [螢屏保護(hù)檔案名]
功能: 將指定的螢屏保護(hù)檔案設(shè)置為Windows的屏保,并顯示螢屏保護(hù)屬性視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
功能: 顯示“控制面板-系統(tǒng)屬性-傳統(tǒng)”屬性視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
功能: 顯示“控制面板-系統(tǒng)屬性-設(shè)備管理器”屬性視窗。

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

命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
功能: 顯示“控制面板-系統(tǒng)屬性-性能”屬性視窗。

命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl
功能: 顯示“撥號屬性”選項(xiàng)視窗

命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl
功能: 顯示“桌面主題”選項(xiàng)面板

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

命令列: rundll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW
功能: 顯示“無線網(wǎng)絡(luò)設(shè)置"面板

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

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

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

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 ");????????? --打開任務(wù)管理器

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

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

System.Diagnostics.Process.Start("winver.exe ");????????????? --打開Wind

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 ");????????? --打開任務(wù)管理器

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

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

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

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

shutdown.exe:

參數(shù):-s 關(guān)機(jī)?? -r重啟?? -f強(qiáng)行?? -t 時(shí)間??? -a 取消關(guān)機(jī)?? -l 注銷??? -i 顯示用戶界面

System.Diagnostics.Process.Start("shutdown.exe","-r");????????????? -- 關(guān)閉并重啟計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-s -f");????????? -- 關(guān)閉計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-s -f 30");???? -- 30s后關(guān)閉計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-l");?????????????? --注銷計(jì)算機(jī)

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

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

shutdown.exe:

參數(shù):-s 關(guān)機(jī)?? -r重啟?? -f強(qiáng)行?? -t 時(shí)間??? -a 取消關(guān)機(jī)?? -l 注銷??? -i 顯示用戶界面

System.Diagnostics.Process.Start("shutdown.exe","-r");????????????? -- 關(guān)閉并重啟計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-s -f");????????? -- 關(guān)閉計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-s -f 30");???? -- 30s后關(guān)閉計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-l");?????????????? --注銷計(jì)算機(jī)

System.Diagnostics.Process.Start("shutdown.exe","-a");????????????? --撤銷關(guān)閉計(jì)算機(jī)

SpecialFolder枚舉成員:

成員名稱 ?? ?說明
ApplicationData ?? ?目錄,它用作當(dāng)前漫游用戶的應(yīng)用程序特定數(shù)據(jù)的公共儲(chǔ)存庫。

漫游用戶在網(wǎng)絡(luò)上的多臺(tái)計(jì)算機(jī)上工作。漫游用戶的配置文件保存在網(wǎng)絡(luò)服務(wù)器上,當(dāng)用戶登錄

到某個(gè)系統(tǒng)上時(shí),它會(huì)加載到該系統(tǒng)。
CommonApplicationData ?? ?目錄,它用作所有用戶使用的應(yīng)用程序特定數(shù)據(jù)的公共儲(chǔ)存庫。
CommonProgramFiles ?? ?用于應(yīng)用程序間共享的組件的目錄。
Cookies ?? ?用作 Internet Cookie 的公共儲(chǔ)存庫的目錄。
Desktop ?? ?邏輯桌面,而不是物理文件系統(tǒng)位置。
DesktopDirectory ?? ?用于物理上存儲(chǔ)桌面上的文件對象的目錄。

不應(yīng)將此目錄與桌面文件夾本身混淆,后者是虛擬文件夾。
Favorites ?? ?用作用戶收藏夾項(xiàng)的公共儲(chǔ)存庫的目錄。
History ?? ?用作 Internet 歷史記錄項(xiàng)的公共儲(chǔ)存庫的目錄。
InternetCache ?? ?用作 Internet 臨時(shí)文件的公共儲(chǔ)存庫的目錄。
LocalApplicationData ?? ?目錄,它用作當(dāng)前非漫游用戶使用的應(yīng)用程序特定數(shù)據(jù)的公共儲(chǔ)

存庫。
MyComputer ?? ?“我的電腦”文件夾。
注意

由于沒有為“我的電腦”文件夾定義路徑,因此 MyComputer 常數(shù)將始終生成空字符串 ("")。
MyDocuments ?? ?“我的電腦”文件夾。
MyMusic ?? ?“My Music”文件夾。
MyPictures ?? ?“My Pictures”文件夾。
Personal ?? ?用作文檔的公共儲(chǔ)存庫的目錄。
ProgramFiles ?? ?“Program files”目錄。
Programs ?? ?包含用戶程序組的目錄。
Recent ?? ?包含用戶最近使用過的文檔的目錄。
SendTo ?? ?包含“發(fā)送”菜單項(xiàng)的目錄。
StartMenu ?? ?包含“開始”菜單項(xiàng)的目錄。
Startup ?? ?對應(yīng)于用戶的“啟動(dòng)”程序組的目錄。

每當(dāng)用戶登錄、啟動(dòng) Windows NT 或更高版本或啟動(dòng) Windows 98 時(shí),系統(tǒng)均會(huì)啟動(dòng)這些程序


System ?? ?“System”目錄。
Templates ?? ?用作文檔模板的公共儲(chǔ)存庫的目錄。

通過Environment.GetFolderPath(Environment.SpecialFolder.XXXXX);我們可以輕松地獲得系

統(tǒng)特殊文件夾的具體路徑,然后用Process.Start()方法打開該文件夾。

例如:

System.Diagnostics.Process.Start(Environment.GetFolderPath

(Environment.SpecialFolder.System));?? //打開系統(tǒng)文件夾(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參數(shù)表示隱藏窗
private const int SW_SHOW = 5;//API參數(shù)表示用當(dāng)前的大小和位置顯示窗口

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

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

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

??????? mciSendString("set CDAudio door closed", null, 127, 0);???? --關(guān)閉光驅(qū)

-------------------------------------------------------------------------------------------------------------------------------------------------------

到現(xiàn)在為止,關(guān)于使用編程語言讀寫文件的功能已經(jīng)越來越強(qiáng)大,使用編程語言根據(jù)特定的條件生成腳本文件之后需要自動(dòng)化

執(zhí)行生成的腳本文件應(yīng)該怎么做

本文主要是介紹在.Net中System.Diagnostics命名空間下Process類和ProcessStartInfo類的使用

用于啟動(dòng)一個(gè)外部程序所使用的類是Process,至于ProcessStartInfo類只是用來傳入Process類所需要的參數(shù),

個(gè)人理解是有點(diǎn)類似于適配器的操作,不知道是否正確。

最簡單的用于啟動(dòng)一個(gè)應(yīng)用程序

[csharp]?view plain?copy
  • Process?_proc?=?new?Process();??
  • ProcessStartInfo?_procStartInfo?=?new?ProcessStartInfo("IExplore.exe","http://www.baidu.com");??
  • _proc.StartInfo?=?_procStartInfo;??
  • _proc.Start();??
  • 以上就是簡單的使用IE瀏覽器打開 百度首頁 的代碼,以上代碼等價(jià)于 [csharp]?view plain?copy
  • <span?style="white-space:pre">????</span>Process?_proc?=?new?Process();??
  • ????????_proc.StartInfo.FileName?=?"IExplore.exe";??
  • ????????_proc.StartInfo.Arguments?=?"http://www.baidu.com";??
  • ????????_proc.Start();??
  • 可以通過直接給Process對象的屬性賦值而達(dá)到相同的效果。

    當(dāng)需要執(zhí)行一個(gè)腳本,比如執(zhí)行windows系統(tǒng)下的.bat文件該怎么做

    我們現(xiàn)在D盤目錄下建立一個(gè)bat文件,寫上內(nèi)容

    [plain]?view plain?copy
  • <span?style="white-space:pre">????</span>xcopy?/y?C:\folder1\1.txt?C:\folder2\??
  • <span?style="white-space:pre">????</span>ping?localhost?-n?3?>nul??
  • <span?style="white-space:pre">????</span>xcopy?/y?C:\folder1\2.txt?C:\folder2\??
  • <span?style="white-space:pre">????</span>ping?localhost?-n?3?>nul??
  • <span?style="white-space:pre">????</span>xcopy?/y?C:\folder1\3.txt?C:\folder2\??
  • 腳本內(nèi)容是把folder1的1.txt,2.txt,3.txt文件賦值到folder2下,在每個(gè)賦值命令的中間有ping命令,這是一個(gè)用于使一個(gè)腳本文件暫定一定時(shí)間的比較經(jīng)典做法/y參數(shù)作用是當(dāng)folder2文件夾下有同名的文件時(shí),不提示而直接覆蓋源文件,如果不加上這個(gè)參數(shù)當(dāng)有同名的文件時(shí)會(huì)提示是否覆蓋,此處暫停的時(shí)間為3秒,>nul 作用是只執(zhí)行命令而不出現(xiàn)消息內(nèi)容

    新建一個(gè)C#文件,寫上代碼:

    [csharp]?view plain?copy
  • Process?_proc?=?new?Process();??
  • ?ProcessStartInfo?_procStartInfo?=?new?ProcessStartInfo();??
  • ?_procStartInfo.FileName?=?@"C:/Test.bat";??
  • ?_procStartInfo.CreateNoWindow?=?true;//表示是否啟動(dòng)新的窗口來執(zhí)行這個(gè)腳本,默認(rèn)值為false,既不會(huì)開啟新的窗口 ?
  • ?_procStartInfo.UseShellExecute?=?false;//是否使用外殼來運(yùn)行程序,設(shè)置為true時(shí)運(yùn)行程序彈出新的cmd窗口執(zhí)行腳本文件
  • ?_procStartInfo.RedirectStandardOutput?=?true;//獲取對象的標(biāo)準(zhǔn)輸出流StreamReader對象,用于輸出腳本的返回內(nèi)容 ?
  • ?_proc.StartInfo?=?_procStartInfo;??
  • ?_proc.Start();??
  • ?_proc.WaitForExit(1000);??
  • ?_proc.Kill();??
  • ?using?(StreamReader?sr?=?_proc.StandardOutput)?
  • ?{??
  • ?????String?str?=?sr.ReadLine();??
  • ?????while?(null?!=?str)?
  • ? ? {??
  • ?????????Console.WriteLine(str);??
  • ?????????str?=?sr.ReadLine();??
  • ?????}??
  • ?}??
  • ?if?(_proc.HasExited)//運(yùn)行完之后Process的HasExited屬性可以判斷腳本是否運(yùn)行完畢 ?
  • ?????_proc.Close();??
  • 此處提到三個(gè)屬性:

    CreateNoWindow:表示是否啟動(dòng)新的窗口來執(zhí)行這個(gè)腳本,默認(rèn)值為false,既不會(huì)開啟新的窗口,當(dāng)main線程運(yùn)行完時(shí),

    啟動(dòng)的控制臺(tái)無法結(jié)束,需要等待腳本執(zhí)行完畢才能繼續(xù),當(dāng)手動(dòng)設(shè)置為true,即腳本在后臺(tái)新窗口執(zhí)行(本人目前沒有找

    到顯示該新窗口的方法,如有悉者,敬請告知),main線程運(yùn)行結(jié)束之后不必等待腳本執(zhí)行完畢即可正常關(guān)閉,

    此時(shí)腳本在后臺(tái)繼續(xù)執(zhí)行直至自動(dòng)結(jié)束,往下看可以看到Process類的成員方法WaitForExit(int time)和Kill()方法,

    WaitForExit(int time)用于在time(毫秒)時(shí)間內(nèi)等待腳本執(zhí)行,當(dāng)超過這個(gè)時(shí)間,main繼續(xù)往下執(zhí)行,

    腳本后臺(tái)運(yùn)行直至結(jié)束,如果不添加time參數(shù),則無休止等待直至腳本運(yùn)行完畢,Kill()方法用于停止該腳本的運(yùn)行。

    由前面可以看出腳本總共需要至少6秒鐘的時(shí)間,此時(shí)WaitForExit()參數(shù)設(shè)置為1000,則一秒之后,main函數(shù)不再等待腳本執(zhí)行,

    此時(shí)查看folder2文件夾,發(fā)現(xiàn)復(fù)制了一個(gè)1.txt文件,然后運(yùn)行kill()方法,腳本直接被終止,如果注釋Kill()方法,

    則腳本會(huì)自動(dòng)運(yùn)行6秒之后自動(dòng)停止。


    UseShellExecute:是否使用外殼來運(yùn)行程序,設(shè)置為true時(shí)運(yùn)行程序會(huì)彈出新的cmd窗口執(zhí)行腳本文件。

    當(dāng)設(shè)置為false時(shí)則不使用外殼程序來運(yùn)行。默認(rèn)值為true

    RedirectStandardOutput:獲取對象的標(biāo)準(zhǔn)輸出流StreamReader對象,用于輸出腳本的返回內(nèi)容,當(dāng)該屬性設(shè)置為true,

    則UseShellExecute屬性必須設(shè)置為false,當(dāng)加上外殼程序運(yùn)行時(shí),彈出新的窗口運(yùn)行內(nèi)容就是StandardOutput的讀取內(nèi)容。

    除此之外還有RedirectStandardInput屬性,可以用于默認(rèn)人為輸入命令。

    運(yùn)行完之后Process的HasExited屬性可以判斷腳本是否運(yùn)行完畢。

    至此,本人對Process類的基本運(yùn)用的拙見如上所述,有問題可以多多交流。

    晚輩第一次發(fā)技術(shù)博客,請大家多多擔(dān)待,如有不妥之處,敬請斧正。


    總結(jié)

    以上是生活随笔為你收集整理的关于.Net中Process和ProcessStartInfor的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。