我用shell命令 : shell "command.com /c ping www.sina.com -w 6000> PingT.txt"   
        PING的是www.sina.com但是现在我用TEXT框,需要PING的是TEXT1.TEXT里面的内容,我应该怎么做啊!
我现在是这样做的,但是不行:
dim stping as string
stping="command.com/c ping " & text1.text & "-w 6000>PingT.txt"
shell stping我应该怎么做啊!

解决方案 »

  1.   


    供参考http://community.csdn.net/Expert/topic/4202/4202317.xml?temp=.9369013
      

  2.   

    stping="command.com/c ping " & text1.text & " -w 6000>PingT.txt"
    少了个空格
      

  3.   

    至于Ping,你这样做不好,给你个程序,你这样做:
    Option Explicit
    '用于在网络不通时先判断网络状况,免得网络不通而导致数据库连接状态检查时间较长带来的麻烦
    Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
    Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
    Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As Long
    Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
    Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
    Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
    Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal hostname$) As Long
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)'  ICMP返回的报文信息常数和Winsock版本等相关常数
    Private Const IP_STATUS_BASE = 11000
    Private Const IP_SUCCESS = 0
    Private Const IP_BUF_TOO_SMALL = (11000 + 1)
    Private Const IP_DEST_NET_UNREACHABLE = (11000 + 2)
    Private Const IP_DEST_HOST_UNREACHABLE = (11000 + 3)
    Private Const IP_DEST_PROT_UNREACHABLE = (11000 + 4)
    Private Const IP_DEST_PORT_UNREACHABLE = (11000 + 5)
    Private Const IP_NO_RESOURCES = (11000 + 6)
    Private Const IP_BAD_OPTION = (11000 + 7)
    Private Const IP_HW_ERROR = (11000 + 8)
    Private Const IP_PACKET_TOO_BIG = (11000 + 9)
    Private Const IP_REQ_TIMED_OUT = (11000 + 10)
    Private Const IP_BAD_REQ = (11000 + 11)
    Private Const IP_BAD_ROUTE = (11000 + 12)
    Private Const IP_TTL_EXPIRED_TRANSIT = (11000 + 13)
    Private Const IP_TTL_EXPIRED_REASSEM = (11000 + 14)
    Private Const IP_PARAM_PROBLEM = (11000 + 15)
    Private Const IP_SOURCE_QUENCH = (11000 + 16)
    Private Const IP_OPTION_TOO_BIG = (11000 + 17)
    Private Const IP_BAD_DESTINATION = (11000 + 18)
    Private Const IP_ADDR_DELETED = (11000 + 19)
    Private Const IP_SPEC_MTU_CHANGE = (11000 + 20)
    Private Const IP_MTU_CHANGE = (11000 + 21)
    Private Const IP_UNLOAD = (11000 + 22)
    Private Const IP_ADDR_ADDED = (11000 + 23)
    Private Const IP_GENERAL_FAILURE = (11000 + 50)
    Private Const MAX_IP_STATUS = 11000 + 50
    Private Const IP_PENDING = (11000 + 255)
    Private Const PING_TIMEOUT = 200
    Private Const WS_VERSION_REQD = &H101
    Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
    Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
    Private Const MIN_SOCKETS_REQD = 1
    Private Const SOCKET_ERROR = -1
    Private Const MAX_WSADescription = 256
    Private Const MAX_WSASYSStatus = 128'   ICMP选项结构
    Private Type ICMP_OPTIONS
        Ttl             As Byte
        Tos             As Byte
        Flags           As Byte
        OptionsSize     As Byte
        OptionsData     As Long
    End Type'   ICMP应答结构
    Private Type ICMP_ECHO_REPLY
        Address         As Long
        Status          As Long
        RoundTripTime   As Long
        DataSize        As Long
        DataPointer     As Long
        Options         As ICMP_OPTIONS
        Data            As String * 250
    End Type'  存放Winsock版本等信息的结构
    Private Type WSADATA
        wVersion As Integer
        wHighVersion As Integer
        szDescription(0 To MAX_WSADescription) As Byte
        szSystemStatus(0 To MAX_WSASYSStatus) As Byte
        wMaxSockets As Long
        wMaxUDPDG As Long
        dwVendorInfo As Long
    End Type
    Private Type hostent
        h_name As Long
        h_aliases As Long
        h_addrtype As Integer
        h_length As Integer
        h_addr_list As Long
    End Type
    Dim ICMPOPT As ICMP_OPTIONS
    Private Type NETRESOURCE
        dwScope As Long
        dwType As Long
        dwDisplayType As Long
        dwUsage As Long
        pLocalName As Long
        pRemoteName As String 'Long
        pComment As Long
        pProvider As Long
    End Type
    Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long'  返回状态信息
    Private Function GetStatusCode(Status As Long) As String
       Dim msg As String
       Select Case Status
          Case IP_SUCCESS:               msg = "ip success"
          Case IP_BUF_TOO_SMALL:         msg = "ip buf too_small"
          Case IP_DEST_NET_UNREACHABLE:  msg = "ip dest net unreachable"
          Case IP_DEST_HOST_UNREACHABLE: msg = "ip dest host unreachable"
          Case IP_DEST_PROT_UNREACHABLE: msg = "ip dest prot unreachable"
          Case IP_DEST_PORT_UNREACHABLE: msg = "ip dest port unreachable"
          Case IP_NO_RESOURCES:          msg = "ip no resources"
          Case IP_BAD_OPTION:            msg = "ip bad option"
          Case IP_HW_ERROR:              msg = "ip hw_error"
          Case IP_PACKET_TOO_BIG:        msg = "ip packet too_big"
          Case IP_REQ_TIMED_OUT:         msg = "ip req timed out"
          Case IP_BAD_REQ:               msg = "ip bad req"
          Case IP_BAD_ROUTE:             msg = "ip bad route"
          Case IP_TTL_EXPIRED_TRANSIT:   msg = "ip ttl expired transit"
          Case IP_TTL_EXPIRED_REASSEM:   msg = "ip ttl expired reassem"
          Case IP_PARAM_PROBLEM:         msg = "ip param_problem"
          Case IP_SOURCE_QUENCH:         msg = "ip source quench"
          Case IP_OPTION_TOO_BIG:        msg = "ip option too_big"
          Case IP_BAD_DESTINATION:       msg = "ip bad destination"
          Case IP_ADDR_DELETED:          msg = "ip addr deleted"
          Case IP_SPEC_MTU_CHANGE:       msg = "ip spec mtu change"
          Case IP_MTU_CHANGE:            msg = "ip mtu_change"
          Case IP_UNLOAD:                msg = "ip unload"
          Case IP_ADDR_ADDED:            msg = "ip addr added"
          Case IP_GENERAL_FAILURE:       msg = "ip general failure"
          Case IP_PENDING:               msg = "ip pending"
          Case PING_TIMEOUT:             msg = "ping timeout"
          Case Else:                     msg = "unknown  msg returned"
       End Select
       GetStatusCode = CStr(Status) & "   [ " & msg & " ]"
    End Function'  获得一个整数的高字节位
    Private Function HiByte(ByVal wParam As Long) As Integer
        HiByte = wParam \ &H100 And &HFF&
    End Function
    '  获得一个整数的低字节位
    Private Function LoByte(ByVal wParam As Long) As Integer
        LoByte = wParam And &HFF&
    End Function
      

  4.   

    '  Ping一个IP地址
    Private Function Ping(szAddress As String, ECHO As ICMP_ECHO_REPLY) As Long
        On Error Resume Next
        Dim hPort As Long
        Dim dwAddress As Long
        Dim sDataToSend As String
        Dim iOpt As Long
        sDataToSend = "Echo This"
        Dim tHost As hostent
        Dim ListAddress As Long
        Dim listaddr As Long
        Dim TAddr As Long
        TAddr = gethostbyname(szAddress)
        If TAddr <> 0 Then
            CopyMemory tHost.h_name, ByVal TAddr, Len(tHost) '回头检查一下这里是否有内存泄漏
            ListAddress = tHost.h_addr_list
            CopyMemory listaddr, ByVal ListAddress, 4
            CopyMemory dwAddress, ByVal listaddr, 4
            'dwAddress = AddressStringToLong(szAddress)
            hPort = IcmpCreateFile()
            If IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), 0, ECHO, Len(ECHO), PING_TIMEOUT) Then
                '如果ping成功,状态返回0。
                Ping = ECHO.RoundTripTime
            Else
                Ping = ECHO.Status * -1
            End If
        Else
            ECHO.Status = IP_BAD_DESTINATION
        End If
        Call IcmpCloseHandle(hPort)
    End Function
     
    '  将文本框中的IP地址转换成系统识别的长整数形式
    Function AddressStringToLong(ByVal tmp As String) As Long
        Dim i As Integer
        Dim parts(1 To 4) As String
        i = 0
        '转换IP地址
        While InStr(tmp, ".") > 0
            i = i + 1
            parts(i) = Mid(tmp, 1, InStr(tmp, ".") - 1)
            tmp = Mid(tmp, InStr(tmp, ".") + 1)
        Wend
        i = i + 1
        parts(i) = tmp
        If i <> 4 Then
            AddressStringToLong = 0
            Exit Function
        End If
        AddressStringToLong = Val("&H" & Right("00" & Hex(parts(4)), 2) & Right("00" & Hex(parts(3)), 2) & Right("00" & Hex(parts(2)), 2) & Right("00" & Hex(parts(1)), 2))
    End Function'  初始化Socket
    Private Function SocketsInitialize() As Boolean
        Dim WSAD As WSADATA
        Dim X As Integer
        Dim szLoByte As String
        Dim szHiByte As String
        Dim szBuf As String
        
        '初始化Socket
        X = WSAStartup(WS_VERSION_REQD, WSAD)
        If X <> 0 Then
            'MsgBox "Windows Sockets for 32 bit Windows " & "environments is not successfully responding."
            Exit Function
        End If
        
         '  判断是否有支持足够的Socket
        If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
            szHiByte = Trim$(Str$(HiByte(WSAD.wVersion)))
            szLoByte = Trim$(Str$(LoByte(WSAD.wVersion)))
            szBuf = "Windows Sockets Version " & szLoByte & "." & szHiByte
            szBuf = szBuf & " is not supported by Windows " & "Sockets for 32 bit Windows environments."
            'MsgBox szBuf, vbExclamation
            Exit Function
        End If
        
        '  判断Winsock的版本是否被32为Winsock支持
        If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
            szBuf = "This application requires a minimum of " & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets."
            'MsgBox szBuf, vbExclamation
            Exit Function
        End If
        SocketsInitialize = True
    End Function'  关闭Sockets
    Private Sub SocketsCleanup()
        Dim X As Long
        '关闭Sockets
        X = WSACleanup()
        If X <> 0 Then
            'MsgBox "Windows Sockets error " & Trim$(Str$(X)) & " occurred in Cleanup.", vbExclamation
        End If
    End SubPublic Function Ping_IP(IPStr As String, Optional Times As Long) As Long
        '0-成功;1-错误IP(继续访问数据库);2-Ping不通
        On Error Resume Next
        Ping_IP = 1
        If Trim(IPStr) = "" Then Exit Function
        Dim ECHO As ICMP_ECHO_REPLY
        Dim pos As Integer, TmpBack As Long, i As Long
        If SocketsInitialize() Then
            'ping地址
            Call Ping(IPStr, ECHO)
            '显示ping结果
            Select Case ECHO.Status
                Case IP_SUCCESS:
                    TmpBack = 0
                Case IP_BAD_DESTINATION:
                    TmpBack = 1
                Case Else:
                    TmpBack = 2
            End Select
            If Times > 1 And TmpBack > 0 Then
                For i = 1 To Times - 1
                    'ping地址
                    Call Ping(IPStr, ECHO)
                    '显示ping结果
                    Select Case ECHO.Status
                        Case IP_SUCCESS:
                            TmpBack = 0: Exit For
                        Case IP_BAD_DESTINATION:
                            TmpBack = 1
                        Case Else:
                            TmpBack = 2
                    End Select
                Next i
            End If
            SocketsCleanup
        End If
        Ping_IP = TmpBack
    End FunctionPublic Sub ConnectServerShare(ServerName As String, UserName As String, PassWord As String) '对于一些必须连接一次服务器才能连接的的计算机采用先用程序连一次的方法
        On Error Resume Next
        Dim LL As NETRESOURCE
        With LL
            .pRemoteName = "\\" & ServerName
            .dwType = 0
        End With
        WNetAddConnection2 LL, PassWord, UserName, 0
    End Sub
    ----
    里边除了Ping,还带了个登陆其他计算机的函数。
      

  5.   

    stping="command.com/c ping  " & text1.text & "  -w 6000>PingT.txt"
      

  6.   

    stping="command.com /c ping  " & text1.text & "  -w 6000>PingT.txt"
    /c前面还少个空格
      

  7.   

    command.com 是 98下的DOS
    2000以上用CMD