我在VS2005中建立一个win32项目,设置全局钩子.DllHook.h#ifdef WIN32_HOOK
#else
#define WIN32_HOOK extern "C" __declspec(dllimport)
#endif
WIN32_HOOK void SetHook() ;
DllHook.cpp#include <windows.h>#define WIN32_HOOK extern "C" __declspec(dllexport)#include "DllHook.h"HHOOK hHook_Mouse ;
LRESULT CALLBACK MouseProc(
 int nCode,      // hook code
WPARAM wParam,  // message identifier
 LPARAM lParam   // mouse coordinates
        )
{
return 1 ;
}void SetHook()
{
hHook_Mouse = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle(TEXT("DllHook")),0) ;
}
Win32_Text.cpp  部分代码#include <windows.h>
#include "DllHook.h"            //在Win32_Text\Win32_Text的目录.#pragma comment(lib,"DllHook.lib")       //DllHook.lib和DllHook.dll在Win32_Text\Win32_Text的目录下LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM) ;int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
   LPSTR lpCmdLine,int nShowCmd)
{
SetHook() ;                        //钩子安装.
TCHAR szAddr[20] ;
TCHAR szClassName[] = TEXT("Win32Class") ;
HWND hwnd ;
MSG msg ;
WNDCLASS ws ;
ws.cbClsExtra = 0 ;
ws.cbWndExtra = 0 ;
ws.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH) ;
ws.hCursor = LoadCursor(NULL,IDC_ARROW) ;
ws.hIcon = LoadIcon(NULL,IDI_APPLICATION) ;
ws.hInstance = hInstance ;
ws.lpfnWndProc = WndProc ;
ws.lpszClassName = szClassName ;
ws.lpszMenuName = NULL ;
ws.style = CS_VREDRAW | CS_HREDRAW  ;最后运行结果是没有实现全局,只是这个线程的钩子.