Yo intentaría asi
Private Declare Function SendMessageTimeout lib "USER32" Alias "SendMessageTimeoutA" _
(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, _
ByVal lpdwResult As Long) As Long
Private Const SMTO_BLOCK As Long = &H1 ' Previene que tu aplicacion procese mensajes mientras se espera
Private Const SMTO_ERRORONEXIT As Long = &H20 ' Devuelve 0 si el proceso de destino finaliza o la ventana es destruido
Private Const WM_GETTEXT As Long = &HD
Function IsAlive(ByVal hwnd as Long, Optional ByVal TimeOut as Long = 4500) as Boolean
IsAlive = SendMessageTimeout(hwnd, WM_GETTEXT, 0, 0, SMTO_BLOCK Or SMTO_ERRORONEXIT, TimeOut)
End Function
Aunque no lo he probado ni yo

por apurado
