I use System Exec to launch, I use ShowWindow to minimize, then I use I use Task Kill to exit the gateway. I do basic error checking and polling before I proceed with each operation. It gets the job done every time. Is there any reason I should not do it this way?