tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Vb6)時間制限ありping応答確認する方法
投稿日: 2016/10/04(Tue) 10:14
投稿者魔界の仮面弁士
> 端末番号指定
ここでいう「端末番号」とは何を指していますか?
IPv6 アドレスのことでしょうか。IPv4 アドレスのことでしょうか。
それとも別の何か?


> Win32_PingStatusclassを使うやり方を見つけましたが、私の方では上手くいきませんでした。
Win32_PingStatusclass というのは
Win32_PingStatus クラスのことだと思いますが、
具体的には、何が問題になっているのでしょうか?

Option Explicit
Private Sub Command1_Click()
    
    Dim wql As String
    wql = "SELECT * FROM Win32_PingStatus" _
        & " WHERE (Address = '8.8.8.8' OR Address = 'google.co.jp' OR Address='www.microsoft.com' OR Address = 'hanatyan.sakura.ne.jp')" _
        & " AND TimeToLive=32" _
        & " AND BufferSize=64" _
        & " AND Timeout=1000" _
        & " AND TimestampRoute=0"

    Dim tm As Single
    tm = Timer

    Dim oSet As Object
    Set oSet = GetObject("winmgmts:").ExecQuery(wql)

    Dim o As Object, v As Variant
    Dim msg As String
    msg = ""
    For Each o In oSet
        If o.StatusCode = 0 Then
            msg = msg & (vbCrLf & "◎ " & o.Address & " => [" & o.ProtocolAddress & "] " & CStr(o.ResponseTime) & "ミリ秒, TTL=" & o.ResponseTimeToLive)
        Else
            msg = msg & (vbCrLf & "× " & o.Address & " => エラー" & o.StatusCode)
        End If
        If IsArray(o.TimeStampRecordAddress) Then
            For Each v In o.TimeStampRecordAddress
                msg = msg & (vbCrLf & vbTab & v)
            Next
        End If
    Next
    msg = ("実行時間:" & Format(Timer - tm, "0.000000") & "秒") & msg

    MsgBox msg, vbInformation
End Sub



WMI の Win32_PingStatus 以外の手段としては、
WMI の netDiagnostics クラスの Ping メソッドを使うとか、
ICMP.DLL の IcmpSendEcho API を呼ぶといった手がありますが、
何が問題になっているのかを示して貰わないと、代案も立てられません。


どうしても駄目なら、面倒でも raw socket を投げるか…。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。