Одна большая проблема состоит в том, что очень часто при юзаньи хуков приходится использовать ресурсы(менюшки, диалоги, etc.), а ведь наша DLL находится в ЧУЖОМ адресном пространстве !
И при использовании GetModuleHandle мы НЕ ПОЛУЧИМ дескриптор DLL !!!
Это будет дескриптор ЧУЖОГО процесса... :)
И LoadMenu(GetModuleHandle(NULL), IMD_DLLMENU, ......) даст нам (если даст) ЧУЖОЕ меню !!!
Поэтому единственный путь здесь — это отлавливать в DllMain момент загрузки DLL и сохранять значение DLLhinst...