Raistlin
Теперь я вроде понял,что ты имеешь в виду (невозможность удаления библиотеки пока не перезагрузишь систему).
Значит,функция EnumProcessModules лишь перечисляет все модули,загруженные в адресное пространство конкретного процесса.
В твоём же случае необходимо,на мой взгляд,смотреть атрибуты файла, т.е. возможно,что у этой библиотеки выставлен атрибут FILE_ATTRIBUTE_READONLY ,который означает,что приложения не могут ни писать в этот файл,ни удалять его.
К примеру:
Код:

var
fAttrs : DWORD;
fName : LPCTSTR;
begin
fAttrs := GetFileAttributes('nnhook.dll');
if fAttrs = FILE_ATTRIBUTE_READONLY then
begin
SetFileAttributes('nnhook.dll', FILE_ATTRIBUTE_NORMAL);
end;
end;
...попробуй,может это поможет.
P.S. Если тебе всё-таки понадобится пример кода функции EnumProcessModules,напиши - приведём

.