如何从vb.net向cmd发送命令
我正在VB.NEt(Visual studio 2017)中开发应用程序,我想向CMD发送一些命令,并在多行文本框中接收输出。我该怎么做?而且只有一个cmd窗口应该是可见的有点谷歌搜索如何从vb.net向cmd发送命令,vb.net,cmd,Vb.net,Cmd,我正在VB.NEt(Visual studio 2017)中开发应用程序,我想向CMD发送一些命令,并在多行文本框中接收输出。我该怎么做?而且只有一个cmd窗口应该是可见的有点谷歌搜索 Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click Dim CMDThread As New Threading.Thread(Address
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
CMDThread.Start()
End Sub
Private Sub CMDAutomate()
Dim myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.CreateNoWindow = True '<---- if you want to not create a window
StartInfo.UseShellExecute = False 'required to redirect
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
SW.WriteLine(txtCommand.Text) 'the command you wish to run.....
SW.WriteLine("exit") 'exits command prompt window
txtResults.Text = SR.ReadToEnd 'returns results of the command window
SW.Close()
SR.Close()
End Sub
Private Sub btnSend\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btnSend。单击
将CMDThread设置为新线程。线程(CMDThread的地址)
CMDThread.Start()
端接头
私有子cmdautomation()
Dim myprocess作为新流程
将StartInfo调暗为新系统.Diagnostics.ProcessStartInfo
StartInfo.FileName=“cmd”'启动cmd窗口
StartInfo.RedirectStandardInput=True
StartInfo.RedirectStandardOutput=True
StartInfo.CreateNoWindow=True'前面的答案几乎正确,但会带来跨线程错误。将cmd输出的返回文本放入一个变量中,然后在按钮中单击Sub后调用字符串,如下所示
在表单上创建一个名为:btnPowerShSend的按钮,
创建两个选中多行属性的文本框,称为:
TXT结果&
txtScript
Public Class Form1
Dim retText As String
Private Sub BtnPowerShSend_Click(sender As Object, e As EventArgs) Handles btnPowerShSend.Click
Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
CMDThread.Start()
txtResults.Text = retText 'returns results of the command window
End Sub
Private Sub CMDAutomate()
Dim myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.CreateNoWindow = True '<---- if you want to not create a window
StartInfo.UseShellExecute = False 'required to redirect
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
SW.WriteLine(txtScript.Text) 'the command you wish to run.....
SW.WriteLine("exit") 'exits command prompt window
retText = SR.ReadToEnd.ToString
SW.Close()
SR.Close()
End Sub
End Class
公共类表单1
将文本设置为字符串
私有子BtnPowerShSend\u单击(发件人作为对象,e作为事件参数)处理BtnPowerShSend。单击
将CMDThread设置为新线程。线程(CMDThread的地址)
CMDThread.Start()
Text=retText'返回命令窗口的结果
端接头
私有子cmdautomation()
Dim myprocess作为新流程
将StartInfo调暗为新系统.Diagnostics.ProcessStartInfo
StartInfo.FileName=“cmd”'启动cmd窗口
StartInfo.RedirectStandardInput=True
StartInfo.RedirectStandardOutput=True
StartInfo.CreateNoWindow=True'我建议您应该从VBS运行批处理文件,而不是检查此文件:的可能重复。附件中有一个示例项目。代码是C#,但是它很容易阅读/翻译,并且注释可能很有用。这是用VB.Net语言编写的。