Я не уверен, может ли это работать.Я использую его для создания подклассов некоторых ящиков сообщений, чтобы не допустить их всплывающих окон, и они не из DLL.
Я установил ловушку для захвата окон сообщений перед всплывающим:
HHOK hMessageBoxHook_ = SetWindowsHookEx(WH_CBT,
&CbtHookProc,
::GetModuleHandle(NULL),
GetCurrentThreadId());
Новыйпроцедура подключения (CbtHookProc) будет выглядеть следующим образом:
LRESULT CALLBACK CbtHookProc( int nCode,
WPARAM wParam,
LPARAM lParam)
{
if(nCode < 0)
{
return ::CallNextHookEx( hMessageBoxHook_,
nCode,
wParam,
lParam);
}
switch(nCode)
{
case HCBT_CREATEWND: // a window is about to be created
return -1;
}
return ::CallNextHookEx( hMessageBoxHook_,
nCode,
wParam,
lParam);
}
из документация для Microsoft для HCBT_CREATEWND:
Если процедура подключения возвращает ненулевое значение,система разрушает окно
Затем после вызова Init вы можете убрать хук, и снова появятся окна с сообщениями:
::UnhookWindowsHookEx(hMessageBoxHook_);
hMessageBoxHook_ = 0;
Как я уже говорил, я не могу гарантировать, что это работаетно попробуй.