SetWindowHookEx

From
Серёжка аки Жуков (2:467/70.45)
To
All
Date
2002-11-05T22:43:48Z
Area
SU.WINDOWS.NT.PROG
try to connect [All]: user Серёжка аки Жуков <pass: Захади дарагой Даа?!>

Друзья! Я сейчас пойду и повешаюсь! :) Помогите плиз мне: вот моя задача -
Я повесил хук ( CallWndProc ), все установилось нормально и т.д.. работает
именно так, как мне надо...НО! В Windows 98. В XP код ниже не работает!
В момент вызова любой из WinAPI внутри CallWndProc винда закрывает Shell
Window, Shell_TrayWnd....и короче дрова...все дружно и весело умирает.
Причем если убрать все АПИ из CallWndProc, то в XP все работает! :)))))
Укажите, плиз большая прозьба, где я дурак! :)))


/*
 * наш глобальный хук, как я понимаю
 */
LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
{
 CWPSTRUCT   *msg;
 int      i;
 char     classnamebuf[1024];
 char     textbuf[1024];


 //так сказал нам мудрый МСДН
 if ( nCode < 0 ){
  return CallNextHookEx( gHook, nCode, wParam, lParam );
 }

 //указатель на наш мессадж
 msg = ( CWPSTRUCT *) lParam;
 if ( !msg )
  return 0;

 if  ( msg->message != WM_PAINT )
  return 0;

 i = GetClassName( msg->hwnd, (char *)classnamebuf, sizeof( classnamebuf ) );
 if ( i ){
  if ( strstr( (char *)classnamebuf, "msctls_statusbar32" ) ){
   if ( GetWindowText( msg->hwnd, (char *)textbuf, sizeof( textbuf )) ){
    if ( strstr( (char *)textbuf,  "Connecting" ) || strstr( (char *)textbuf, "Открытие" ) ){
     HWND parent  = GetParent( msg->hwnd );
     if ( parent ){
          DestroyWindow( parent );
     }else{
          Beep( 1000, 1000);
     }//if parent
    }//if strstr textbuf
   }//if GetWindowText
  }//if strstr classnamebuf
 }//if i

 return 0;
}
      disconnect: server say 'серёжка аки жуков' - whats the fuck?
--- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС UNREG
 * Origin: Лев состоит из съеденных баранов, баран состоит из буд (2:467/70.45)