Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
1-6020
TUser
2004-02-19 12:07
2004.03.03
Breakpoint


3-5948
Zilog
2004-02-05 16:39
2004.03.03
как програмно менять порядок столбцов (Fields) в комоненте Query?


14-6185
jen
2004-02-11 16:26
2004.03.03
Люди, помогите, какой-то бред со СТРОКАМИ!!!


1-6084
Случайно забежавший
2004-02-16 17:54
2004.03.03
StringGrid и перенос по словам


1-6067
Александр1
2004-02-21 13:46
2004.03.03
Есть ли компонент аналогичный StringGrid




   Наверх