Reagiert nicht bedeutet nur, dass das GetMessage/PeekMessage nicht ordentlich aufgerufen wird - dh die Anwendung rechnet gerade intensive, weshalb es dazu nicht kommt - Windows interpretiert das so, dass die Anwendung sich aufgehangen hat.
Du kannst aber, wenn du weißt, dass nach 5 Sek. zB die Anwendung normalerweise fertig sein sollte, ein Timeout mit 10 sek setzen dann einfach terminieren.
WaitForSingleObject() mit 10*1000 MSec zB
Das mit dem Debugger - schau dir die Parameter bei CreateProcess an - "DEBUG_ONLY_THIS_PROCESS"
Anschließend, per WaitForDebugEvent() Loop die Debug-Events abholen und kucken. Da interessiert dich "EXCEPTION_DEBUG_EVENT" (wobei die erste
Exception ein Sonderfall ist und einfach zu ignorieren ist)