这个可能对你有点用
http://www.csdn.net/expert/topic/261/261032.xml?temp=.895611
主  题:  shell函数能以同步方式打开一个exe文件吗? 
作  者:  zym1110 (非才鸟)  
等  级:    
信 誉 值:  100 
所属论坛:  Visual Basic 
问题点数:  57 
回复次数:  5 
发表时间:  2001-8-29 10:16:44 
回复人: ltpao(啊炮) (  ) 信誉:100  2001-8-29 12:23:13  得分:30  
 
 
  '不用这么复杂,来一个简单一点的
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As LongPrivate Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFF      '  Infinite timeout
Private Const WAIT_TIMEOUT = &H102&Public Function ShellForWait(sAppName As String, Optional ByVal lShowWindow As VbAppWinStyle = vbMinimizedFocus, Optional ByVal lWaitTime As Long = 0) As Boolean
    Dim lID As Long, lHnd As Long, lRet As Long
    On Error Resume Next
    lID = Shell(sAppName, lShowWindow)
    If lID > 0 Then
        lHnd = OpenProcess(SYNCHRONIZE, 0, lID)
        If lHnd <> 0 Then
            Do
                lRet = WaitForSingleObject(lHnd, lWaitTime)
                DoEvents
            Loop While lRet = WAIT_TIMEOUT
            CloseHandle lHnd
            ShellForWait = True
        Else
            ShellForWait = False
        End If
    Else
        ShellForWait = False
    End If
End FunctionShellForWait("notepad.exe",,&HFFFF)