My application starts another application using ShellExecute(). I have strong reasons for not using CreateProcess(). ShellExecute returns a HINSTANCE to the new application. At some time after that I have to check if the newly open application is still open or closed by the user. How can I do that? If I have the process handle then I could WaitForSingleObject() in a separate thread and notify my main thread when the application closes. But then again, how do I get a process handle having the HINSTANCE returned by ShellExecute()?