madCodeHook offers everything you need to hook code (mostly APIs) in all 32 bit Windows operating systems from Windows 95 to Windows 2003. You can choose whether you want to hook APIs in your own process, or in a specific target process, or system wide.
Using madCodeHook is very simple and straightforward. "It just works", without you needing to meditate about why Windows 95 is so much different inside compared to Windows XP. madCodeHook will automatically choose the best hooking method for any API you want to hook. It will also deal with all operating system specific problems.
Personally I recommend to use either Delphi or MSVC++, but every other language which supports win32 standard dlls, pointers and function variables is basically also fine.
There is a free non-commercial edition available. However, it contains no static libs. So when using the non-commercial edition you always need to distribute the "madCHook.dll" with your software. The commercial edition contains static DCUs for Delphi and Borland C++ and also a static lib for MSVC++.
There's also a full source code edition available. But please note, that although madCodeHook does support MSVC++, it was written in Delphi. So when buying the source code edition, you'll get Delphi code from me, not C++ code.