2k/XP Сервис и хук - проблемы
От: Light_Jedi Россия  
Дата: 28.05.02 01:52
Оценка:
Есть hook.dll реализующая SHELL hook. Работала эта DLL без проблем с обычной программой.Отслеживала создание окон и вела лог.

Надо передалать программу в сервис. Все бы ничего, но с хуком ситуация странная.
При создании сервиса он загружается нормально и показывает в логе файле все win-окна. С DOS и консолями (FAR например) проблема. Они переодически не фиксируются хуком — нет их в логе.

Зачечено, если любом месте ServiceMain после создания хука вставить MessageBox (он был для отладки), то пока он на экране — 100% ВСЕ окна идут в лог. После его закрытия — Win окна в лог, а вот DOS и консоль — 50 на 50.
вот исходник:

hmodHook = LoadLibrary("hookdll.dll");
hHook = SetWindowsHookEx(WH_SHELL, (HOOKPROC)GetProcAddress((HINSTANCE)hmodHook, "ShellHOOKProc"), (HINSTANCE)hmodHook, 0);
if (!hHook) MessageBox (NULL,"не моогу создать хук","Ошибка", MB_OK);
else MessageBox (NULL,"Хук загружен","Ок", MB_OK);

for (;)
{
if (sStatus.dwCurrentState == SERVICE_STOPPED) break;
Sleep(1000);
}

пока дежишь на экране "Хук загружен" — все ок. Стоит зарыть — 50 на 50 ;(

В чем может быть проблема ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.