一个NT系统下的DOS命令运行程序

LzmTW  7/24/2004

http://blog.csdn.net/lzmtw/


界面
 

注:程序在WINDOWS98还不能正常运行。

 

Public Class frmCmdExcute

    Inherits System.Windows.Forms.Form

 

    Dim sw As System.IO.StreamWriter

    Dim sr As System.IO.StreamReader

    Dim err As System.IO.StreamReader

 

    Dim p As System.Diagnostics.Process = New System.Diagnostics.Process

    Dim psI As New System.Diagnostics.ProcessStartInfo(System.Environment.GetEnvironmentVariable("ComSpec"))

 

#Region " Windows 窗体设计器生成的代码 "

 

    Public Sub New()

        MyBase.New()

 

        '该调用是 Windows 窗体设计器所必需的。

        InitializeComponent()

        ' InitializeComponent() 调用之后添加任何初始化

    End Sub

 

    '窗体重写 dispose 以清理组件列表。

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

        If disposing Then

            If Not (components Is Nothing) Then

                components.Dispose()

            End If

        End If

        MyBase.Dispose(disposing)

    End Sub

 

    'Windows 窗体设计器所必需的

    Private components As System.ComponentModel.IContainer

 

    '注意: 以下过程是 Windows 窗体设计器所必需的

    '可以使用 Windows 窗体设计器修改此过程。

    '不要使用代码编辑器修改它。

    Friend WithEvents tbResult As System.Windows.Forms.TextBox

    Friend WithEvents Panel1 As System.Windows.Forms.Panel

    Friend WithEvents btnExcute As System.Windows.Forms.Button

    Friend WithEvents Label1 As System.Windows.Forms.Label

    Friend WithEvents btClear As System.Windows.Forms.Button

    Friend WithEvents btLocate As System.Windows.Forms.Button

    Friend WithEvents tbComText As System.Windows.Forms.ComboBox

    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

        Me.tbResult = New System.Windows.Forms.TextBox

        Me.Panel1 = New System.Windows.Forms.Panel

        Me.tbComText = New System.Windows.Forms.ComboBox

        Me.btLocate = New System.Windows.Forms.Button

        Me.btClear = New System.Windows.Forms.Button

        Me.Label1 = New System.Windows.Forms.Label

        Me.btnExcute = New System.Windows.Forms.Button

        Me.Panel1.SuspendLayout()

        Me.SuspendLayout()

        '

        'tbResult

        '

        Me.tbResult.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _

                    Or System.Windows.Forms.AnchorStyles.Left) _

                    Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

        Me.tbResult.BackColor = System.Drawing.SystemColors.Info

        Me.tbResult.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle

        Me.tbResult.Location = New System.Drawing.Point(8, 8)

        Me.tbResult.Multiline = True

        Me.tbResult.Name = "tbResult"

        Me.tbResult.ReadOnly = True

        Me.tbResult.ScrollBars = System.Windows.Forms.ScrollBars.Both

        Me.tbResult.Size = New System.Drawing.Size(584, 304)

        Me.tbResult.TabIndex = 0

        Me.tbResult.TabStop = False

        Me.tbResult.Text = ""

        '

        'Panel1

        '

        Me.Panel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

        Me.Panel1.Controls.Add(Me.tbComText)

        Me.Panel1.Controls.Add(Me.btLocate)

        Me.Panel1.Controls.Add(Me.btClear)

        Me.Panel1.Controls.Add(Me.Label1)

        Me.Panel1.Controls.Add(Me.btnExcute)

        Me.Panel1.Location = New System.Drawing.Point(8, 320)

        Me.Panel1.Name = "Panel1"

        Me.Panel1.Size = New System.Drawing.Size(584, 40)

        Me.Panel1.TabIndex = 1

        '

        'tbComText

        '

        Me.tbComText.Location = New System.Drawing.Point(264, 8)

        Me.tbComText.Name = "tbComText"

        Me.tbComText.Size = New System.Drawing.Size(224, 20)

        Me.tbComText.TabIndex = 5

        Me.tbComText.Text = "Dir"

        '

        'btLocate

        '

        Me.btLocate.FlatStyle = System.Windows.Forms.FlatStyle.Flat

        Me.btLocate.Location = New System.Drawing.Point(96, 8)

        Me.btLocate.Name = "btLocate"

        Me.btLocate.Size = New System.Drawing.Size(80, 24)

        Me.btLocate.TabIndex = 4

        Me.btLocate.Text = "定位(&L)"

        '

        'btClear

        '

        Me.btClear.FlatStyle = System.Windows.Forms.FlatStyle.Flat

        Me.btClear.Location = New System.Drawing.Point(8, 8)

        Me.btClear.Name = "btClear"

        Me.btClear.Size = New System.Drawing.Size(80, 24)

        Me.btClear.TabIndex = 3

        Me.btClear.Text = "清空(&C)"

        '

        'Label1

        '

        Me.Label1.Location = New System.Drawing.Point(208, 8)

        Me.Label1.Name = "Label1"

        Me.Label1.Size = New System.Drawing.Size(48, 16)

        Me.Label1.TabIndex = 2

        Me.Label1.Text = "命令:"

        '

        'btnExcute

        '

        Me.btnExcute.Enabled = False

        Me.btnExcute.FlatStyle = System.Windows.Forms.FlatStyle.Flat

        Me.btnExcute.Location = New System.Drawing.Point(496, 8)

        Me.btnExcute.Name = "btnExcute"

        Me.btnExcute.Size = New System.Drawing.Size(80, 24)

        Me.btnExcute.TabIndex = 1

        Me.btnExcute.Text = "执行(&E)"

        '

        'frmCmdExcute

        '

        Me.AcceptButton = Me.btnExcute

        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)

        Me.ClientSize = New System.Drawing.Size(600, 365)

        Me.Controls.Add(Me.Panel1)

        Me.Controls.Add(Me.tbResult)

        Me.Name = "frmCmdExcute"

        Me.Text = "Command Excute Result"

        Me.Panel1.ResumeLayout(False)

        Me.ResumeLayout(False)

 

    End Sub

 

#End Region

 

    Private Sub btClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btClear.Click

        Me.tbResult.Text = String.Empty

    End Sub

 

    Private Sub btLocate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btLocate.Click

        Dim bd As New FolderBrowserDialog

        If bd.ShowDialog = DialogResult.OK Then

            System.Environment.CurrentDirectory = bd.SelectedPath

        End If

    End Sub

 

    Private Sub tbComText_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tbComText.KeyUp

        If e.KeyData = Keys.Enter Then

            Dim cmd As String = Me.tbComText.Text.ToLower

            If cmd.Equals(String.Empty) Then cmd = "Dir "

 

            Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

            sw.WriteLine(cmd)

 

            Me.tbResult.Text = sr.ReadToEnd()

            Me.tbResult.Text += err.ReadToEnd()

 

            Me.Cursor = System.Windows.Forms.Cursors.Default

 

            Dim Current As String = String.Empty

            If cmd.StartsWith("cd/") Or cmd.StartsWith("cd ") Then

                Current = cmd.Substring(3)

            End If

            If cmd.EndsWith(":") Then

                Current = cmd

            End If

            If Not Current.Equals(String.Empty) Then

                If IO.Directory.Exists(Current) Then

                    System.Environment.CurrentDirectory = Current

                End If

            End If

 

            Me.tbComText.Items.Add(Me.tbComText.Text)

            Me.tbComText.SelectionStart = 0

            Me.tbComText.SelectionLength = Me.tbComText.Text.Length

            Me.tbComText.Focus()

        End If

    End Sub

 

    Private Sub btnExcute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcute.Click

 

        Me.CmdExcute()

 

        Dim cmd As String = Me.tbComText.Text.ToLower

        If cmd.Length = 0 Then Exit Sub

        Dim Current As String = String.Empty

        If cmd.StartsWith("cd/") Or cmd.StartsWith("cd ") Then

            Current = cmd.Substring(3)

        End If

        If cmd.EndsWith(":") Then

            Current = cmd

        End If

        If Not Current.Equals(String.Empty) Then

            If IO.Directory.Exists(Current) Then

                System.Environment.CurrentDirectory = Current

            End If

        End If

 

        Me.tbComText.Items.Add(Me.tbComText.Text)

        Me.tbComText.SelectionStart = 0

        Me.tbComText.SelectionLength = Me.tbComText.Text.Length

        Me.tbComText.Focus()

 

 

    End Sub

    Private Sub CmdExcute()

        Dim sw As System.IO.StreamWriter

        Dim sr As System.IO.StreamReader

        Dim err As System.IO.StreamReader

 

        Dim p As System.Diagnostics.Process = New System.Diagnostics.Process

        Dim psI As New System.Diagnostics.ProcessStartInfo(System.Environment.GetEnvironmentVariable("ComSpec"))

 

        psI.UseShellExecute = False

        psI.RedirectStandardInput = True

        psI.RedirectStandardOutput = True

        psI.RedirectStandardError = True

        psI.CreateNoWindow = True

        p.StartInfo = psI

 

        Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

 

        p.Start()

        sw = p.StandardInput

        sr = p.StandardOutput

        err = p.StandardError

 

        sw.AutoFlush = True

        If Me.tbComText.Text <> "" Then

            sw.WriteLine(Me.tbComText.Text)

        Else

            sw.WriteLine("Dir ")

        End If

        sw.Close()

 

        Me.tbResult.Text = sr.ReadToEnd()

        Me.tbResult.Text += err.ReadToEnd()

 

        Me.Cursor = System.Windows.Forms.Cursors.Default

    End Sub

    Public Shared Sub Main ()

        If System.Environment.OSVersion.ToString.IndexOf("NT") = -1 Then

            MsgBox("暂时不支持非NT系统,程序退出!")

            Application.Exit()

        Else

            Application.Run(New frmCmdExcute)

        End If

    End Sub

 

    Private Sub frmCmdExcute_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        With psI

            .UseShellExecute = False

            .RedirectStandardInput = True

            .RedirectStandardOutput = True

            .RedirectStandardError = True

            .CreateNoWindow = True

        End With

 

        p.StartInfo = psI

        p.Start()

 

        With p

            sw = .StandardInput

            sr = .StandardOutput

            err = .StandardError

        End With

        sw.AutoFlush = True

 

    End Sub

 

    Private Sub frmCmdExcute_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed

        p.Close()

        sw.Close()

        sr.Close()

        err.Close()

    End Sub

 

End Class

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值