'为什么不能关闭?
'代码没有错误,就是不能关闭
dim PID as long
dim PHandle as long
PID = Shell("cmd /c ping 202.101.172.36 -t", vbNormalFocus)
if PID <> 0 then
   PHandle = OpenProcess(&H1, 0&, PID)
   if PHandle <> 0 then
      msgbox "OK"
      TerminateProcess PHandle,3838
   end if
end if
closehandle PHandle

解决方案 »

  1.   

    PID和PHandle肯定有一个为0,查查
      

  2.   

    首先要知道的是,每个Process有唯一的一个ProcessID,这是OS给定的,用来区别每个 Process,这个Process ID(PID)主要可用来取得该Process相对应的一些资讯,然而要对该Process的控制,却大多透过 Process Handle(hProcess)。VB Shell指令的传回值是PID,而非hProcess,所以我们需透过OpenProcess这个API来取得 hProcess而OpenProcess()的第一个参数,指的是所取得的hProcess所具有的能力,像 PROCESS_QUERY_INFORMATION 便是让GetExitCode()可取得hProcess所指的process之状态,而PROCESS_TERMINATE,便是让TerminateProcess(hProcess..)的指令能够生效,也就是说,不同参数设定,使hProcess所具有的权限、能力有所不同。
    另外,你是什么系统,win2k下要麻烦一些,可以参考:
    http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20616547.html
      

  3.   

    //PID和PHandle肯定有一个为0,查查都不为0,试过了
      

  4.   

    我的代码是在XP下的,如果 用 SHELL("CMD")的话,我的代码可以通过,但用上 参数以后就不行了
      

  5.   

    为什么 shell("cmd",vbNormalFocus)可以,而 Shell("cmd /c ping 202.101.172.36 -t", vbNormalFocus) 不行呢?
      

  6.   

    谢谢 rainstormmaster(暴风雨 v2.0),那个里面的也解决不了我的问题
      

  7.   

    如果是我,执行这么简单的操作,干脆写一个批处理去完成.
    MYPING.BAT 
    @EACH ON
    PING %1
    EXIT执行批处理.
    SHELL("MYPING.BAT """ & a & """")
    注.A是参数列表.