Не получается нормально постаить хук на WH_CBT

Тема в разделе "WASM.BEGINNERS", создана пользователем xenom0rph, 23 май 2009.

  1. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    Это мой первый ху, так что сильно не пинайте.
    вот вообщем код dll
    Код (Text):
    1. // dll.cpp : Defines the exported functions for the DLL application.
    2. //
    3. #include "stdafx.h"
    4. #include <windows.h>
    5.  
    6. extern "C" __declspec(dllexport) LRESULT CBTProc(int,WPARAM,LPARAM);
    7.  
    8.  
    9. LRESULT CBTProc(int nCode,WPARAM wParam,LPARAM lParam)
    10. {
    11.     return CallNextHookEx(NULL , nCode,wParam,lParam);
    12. }
    13.  
    14. BOOL APIENTRY DllEntryPoint (HINSTANCE hInst     /* Library instance handle. */ ,
    15.                        DWORD reason        /* Reason this function is being called. */ ,
    16.                        LPVOID reserved     /* Not used. */ )
    17. {
    18. switch (reason)
    19.     {
    20.       case DLL_PROCESS_ATTACH:    
    21.         break;
    22.  
    23.       case DLL_PROCESS_DETACH:  
    24.         break;
    25.  
    26.       case DLL_THREAD_ATTACH:    
    27.         break;
    28.  
    29.       case DLL_THREAD_DETACH:  
    30.         break;
    31.     }  
    32.  
    33.     /* Returns TRUE on success, FALSE on failure */
    34.     return TRUE;
    35. }
    вот кусок главной программы
    Код (Text):
    1. hdll = LoadLibrary("dll.dll");
    2.    p = (HOOKPROC)GetProcAddress(hdll , "CBTProc");
    3.    gHook = SetWindowsHookEx(WH_CBT,p,hdll,0);
    Кода три строчки, а не работает, хук то вроде ставится, запскаяю, создаю какое нибудь окно, всё выскакиевает ошибка и падет explorer. что делать не знаю(
     
  2. Lumen

    Lumen New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2009
    Сообщения:
    5
    CallNextHookEx первым параметром должна принимать HHOOK, который возвращает SetWindowsHookEx (насколько я знаю, SetWindowsHookEx возвращает хидер предыдущего установленного хука)