In VB3, you call GetModuleUsage() to determine when an app you startedwith the Shell command was complete. However, this call does not work correctlyin the 32-bit arena of Windows NT and Windows 95. To overcome this obstacle, use a routine in both 16- and 32- bit environmentsthat will tell you when a program has finished, even if it does not createa window. The IsInst() routine uses the TaskFirst and TaskNext functions definedin the TOOLHELP.DLL to see if the instance handle returned by the Shellfunction is still valid. When IsInst() returns False, the command has finished.You can call it in a loop:
hInst = Shell("foobar.exe")Do While IsInst(hInst) DoEventsLoopFunction IsInst(hInst As Integer) As Boolean Dim taskstruct As TaskEntry Dim retc As Boolean IsInst = False taskstruct.dwSize = Len(taskstruct) retc = TaskFirst(taskstruct) Do While retc If taskstruct.hInst = hInst Then ' note: the task handle is: taskstruct.hTask IsInst = True Exit Function End If retc = TaskNext(taskstruct) LoopEnd Function