dim runs as long
runs=shell("word.exe",3)
当关闭WORD的时候有一个返回值,同过这个返回值这可以执行msgbox"word已关闭",请朋友们帮忙解决,3Q~!~!

解决方案 »

  1.   


    Private Declare Function WaitForSingleObject Lib "kernel32" _
       (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As LongPrivate 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
    Private Const INFINITE = -1&
    Private Const SYNCHRONIZE = &H100000Private Sub Command1_Click()
        Dim iTask As Long, ret As Long, pHandle As Long
        iTask = Shell("notepad.exe", vbNormalFocus)
        pHandle = OpenProcess(SYNCHRONIZE, False, iTask)
        ret = WaitForSingleObject(pHandle, INFINITE)
        ret = CloseHandle(pHandle)
        MsgBox "结束"
    End Sub
      

  2.   

    楼上的方法是通过comand1微记事本创建一个进程,穿件后直接关闭,中间没有人工干预过程,我的意思是说打开WORD要手动关闭,产生一个值返回给程序,程序再执行msgbox "WORD已关闭"
      

  3.   

    Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long
    Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
    Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
    Private Const STILL_ACTIVE As Long = &H103
    Sub ShellWait(FileName As String)
    Dim hShell As Long
    Dim hProc As Long
    Dim lExit As Long
    hShell = Shell(FileName, 3)
    hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
    Do
        GetExitCodeProcess hProc, lExit
        DoEvents
    Loop While lExit = STILL_ACTIVE
    End SubPrivate Sub Command1_Click()
    ShellWait "f:\word.exe"
    MsgBox "运行完毕!"
    End Sub
      

  4.   

    To ": badboy168(坏小子) " 你试了吗?一定没有,要不然就不会说没有进行人工干预了。