Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.03;
Скачать: CL | DM;

Вниз

элементарное в TService   Найти похожие ветки 

 
girich   (2004-02-19 14:20) [0]

Столкнулся с необходимостью написать службу но так как до этого не работал с этой темой Прошу подсказать - написал обработчик события onExecute

procedure TService1.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
WriteFileMessage1(01,"aaaaaaa",03); //моя проц. пишет в
заданный файл строку заданную;
Sleep(1000);
end;
end;


Инсталирую запускаю службу всё нормально, пытаюся остановить выдайт сообщение :
"Неудалось остановить службу на лок. компьютере. Этаслужба не возвращала ошибки ....."

И еще если есть ссылки на тему написания сервисов и интерфейса к ним прошу написать.
Заранее спасибо.


 
girich   (2004-02-19 14:44) [1]

Ало кто нибуть!


 
Digitman ©   (2004-02-19 15:06) [2]

procedure TEtkaSvc.ServiceExecute(Sender: TService);
var
Msg: TMsg;
begin
while not Terminated do
begin
WaitMessage;
if PeekMessage(Msg, 0, WM_ETKAHOOK, WM_ETKAHOOK, PM_REMOVE) then
ProcessEtkaHookMessage(PMessage(@Msg.Message)^)
else
ServiceThread.ProcessRequests(False);
end;
end;


 
girich   (2004-02-19 15:53) [3]

>Digitman © (19.02.04 15:06) [2]
Спасибо получилось.
А подсказать по поводу создания интерфейса для сервисов что-то можешь (ссылка, исх. код , ...)


 
Digitman ©   (2004-02-19 16:10) [4]


> girich (19.02.04 15:53) [3]
> А подсказать по поводу создания интерфейса для сервисов
> что-то можешь


в смысле - GUI ?

здесь самое простое и надежное решение - создавать VCL-контролы (например, формы) в событии TService.OnCreate, а уничтожать - в OnDestroy() ... эти события возбуждаются в осн.код.потоке приложения-сервиса, поэтому никаких проблем не будет ... но не пытайся делать то же самое в OnExecute, OnStart, OnStop ! Грабли будут тебе обеспечены)


 
girich   (2004-02-19 16:30) [5]

>Digitman © (19.02.04 16:10) [4]
>здесь самое простое и надежное решение - создавать VCL-контролы (например, формы)

А использование, допустим этой формы, будет бес проблематично в любом месте например в OnExecute, OnStart, OnStop!


 
Digitman ©   (2004-02-19 16:40) [6]


> girich (19.02.04 16:30) [5]


к методам и св-вам формы в обработчиках этих событий, разумеется, напрямую нельзя - нужна синхр-ция с осн.код.потоком. создавшим VCL-форму

использовать метод TServiceThread.Synchronize ты не сможешь - он защищенный

из наиболее простых остается чуть ли не один вариант - посылка сообщений окну формы (Send/Postmessage)

уверяю - вариант далеко не худший ... и вполне удобный для большинства целей


 
dr Tr0jan ©   (2004-02-21 06:52) [7]

Зайди и посмотри:
http://delphimaster.net/view/1-1077189620/



Страницы: 1 вся ветка

Текущий архив: 2004.03.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-5956
kaif
2004-02-05 21:22
2004.03.03
Как вызвать диалог настройки строки OLE DB initstring для ADO?


1-6151
Дядя
2004-02-19 11:07
2004.03.03
OnDblClick из DLL


1-6033
-=zek=-
2004-02-21 17:54
2004.03.03
помогите с движением по окружности


14-6253
Saturn
2004-02-10 15:31
2004.03.03
Субтитры к фильмам.


1-6089
Silver_
2004-02-19 16:00
2004.03.03
OnBefore/AfterChangeComponentCount(Sender: TObject);