Hi,
meiner Meinung nach müssen die Handles sogar lokal sein. Sie gehören dem Prozess, der den Hook (in der
dll) installiert, damit er sich daraus wieder verabschieden kann. Global muss also nicht das
Handle sein, sondern die HookProcedure muss global zur Verfügung gestellt werden - und das geht eben über die
dll.
Die
dll wird bei systemweiten Hooks nämlich nicht mit der Beendigung deines Programmes entladen, sondern erst, wenn keine Ereignisse mehr über sie laufen, d.h. ALLE Prozesse, die in die Hook-Kette eingeklinkt sind, beendet wurden. Im spätesten Fall erst beim Windows beenden.
Hoffe das hilft dir weiter.
Gruss
Thomas.