проблемы c InternetStatusCallback

Discussion in 'WASM.WIN32' started by vaaah, Jan 5, 2009.

  1. vaaah

    vaaah New Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2009
    Messages:
    4
    Всем привет.
    Хукаю в ишаке InternetStatusCallback
    заменяю в нем lpfnInternetCallback, на свой обработчик такого вида(из msdn)

    Code (Text):
    1. void CALLBACK CallMaster(
    2.     HINTERNET hInternet,
    3.     DWORD dwContext,
    4.     DWORD dwInternetStatus,
    5.     LPVOID lpvStatusInformation,
    6.     DWORD dwStatusInformationLength
    7. )
    8. {
    9.  
    10.     REQUEST_CONTEXT *cpContext;
    11.     cpContext = (REQUEST_CONTEXT*)dwContext;
    12.     char szStatusText[80];
    13. //  MessageBox( 0, "callback", "hook", 0 );
    14.  
    15.     switch (dwInternetStatus)
    16.     {
    17.         case INTERNET_STATUS_CLOSING_CONNECTION:
    18.             wsprintf( szStatusText,
    19.                           "%s CLOSING_CONNECTION", cpContext->szMemo );
    20.             break;
    21.         case INTERNET_STATUS_CONNECTED_TO_SERVER:
    22.             wsprintf( szStatusText,
    23.                           "%s CONNECTED_TO_SERVER", cpContext->szMemo );
    24.             break;
    25.         <..........................>
    26.         case INTERNET_STATUS_STATE_CHANGE:
    27.             wsprintf( szStatusText,
    28.                                       "%s STATE_CHANGE", cpContext->szMemo );
    29.             break;
    30.         default:
    31.         wsprintf( szStatusText,
    32.                            "%s Unknown Status %d Given",
    33.                            cpContext->szMemo,    dwInternetStatus);
    34.             break;
    35.     }
    36.    
    37.     MessageBox( 0, szStatusText,"Callback", 0 );
    38.  
    39. }
    мессаджбоксы вываливаются нормально, т.е. каллбэк работает, проблема в том что при этом в самом браузере ничего не отображается, т.е. пустая страница, почитал msdn ничего адекватного не нашел, так же наткнулся на пару примеров у китайчегов все так же, результат работы один и тот же
    ткните носом в доку или кодес или объясните плз, буду очень признателен
     
  2. sambd

    sambd New Member

    Blog Posts:
    0
    Joined:
    Dec 14, 2007
    Messages:
    60
    собственно а где ты вызываешь оригинальный обработчик? без него ИЕ не получит ничего!
     
  3. barton

    barton New Member

    Blog Posts:
    0
    Joined:
    Jul 19, 2008
    Messages:
    164
    Location:
    Czechoslovakia
    нужно сохранять заданый колбек для сессии и подменять своим, а из своего вызывать оригинальный, конечно когда ничего не надо скрывать в нотификаторе..
     
  4. vaaah

    vaaah New Member

    Blog Posts:
    0
    Joined:
    Jan 5, 2009
    Messages:
    4
    barton
    спасибо, сделал как ты и написал

    проблема в следущем
    Code (Text):
    1. typedef INTERNET_STATUS_CALLBACK ( WINAPI *mInternetStatusCallbackRet )( HINTERNET hInternet, DWORD dwContext, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength );
    2. mInternetStatusCallbackRet InternetStatusCallbackRet;
    3.  
    4. INTERNET_STATUS_CALLBACK HOOK_InternetStatusCallback( HINTERNET hInternet, DWORD dwContext, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength )
    5. {
    6. //  MessageBox( 0, "ok", "ok", 0 );
    7.     return InternetStatusCallbackRet( hInternet, dwContext, dwInternetStatus, lpvStatusInformation, dwStatusInformationLength );
    8. }
    9.  
    10. INTERNET_STATUS_CALLBACK HOOK_InternetSetStatusCallback( HINTERNET hInternet, INTERNET_STATUS_CALLBACK lpfnInternetCallback )
    11. {
    12.     InternetStatusCallbackRet = (mInternetStatusCallbackRet)lpfnInternetCallback;
    13.  
    14.     return REAL_InternetSetStatusCallback( hInternet, (INTERNET_STATUS_CALLBACK)HOOK_InternetStatusCallback );
    15. }
    управление передается на мой InternetStatusCallback, но при вызове оригинального каллбэка ослик падает, я так понял ошибка в адрессе оригинальной функции или их типы не совпадают?