Сервисы под XP
Какие конкретно вопросы интересуют?
Какие конкретно вопросы интересуют?
А как его запустить? Он создается...устанавливается...а как скажим зделать так что б задачей сервиса было вывод на экран сообщения и все...???
Вот код созданый с помощью мастера
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,Registry;
type
TService1 = class(TService)
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Service1: TService1;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;
function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
что в него добавить?????
блин, ну никакой же секретной инфы в этом нет! ну йопт, ну пользуйтесь же поисковиками - для кого их делают??
В какой момент должна надпись появиться? Предположим, что при запуске сервиса, тогда:
1. сервису необходимо разрешить взаимодействие с рабочим столом (свойство Interactive=True);
2. в обработчике ServiceStart пишем ShowMessage('Я запустился');
Вот только смысла в таком сервисе нет.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1348 Все очень подробно расписано, по шагам. Чтоже касается вывода на десктоп залогиненого пользователя - нужно создавать интерактивный сервис - а это тот еще "глюк". ИМХО - проще написать приложение для взаимодействия с определенным (своим) сервисом через SCM. Как вариант - приложение открывает сервис с необходимым флагом доступа. Далее отправка через диспетчер управляющего пользовательского кода из области 128-255, получив который, сервис активизирует (к примеру) именованный пайп и дальнейшее взаимодействие (получение данных от сервиса и т.д.) идет через него. :)
С таким же успехом можно и через TCP/IP организовать взаимодействие. Таким образом мы "отвязываем" серверное приложение (сервис) от необходимости работать исключительно как сервис.
Почему? К примеру - биллинг офисной миниАТС. Две компоненты - сам сервис, который стартует вместе со стартом системы (его задача - ловить все, что пришлет АТС) и сама программа биллинга, которую запускает пользователь (со всеми "наворотами", вплоть до "уровня безопасности"). Пока программа не запущена, сервис спокойно складирует данные от АТС, как только программа запустилась и дала пинок сервису - данные начинают передаваться непосредственно на биллинг и далее ложиться в базу. Если же сброс питания (погас комп, АТС), затем подъем (АТС и комп стартовали) - данные не будут потеряны, сервис об этом позаботится. А там (когда то) и человек залогинится и запустит биллинг. И в чем "отвязка"??? :)
medved_68, при схеме работы сервиса с правляющей программой с помощью TCP/IP мы можем вообще запускать сервис на отдельном серваке, а программу биллинга совершенно на другом.. Правда можно сервисами рулить и с удаленного компа, но я думаю, лучше всетаки TCP/IP.
medved_68, при схеме работы сервиса с правляющей программой с помощью TCP/IP мы можем вообще запускать сервис на отдельном серваке, а программу биллинга совершенно на другом.. Правда можно сервисами рулить и с удаленного компа, но я думаю, лучше всетаки TCP/IP.
Ну здесь было "здравое изречение" про отладку в режиме приложения и дальнейший перенос в сервис. Согласен - так гораздо проще, чем аттач к процессу. А для того, чтобы Винда его не грохнула - потоки, а сам сервис только и занимается ответами менеджеру (там что с диапазоном 5 сек.). Кстати, именованные пайпы отлично работают и в сети - указывай имя целевого компа (сервера пайпа) и пожалуйста на коннект. :)
Это при условии что в настройках системы разрешен доступ из сети к этому пайпу. Настроить файрвол на конкретную программу/порт все же проще, чем рыться в недрах gpedit.msc.