Doc Гость
|
Добавлено: Вт Май 28 2002 06:21 Заголовок сообщения: 2k/XP Сервис и хук - проблемы |
|
|
Есть 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 ;(
В чем может быть проблема ? |
|