Главная страница
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.016 c
1-6138
Harm
2004-02-19 16:34
2004.03.03
Последний день месяца


1-6024
Alex_DM
2004-02-19 10:45
2004.03.03
Лишняя кнопка в панели задач


1-6044
Случайно забежавший
2004-02-21 12:55
2004.03.03
StringGrid и OnKeyPress


1-6149
DeLz
2004-02-19 09:12
2004.03.03
Вызов процедур различной структуры без объявления типа???


1-6018
fROT
2004-02-19 12:07
2004.03.03
ivalid class typecast