ASP.NET環(huán)境下的Shell函數(shù)
Shell 函數(shù)
命名空間:Microsoft.VisualBasic
模塊:Interaction
程序集:Microsoft Visual Basic .NET 運(yùn)行庫(kù)(位于 Microsoft.VisualBasic.dll 中)
ASP.NET環(huán)境下運(yùn)行一個(gè)可執(zhí)行程序,并且如果該程序仍然在運(yùn)行,則返回一個(gè)包含該程序的進(jìn)程 ID 的整數(shù)。
- Public Function Shell( _
- ByVal Pathname As String, _
- Optional ByVal Style As
- AppWinStyle = AppWinStyle.MinimizedFocus, _
- Optional ByVal Wait As Boolean = False, _
- Optional ByVal Timeout As Integer = -1 _
- ) As Integer
參數(shù)
Pathname
必選項(xiàng)。字符串。要執(zhí)行的程序名以及任何需要的參數(shù)和命令行開(kāi)關(guān)。Pathname 還可以包括驅(qū)動(dòng)器和目錄路徑或文件夾。
Style
可選項(xiàng)。AppWinStyle。從 AppWinStyle 枚舉中選擇的值,該枚舉與要在其中運(yùn)行程序的窗口樣式相對(duì)應(yīng)。如果省略 Style,則Shell函數(shù) 使用 AppWinStyle.MinimizedFocus,這將使程序以最小化啟動(dòng)并具有焦點(diǎn)。
Style 參數(shù)可以有以下設(shè)置之一:
枚舉值 說(shuō)明
AppWinStyle.Hide 隱藏窗口并為隱藏的窗口提供焦點(diǎn)。
AppWinStyle.NormalFocus 為窗口提供焦點(diǎn),并以最近的大小和位置顯示窗口。
AppWinStyle.MinimizedFocus 為窗口提供焦點(diǎn),并以圖標(biāo)的形式顯示窗口。
AppWinStyle.MaximizedFocus 為窗口提供焦點(diǎn),并以全屏方式顯示窗口。
AppWinStyle.NormalNoFocus 將窗口設(shè)置為最近的大小和位置。當(dāng)前活動(dòng)窗口保持焦點(diǎn)。
AppWinStyle.MinimizedNoFocus 以圖標(biāo)的形式顯示窗口。當(dāng)前活動(dòng)窗口保持焦點(diǎn)。
Wait
可選項(xiàng)。Boolean。指示 Shell 函數(shù)是否應(yīng)等待程序完成的值。如果省略 Wait,則 Shell 使用 False。
Timeout
可選項(xiàng)。Integer。Wait 為 True 時(shí)等待完成的毫秒數(shù)。如果省略 Timeout,則 Shell 使用 -1,表示沒(méi)有超時(shí),Shell 直到程序完成時(shí)才返回。因此,如果省略 Timeout 或?qū)⑺O(shè)置為 -1,則 Shell 函數(shù)可能永遠(yuǎn)不會(huì)將控制返回給程序。
現(xiàn)在看核心代碼:
- dim but as string
- dim tempfile as
- string=server.MapPath(".") & "\" & "test.txt"
- shell("cmd.exe /c " & cmd.text & " > "
- & tempfile,,true,-1)
- dim myread as new streamreader
- (tempfile,encoding.default)
- but=myread.readtoend
- but=replace(but,"<","<")
- but=replace(but,">",">")
- result.text="
- " & but & "
- "
- myread.close
- if file.exists(tempfile) then
- file.delete(tempfile)
- end if
關(guān)鍵是shell函數(shù)("cmd.exe /c " & cmd.text & " > " & tempfile,,true,20000),這句話就是調(diào)用cmd.exe并且等待程序執(zhí)行完畢。注意:要是你運(yùn)行的命令需要等待(如date),那就慘了。那就暫時(shí)刪不掉臨時(shí)文件test.txt……而且不能再執(zhí)行命令了……不知道高手能不能解決這個(gè)問(wèn)題。
【編輯推薦】
- 淺析ASP.NET授權(quán)模塊
- 介紹ASP.NET MVC框架
- 配置ASP.NET AJAX概述
- ASP.NET頁(yè)面靜態(tài)化四步走
- ASP.NET頁(yè)面請(qǐng)求原理淺析