windows - MessageBox forhindrer at komme ud af applikationen

Indlæg af Hanne Mølgaard Plasc

Problem



Vores ansøgning indlæser 3rd party DLL'er, der til tider springer MessageBoxes.
Vi bemærker, at vi undertiden ikke kan bruge afslut (0), når der er en åben MessageBox.


Hvordan kan vi stadig tvinge et eksistens i en sådan sag?


Tak

Bedste reference


Hvis du vil bruge brute force, kan du ringe til TerminateProcess() funktionen. Jeg er ikke sikker på, at dette er en god idé, du vil måske opdage, om der er en åben meddelelsesboks og send en tæt på den (f.eks. Ved hjælp af en FindWindow())


Tag et kig på MSDN. [9]

Andre referencer 1


Synes som dine grimme DLL-opkald MessageBox (eller hvad som helst) indenfor DLL\_THREAD\_DETACH eller DLL\_PROCESS\_DETACH.


Hvis dette sker i samme tråd (det vil sige tråden kaldene exit) kan du prøve at ringe PostQuitMessage til højre før programafslutningen. Dette bør afbryde enhver meddelelsessløjfe. Hvis dette sker i en anden tråd - kan du ringe til PostThreadMessage.


Der er også mulighed for at aflytte opkald til Win32 API-funktioner ved at tilslutte det relevante modul (Exe/Dll) importtabellen. Opfundet af J.Richter (hvis jeg husker korrekt). Http://www.player.idv.tw/prog/index.php/APIHook [10]