Это мой первый ху, так что сильно не пинайте. вот вообщем код dll Код (Text): // dll.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include <windows.h> extern "C" __declspec(dllexport) LRESULT CBTProc(int,WPARAM,LPARAM); LRESULT CBTProc(int nCode,WPARAM wParam,LPARAM lParam) { return CallNextHookEx(NULL , nCode,wParam,lParam); } BOOL APIENTRY DllEntryPoint (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } /* Returns TRUE on success, FALSE on failure */ return TRUE; } вот кусок главной программы Код (Text): hdll = LoadLibrary("dll.dll"); p = (HOOKPROC)GetProcAddress(hdll , "CBTProc"); gHook = SetWindowsHookEx(WH_CBT,p,hdll,0); Кода три строчки, а не работает, хук то вроде ставится, запскаяю, создаю какое нибудь окно, всё выскакиевает ошибка и падет explorer. что делать не знаю(
CallNextHookEx первым параметром должна принимать HHOOK, который возвращает SetWindowsHookEx (насколько я знаю, SetWindowsHookEx возвращает хидер предыдущего установленного хука)