VB如何实现PING命令?

用VB做一个输入框,一个按钮,一个显示框,要求:在输入框内输入IP点击按钮在显示框显示PING的返回值(最好可以直观的显示“通”或者“不通”)求高手写出按钮脚本……... 用VB做一个输入框,一个按钮,一个显示框, 要求: 在输入框内输入IP 点击按钮 在显示框显示PING的返回值(最好可以直观的显示 “通”或者“不通”) 求高手写出按钮脚本…… 展开
 我来答
freeeeeewind
推荐于2017-10-11 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1351万
展开全部

利用VB的Shell执行PING命令,将PING的输出重定向到文件 c:\r.txt,然后读取c:\r.txt文件显示运行结果。

由于VB中的Shell命令是异步执行的,即调用Shell后,没等Shell执行完毕,程序就继续执行下一条语句。为此,程序使用了系统API来判断Shell是否结束。

1)窗体及控件

2)代码

Option Explicit

Private Declare Function GetExitCodeProcess Lib "kernel32" ( _
        ByVal hProcess As Long, _
        lpExitCode As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" ( _
        ByVal hObject As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" ( _
        ByVal dwDesiredAccess As Long, _
        ByVal bInheritHandle As Long, _
        ByVal dwProcessId As Long) As Long
        
Const PROCESS_QUERY_INFORMATION = &H400
Const STILL_ALIVE = &H103

Private Sub Command1_Click()
    If Trim(Text1.Text) = "" Then
        MsgBox "请输入域名或IP地址", vbInformation + vbOKOnly
        Text1.SetFocus
        Exit Sub
    End If
    
    '命令执行期间禁用命令按钮
    Command1.Enabled = False
    
    '调用Shell执行Ping,执行结果重定向到C:\r.txt中
    Dim pid As Long
    pid = Shell("cmd.exe /C Ping " & Text1.Text & " > c:\r.txt", vbHide)
    ' 提示
    Text2.Text = "正在执行Ping " & Text1.Text & " ..."
    '等待Shell执行结束
    Dim hProc As Long
    hProc = OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
    Dim ExitCode As Long
    Do
        Call GetExitCodeProcess(hProc, ExitCode)
        DoEvents
    Loop While ExitCode = STILL_ALIVE
    '清空,准备显示结果
    Text2.Text = ""

    '打开 C:\r.txt文件
    Open "c:\r.txt" For Input As #1
    Dim strLine As String
    Do Until EOF(1)
        Line Input #1, strLine
        '显示执行结果
        Text2.Text = Text2.Text & strLine & vbNewLine
    Loop
    
    '关闭文件
    Close #1
    '删除C:\r.txt
    On Error Resume Next
    Kill "c:\r.txt"
    On Error GoTo 0
    
    '使能命令按钮
    Command1.Enabled = True
End Sub

Private Sub Form_Load()
    Text1.Text = ""
    Text2.Text = ""
End Sub

3)运行结果

Ping baidu.com 正在执行中 ....

Ping baidu.com执行结果

瑞安阿芳
推荐于2017-09-16 · TA获得超过1947个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:900万
展开全部
在VB工程中引用“Microsoft WMI Scripting V1.2 Library”,然后在按钮单击事件中写上如下的代码:

Dim objWMIService As SWbemServices '定义SWbemServices对象
Dim colItems As SWbemObjectSet 'SWbem对象集合
Dim objItem As SWbemObject 'Swbem单个对象
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PingStatus Where Address='" & Text1.Text & "'") '这里写了Text1控件,具体的IP地址你来决定
For Each objItem In colItems
If objItem.StatusCode = 0 Then
'这里自己添加显示通的代码
Else
'这里自己添加显示不通的代码
End If
Next
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱问西瓜爱答树
2012-11-27 · TA获得超过1760个赞
知道小有建树答主
回答量:890
采纳率:50%
帮助的人:292万
展开全部
用shell可以调用cmd的ping
shell("ping ")'加上IP,不过只能在cmd中显示,没有返回值。
具体参数查看cmd的ping命令。
vb貌似可以用winsock控件判断通还是不通。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e46db84a5
2012-11-27 · TA获得超过121个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:186万
展开全部
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Dim a As String * 65400
Shell "cmd.exe /c ping 127.0.0.1 >c:\1.txt"
Text1 = "生成ping 127.0.0.1 "
Sleep 5000
Open "c:\1.txt" For Binary As #1
Get #1, , a
Text1 = a
Close #1
Kill "c:\1.txt"
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gdidajj
2012-11-27 · TA获得超过240个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:179万
展开全部
Dim wsc As Object
Set wsc = CreateObject("wscript.shell")
wsc.run "ping " & text1.text

这个可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式