I want to perform a system-wide hook (using SetWindowHook) on a 64bit operating system.
I know that 64bit processes (= proc64) can load only 64bit dlls (= dll64) and 32bit processes (= proc32) can load only 32bit dlls (= dll32).
Currently I am planning to call SetWindowHook twice, once with dll32 and once with dll64, expecting that proc64s will load dll64 and proc32s will load dll32 (while dll32 for proc64s and dll64 for proc32s will fail).
Is that the correct way to do that, or is there a "more correct" way to do that?
Thanks! :-)
Approach that you've described is correct and documented.
From http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx:
Note the last statement that names of 32-bit and 64-bit DLLs MUST be different.