Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Вниз

элементарное в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
6-6176
Checist [root]
2003-12-27 03:04
2004.03.03
Проверка полной загрузки


1-6127
Builder
2004-01-23 13:36
2004.03.03
Excel


14-6195
Домарощинер
2004-02-11 19:52
2004.03.03
Предложите красивый(пошустрее и поменьше) алгоритм


14-6218
Developerr
2004-02-11 13:11
2004.03.03
Алгоритм расчета в программе Бодун


8-6158
RudeBoy
2003-11-01 08:59
2004.03.03
как изменить кол-во цветов в JPG





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский