Du musst ersteinmal das grobe Prinzip verstehen. Dein Executehook war mir auch zu komplex, da hab ich auch nichts verstanden...

Allerdings habe ich mir ein Beispiel von C++ angeguckt und in Delphi geschrieben, das funktioniert soweit. Nur wenn ich den Hook wieder deinstalliere nervt der Explorer auch wieder rum

. Vom Prinzip her schreibst du einen jump, welcher auf deine funktion zeigt, z.B. NewShellExecute, über den Anfang der Apifunktion, welche du hooken möchtest... Dadurch springt er bei dem vermeindlichen Aufruf von Shellexecute zu deiner Funktion. So funktioniert es bei mir, bis auf den Explorerbug. Nimm dir am besten mal den Link vor:
http://wiki.hackerboard.de/index.php/Windows_API