Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Service [D7, XP]


Sergey2 ©   (2010-06-04 09:23:00) 

Необходимо в службе запустить программу. При компиляции проекта- Far открывается. инсталлирую программу когда - стартую в Службах - пишет

Служба "Service1" на "Локальный компьютер" была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если им нечего делать, например, служба журналов и оповещений производительности.

и соответственно Far не стартует


 TMyThread = class (TThread)
 Public
   Procedure Execute; override;
 End;

 TService1 = class(TService)

.....

procedure TMyThread.Execute();
begin
 If Terminated Then
   exit;

  ShellExecute(Handle, nil, PChar ('C:\Program Files\Far\Far.exe'), nil, nil, SW_RESTORE)
end;

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
 Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
 Result := ServiceController;
end;

procedure TService1.ServiceExecute(Sender: TService);
begin
 MyThread.Execute;
end;

procedure TService1.ServiceContinue(Sender: TService;
 var Continued: Boolean);
begin
 if not MyThread.Terminated then
 begin
   MyThread.Resume;
   Continued:=true;
 end;
end;

procedure TService1.ServicePause(Sender: TService; var Paused: Boolean);
begin
 MyThread.SuspEnd;
 Paused:=true;
end;

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
 Started := True;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
 MyThread.Terminate;
 Stopped:=true;
end;

procedure TService1.ServiceCreate(Sender: TObject);
begin
 MyThread := TMyThread.Create(True);
 MyThread.Priority:=tpNormal;
 MyThread.Execute;
end;


Правильный$Вася   (2010-06-05 23:02:00) [1]

фар вероятно стартует, только под юзером localsystem


Медвежонок Пятачок   (2010-06-04 14:48:00) [2]

а зачем?

он им сможет воспользоваться, если даже и найдет в процессах?


Плохиш   (2010-06-04 13:51:00) [3]

Прикольно и никто ему ещё не посоветовал его фар в taskmanager-е поискать :-))


QAZ   (2010-06-04 11:49:00) [4]

так ты даже не прально поток оформил


Медвежонок Пятачок   (2010-06-04 11:44:00) [5]

всё, кроме ShellExecute - который или не срабатывает или срабатывает как то странно. и причем при старте сервиса


читай еще раз [4].
желательно вслух и громко.
а то видимо не доходит.


Медвежонок Пятачок   (2010-06-04 11:43:00) [6]

последнюю строку предыдущего поста надо тоже в контенттекст записать.


Sergey2   (2010-06-04 11:43:00) [7]

всё, кроме ShellExecute - который или не срабатывает или срабатывает как то странно. и причем при старте сервиса


Palladin   (2010-06-04 11:41:00) [8]

короче, слух сюды....
кидаешь на форму TIdHTTPServer
устанавливаешь ему порт и все рюшечки

на событие OnServiceStart
пихаешь
httpserv.active = true
на стоп соответсно false

на httpserv.oncommandget пишешь
AResponse.ContentText = 'усе пучком!'

и, офигеть !?, вот так Вася, который был здесь, написал реального убийцу апача!


Sergey2   (2010-06-04 11:37:00) [9]

чтото не догоняю. Если срабатывает у сервиса onExecute, что мешает обработаться всему тому что там описано - то есть возбудить Execute у моего MyThread ?


Медвежонок Пятачок   (2010-06-04 11:37:00) [10]

там именно все и обрабатывается.
начиная с бегина и кончая ендом.


Медвежонок Пятачок   (2010-06-04 11:26:00) [11]

почему же мой сервис пишет что нечему там работать

потому что сервис работает пока не завершится его OnExecute.


Медвежонок Пятачок   (2010-06-04 11:23:00) [12]

смотри [4]


Sergey2   (2010-06-04 11:21:00) [13]

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


oldman   (2010-06-04 11:16:00) [14]


> Palladin ©   (04.06.10 10:40) [5]
> ух ты... что-то новое в науке... стартовать фары из сервисов.


мало ли у кого какие курсовики...
:)))


Медвежонок Пятачок   (2010-06-04 10:44:00) [15]

ну может лень ему мышкой запускать фары
:)


Palladin   (2010-06-04 10:40:00) [16]

ух ты... что-то новое в науке... стартовать фары из сервисов...


Медвежонок Пятачок   (2010-06-04 10:12:00) [17]

фар стартует (при условии что путь к exe верный).

но ты его не видишь и не увидишь даже если сервис не остановится


Sergey2   (2010-06-04 10:06:00) [18]

при компиляции и инсталяции - делает. при старте службы - нет


Медвежонок Пятачок   (2010-06-04 10:05:00) [19]

фар у тебя стартует, просто ты его не видишь


Leonid Troyanovsky   (2010-06-04 09:46:00) [20]


> Sergey2   (04.06.10 09:23)  

> Служба "Service1" на "Локальный компьютер" была запущена
> и затем остановлена. Некоторые службы автоматически останавливаются,
>  если им нечего делать,

Ну, дык, ей, дейс-но, нечего делать.

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо