Reply from 192.168.0.3: bytes=32 time<1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30
Ping statistics for 192.168.0.3: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms ============================ となりますが、EXEからpingコマンドを実行し 上記のような結果をそのままStringとして取得し、 プログラム側で、処理したいのです。 普通のshell関数だと、このような結果は取得できないようなのですが、 なにかよい方法はありませんでしょうか。
また、いろいろ調べ下記のようなコードを書いて見ましたが、 実行時にフォームがもうひとつ立ち上がってしまいます。 それも併せてご教授いただけないでしょうか。 ==================================================================== Private Sub cmdPing_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdPing.Click
Dim p As New Process() With p.StartInfo .WindowStyle = ProcessWindowStyle.Hidden .FileName = "PING" .Arguments = Me.ip.Text .RedirectStandardOutput = True .UseShellExecute = False .CreateNoWindow = True End With p.Start() p.WaitForExit(1000) Trace.WriteLine(Me.txtPingRslt.Text) p.Dispose()
End Sub
ip :IPアドレス入力テキストボックス txtPingRslt:ping結果出力テキストボックス ====================================================================
すーです。ありがとうございます。 下記コードで、 プロセススタート時の一行目 (DOSプロンプト起動時に表示される Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.) は取得できたのですが、 pingを打っていると思われる次行以降でとまってしまいました。 ネットワーク系のコマンドの実行結果を取得するには、 処理結果が戻ってくるまで、何らかの待ち処理を入れなければいけない だろう事は想像がつきますが、どうすれば実現できるかがわかりませんでした。
==================================================================== Private Sub cmdPing_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdPing.Click
Dim results As String Dim psi As New System.Diagnostics.ProcessStartInfo()
Reply from 192.168.0.3: bytes=32 time<1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30 Reply from 192.168.0.3: bytes=32 time=1ms TTL=30
Ping statistics for 192.168.0.3: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms ============================ の内容を取得する事は出来ないように思われます。 せっかくいただいたのに申し訳ありません。
分類:[.NET]
こんばんは、すーです。
表題の通りのご質問です。
例えば、pingコマンドをDOS画面で打つと
============================
C:\>ping 192.168.0.3
Pinging 192.168.0.3 with 32 bytes of data:
Reply from 192.168.0.3: bytes=32 time<1ms TTL=30
Reply from 192.168.0.3: bytes=32 time=1ms TTL=30
Reply from 192.168.0.3: bytes=32 time=1ms TTL=30
Reply from 192.168.0.3: bytes=32 time=1ms TTL=30
Ping statistics for 192.168.0.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
============================
となりますが、EXEからpingコマンドを実行し
上記のような結果をそのままStringとして取得し、
プログラム側で、処理したいのです。
普通のshell関数だと、このような結果は取得できないようなのですが、
なにかよい方法はありませんでしょうか。
また、いろいろ調べ下記のようなコードを書いて見ましたが、
実行時にフォームがもうひとつ立ち上がってしまいます。
それも併せてご教授いただけないでしょうか。
====================================================================
Private Sub cmdPing_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdPing.Click
Dim p As New Process()
With p.StartInfo
.WindowStyle = ProcessWindowStyle.Hidden
.FileName = "PING"
.Arguments = Me.ip.Text
.RedirectStandardOutput = True
.UseShellExecute = False
.CreateNoWindow = True
End With
p.Start()
p.WaitForExit(1000)
Trace.WriteLine(Me.txtPingRslt.Text)
p.Dispose()
End Sub
ip :IPアドレス入力テキストボックス
txtPingRslt:ping結果出力テキストボックス
====================================================================
よろしくお願いします。