可以用API函数实现:'-----------------------------------
'Shell的异步执行时使用
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Const Process_Query_Information = &H400
Public Const Still_Active = &H103
'-----------------------------------  Dim longReturn As Long
  Dim longProcess As Long
  Dim longExitcode As Long
        longReturn = Shell("……", vbNormalFocus)
       
        longProcess = OpenProcess(Process_Query_Information, False, longReturn)
        Do '如果Shell调的外部程序还在运行,则一直等待
           GetExitCodeProcess longProcess, longExitcode
           DoEvents
        Loop While longExitcode = Still_Active该给分了吧?   :-)

解决方案 »

  1.   

    如果要把外部程序关闭了
    要用什么API阿
      

  2.   

    >怎么给分?
    >Hanson 天啊~~我倒~
      

  3.   

    tlz2000(笑笑生)回答我的问题我给你分
      

  4.   

    直接看shell的返回值即可,shell是一个函数。
      

  5.   

    对不起,iwome(水兔子)你的问题我没法回答,不过有本书你可以参考一下,
    书名记不太清了,好象叫“API FOR VISUAL BASIC 使用指南”,
    很厚的一本,很详细的好书,建议你去找找。
      

  6.   

    不过我还是找了段程序,希望对你有用:Private Declare Function FindWindow Lib ″user32″ Alias ″FindWindowA″(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function PostMessage Lib ″user32″ Alias″PostMessageA″ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Const WM-CLOSE = &H10
    Const WM-QUIT = &H12Dim Handle As Integer
      Dim n As Integer定义关闭程序窗口的子程序
    Sub CloseWin() ′关闭指定窗口
    Dim WinText As String
    Dim i As Integer
      WinText = ″.....″ ‘要关闭的程序窗口的标题
      Handle = FindWindow(vbNullString, WinText)
      PostMessage Handle, WM-CLOSE, 0, 0
      If Handle <> 0 Then MsgBox ″已关闭″ 
    End Sub
      

  7.   

    http://www.zjonline.com.cn/vbbible/software/program/vb/ccw/shell.htm
    这里有一个好的办法。
    OpenProcess的返回值就是句柄可以用CloseHandle来把程序关闭了