Услуги обычно не получают оконные сообщения. Они не обязательно имеют оконные ручки.Даже если они это делают, они запускаются на отдельном рабочем столе. Программы не могут отправлять сообщения с одного рабочего стола на другой, поэтому служба может получать сообщения только от другой службы или из программы, запущенной службой.
До Windows Vista вы могли настроить свою службу для взаимодействия с рабочим столом. Это заставляет службу запускаться на том же рабочем столе, что и вошедший в систему пользователь, поэтому программа, работающая как этот пользователь, может отправлять сообщения в окна вашего сервиса. Однако Windows Vista изолирует службы; они больше не могут взаимодействовать с настольным компьютером пользователя.
Существует множество других способов общения с услугами. Они включают именованные каналы, почтовые ящики, файлы с отображением памяти, семафоры, события и сокеты.
С сокетом, например, ваша служба может прослушивать открытый порт, а программы, с которыми ему нужно связываться, могут подключаться к этому порту. Это может открыть дверь для удаленного администрирования, но вы также можете ограничить службу прослушиванием только локальных подключений.
Все вышеперечисленное пытается сказать вам, что вы принимаете неправильный подход. Но есть также проблема проблемы. Ваша программа ведет один путь в отладчике, а другой - вне его. Как вы отлаживаете услугу в первую очередь, если она не установлена? В какой учетной записи пользователя работает ваша служба? Ваш отладчик? Какие методы отладки вы пробовали, чтобы не включать отладчик (например, writeln
в файл журнала, чтобы отслеживать действия вашей программы)?
Образец кода поможет ... – CheGueVerra 2008-12-10 15:42:54
Похоже, вы не закончили задавать свой вопрос. – 2008-12-10 16:37:21