Как прочитать вывод cmd в VB.NET из оболочки cmd? - PullRequest
4 голосов
/ 18 июня 2011

Я использую gnokii для отправки SMS.

Мои коды VB:

Dim xCmd As String
xCmd = "cmd.exe /c echo msgcontent "| c:\gnokii\gnokii.exe --sendsms 12345678"
Shell(xCmd)

Примечания:

  1. Я попытался перенаправить вывод в файл .txt, но файл .txt кажется пустым. Кроме того, программе может потребоваться отправлять несколько SMS-сообщений каждую секунду, поэтому создание .txt невозможно.

  2. Process.Start () невозможен, потому что я должен проверить, запущен ли gnokii.exe.

  3. Мне нужен вывод, чтобы проверить, успешно ли отправлено SMS.

  4. Я пытался использовать (коды ниже), но это тоже не сработало; вывод не был показан.

    Функция exe (ByVal fileName, ByVal args)

    Dim p As Process = New Process
    Dim output As String
    
    With p
        .StartInfo.CreateNoWindow = True
        .StartInfo.UseShellExecute = False
        .StartInfo.RedirectStandardOutput = True
        .StartInfo.FileName = fileName
        .StartInfo.Arguments = args
        .Start()
        output = .StandardOutput.ReadToEnd
    End With
    
    Return output
    

    Функция завершения

Ответы [ 4 ]

2 голосов
/ 19 июня 2011

Попробуйте это:

    Dim p As Process = New Process
    Dim output As String

    With p
        .StartInfo.CreateNoWindow = True
        .StartInfo.RedirectStandardOutput = True
        .StartInfo.UseShellExecute = False
        .StartInfo.FileName = fileName
        .StartInfo.Arguments = args
        .Start()
        output = .StandardOutput.ReadToEnd
        .WaitForExit()
    End With

    Return output
1 голос
/ 20 июня 2011

Для отправки вывода в файл .txt (лучшее решение, которое я могу найти)

ЗАМЕНИТЬ

xCmd = "cmd.exe /c echo msgcontent "| c:\gnokii\gnokii.exe --sendsms 12345678 > file.txt"

С

xCmd = "cmd.exe /c echo msgcontent "| c:\gnokii\gnokii.exe --sendsms 12345678 2> file.txt"
0 голосов
/ 25 февраля 2014

Я мог бы предложить что-то подобное, сам. Это похоже на то, что опубликовал кто-то еще, но я думаю, что он предлагает немного больше функциональности, я думаю.

Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Shell("cmd.exe /c " & TextBox1.Text + " > c:\temp\output.txt")
    Dim read As System.IO.StreamReader
    read = File.OpenText("c:\temp\output.txt")
    RichTextBox1.Clear()
    Do Until read.EndOfStream
        RichTextBox1.Text += read.ReadLine & vbCrLf
    Loop
    RichTextBox1.Select(RichTextBox1.Text.Length, 0)
    RichTextBox1.ScrollToCaret()
End Sub
End Class
0 голосов
/ 23 февраля 2013

Вы можете использовать это 100% работ, но он покажет вам только результаты

Как показать результаты оболочки в vb.net:

'create 1 textbox1
'create 1 button1
'create 1 richtextbox1
'in the start up directory of this program make a file could 123.text
'------------------------------------------------------------------------
Dim read As System.IO.StreamReader
read = File.OpenText(Application.StartupPath & "\123.text")

Shell("cmd.exe /c" & TextBox1.Text + ">123.text")
Do Until read.EndOfStream
    RichTextBox1.Text = read.ReadLine & vbCrLf
Loop
'--------------------------------------------------------------------------
'you can add on the top to create the file if it does not exists,   

If IO.File.Exists(Application.StartupPath & "\123.text") = False Then
    IO.File.Create(Application.StartupPath & "\123.text")
End If
'-------------------------------------------------------------------------

Код также доступен на этомссылка http://pastebin.com/iEhv61jG

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...