Re: Terminating a program

brian sharon <[email protected]> Fri, 29 Jul 2005 13:15:24 -0700
Newsgroups gmane.games.devel.windows
Message-ID <[email protected]>
On 7/29/05, [email protected] <[email protected]> wrote:
> 
> I have divided my system to a launcher program and the actual (full
> screen) graphics application.
> 
> In some cases the laucher needs to terminate the graphics application.
> 
> I have been trying
> SendMessageTimeout(hwnd,WM_CLOSE,0,0,
> SMTO_NORMAL,
> 10000,
> &res);
> 
> and
> 
> PostMessage(hwnd, WM_CLOSE, 0, 0) ;
> 
> 
> but neither of these is fully reliable. In some cases
> I get the Windows "End Program" dialogue on screen asking
> the user if the program should really be terminated.


Windows pops up that dialog box because your graphics application isn't 
processing messages, so Windows considers the app to be hung. You should 
figure out why that's happening, and fix the bugs in your graphics app so 
that it can actually process messages and shutdown cleanly.

That is not ok for me.
> 
> Actually I don't really care if the program gets its chance of
> getting cleanly shut down, but it is very much necessary that the
> OpenGL (Nvidia) and sound drivers (Creative) are not left in a
> corrupt state. And Windows (XP) itself must be able to get
> all resources back etc.
> 
> Any ideas how to do this?


Once you learn that there's a function called TerminateProcess() you may 
think it's just what you need, but that is a very bad way to shut down an 
application, and it is likely to leave drivers in a corrupt state.

--brian