ASP.NET環境下的Shell函數
Shell 函數
命名空間:Microsoft.VisualBasic
模塊:Interaction
程序集:Microsoft Visual Basic .NET 運行庫(位于 Microsoft.VisualBasic.dll 中)
ASP.NET環境下運行一個可執行程序,并且如果該程序仍然在運行,則返回一個包含該程序的進程 ID 的整數。
- 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
參數
Pathname
必選項。字符串。要執行的程序名以及任何需要的參數和命令行開關。Pathname 還可以包括驅動器和目錄路徑或文件夾。
Style
可選項。AppWinStyle。從 AppWinStyle 枚舉中選擇的值,該枚舉與要在其中運行程序的窗口樣式相對應。如果省略 Style,則Shell函數 使用 AppWinStyle.MinimizedFocus,這將使程序以最小化啟動并具有焦點。
Style 參數可以有以下設置之一:
枚舉值 說明
AppWinStyle.Hide 隱藏窗口并為隱藏的窗口提供焦點。
AppWinStyle.NormalFocus 為窗口提供焦點,并以最近的大小和位置顯示窗口。
AppWinStyle.MinimizedFocus 為窗口提供焦點,并以圖標的形式顯示窗口。
AppWinStyle.MaximizedFocus 為窗口提供焦點,并以全屏方式顯示窗口。
AppWinStyle.NormalNoFocus 將窗口設置為最近的大小和位置。當前活動窗口保持焦點。
AppWinStyle.MinimizedNoFocus 以圖標的形式顯示窗口。當前活動窗口保持焦點。
Wait
可選項。Boolean。指示 Shell 函數是否應等待程序完成的值。如果省略 Wait,則 Shell 使用 False。
Timeout
可選項。Integer。Wait 為 True 時等待完成的毫秒數。如果省略 Timeout,則 Shell 使用 -1,表示沒有超時,Shell 直到程序完成時才返回。因此,如果省略 Timeout 或將它設置為 -1,則 Shell 函數可能永遠不會將控制返回給程序。
現在看核心代碼:
- 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
關鍵是shell函數("cmd.exe /c " & cmd.text & " > " & tempfile,,true,20000),這句話就是調用cmd.exe并且等待程序執行完畢。注意:要是你運行的命令需要等待(如date),那就慘了。那就暫時刪不掉臨時文件test.txt……而且不能再執行命令了……不知道高手能不能解決這個問題。
【編輯推薦】