views:

148

answers:

2
+1  Q: 

Blocking WM_QUIT

Quick question.

I have an app that use a native DLL through PInvoke, this DLL may call a PostQuitMessage().

How can I avoid it? (as my app should not close)

I tried AddMessageFilter, but it doesn't trigger the WM_QUIT.

+3  A: 

Yup, IMessageFilter cannot work. WM_QUIT makes the GetMessage() function return FALSE. It never gets around to calling the message filter, the message loop immediately exits. Overriding WndProc() or canceling OnFormClosing() won't work either. The only workaround I can think of is Detours to disable PostQuitMessage(). That requires some C/C++ skillz.

Hans Passant
why won't overriding `WndProc()` work?
Idan K
Same problem, the message loop exits before it can call DispatchMessage().
Hans Passant
A: 

PostQuitMessage() will have no effect if you call from a thread that doesn't own any windows.

John Knoeller