Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Servisna aplikacija

[es] :: Pascal / Delphi / Kylix :: Servisna aplikacija

[ Pregleda: 1677 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Servisna aplikacija28.10.2009. u 11:45 - pre 175 meseci
Pokušavam napraviti program koji bi se vrtio kao servis.
Win vista, D2007

Program bi trebao zatvoriti progab B ako je ovaj aktivan.
Problem je što se servis ne izvrši. Pokušao sam staviti timer, niti on se ne okine.

Ako poziv procedure (Izvrsi) napravim u AfterInstall, izvrši se. Isto tako u bazu se uredno svaki put upiše vrijeme pokretanja.

Porgram pokrećem tako da sam u Delphi-u, "Project -> Otpitons -> Debugger -> Parameters" upisao: /install, a kad želim deinstalirati servis promjenim parametar u /deinstall. Nakon toga mi Run napravi compile i install ili deinstall programa.

Ovo je osnovni kod:

Code:

procedure TIntraReg.Izvrsi;
var tl: TStringList;
begin
   tl := TStringList.Create;
   tl.LoadFromFile('C:\RegInit.ini');
   // ako je u ini file-u upisao "Ime programa=KRAJ", zatvornit će taj program
   if tl.Values['KRAJ'] = 'True' then KillApp('Neki program');
   tl.Free;
end;

function TIntraReg.KillApp(const sCapt: PChar): boolean;
  var AppHandle:THandle;
begin
  AppHandle:=FindWindow(Nil, sCapt) ;
  Result:=PostMessage(AppHandle, WM_QUIT, 0, 0) ;
end;

procedure TIntraReg.ServiceAfterInstall(Sender: TService);
begin
   ibd.Open;
   q.Open;
   q.Append;
   qPODATAK.AsString := 'Start: ' + TimeToStr(now);
   q.Post;
   q.Transaction.Commit;
   ibd.Close;
end;

procedure TIntraReg.ServiceExecute(Sender: TService);
begin
   while not Terminated do begin
      Izvrsi;
      Sleep(1000);
   end;
end;


Zanim me još jedna stvar: da li i kako mogu otkriti da li je neki program pokrenut i zatvoriti ga preko njegovog imena (npr: Notepad.exe)

 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.datalab.si.

ICQ: 174153511


+26 Profil

icon Re: Servisna aplikacija28.10.2009. u 14:50 - pre 175 meseci
jedno pitanje
zašto mora biti servis ?

i jedan odgovor
http://www.delphi3000.com/articles/article_513.asp?SK=
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Servisna aplikacija28.10.2009. u 18:50 - pre 175 meseci
1. Mora biti van dohvata prosječnog korisnika
2. tako su tražili :(

Imam još jedan problem (osim što ne radi...):
Servis se nakon install-a ne starta, a kad ga pokušam startati ručno - neće.

Može li tko reći u čemu je greška?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Servisna aplikacija28.10.2009. u 20:32 - pre 175 meseci
> Imam još jedan problem (osim što ne radi...):

Da li ti je uključeno interact with desktop u opcijama servisa? Ti ne proveravaš da li je poziv FindWindow uspeo, ako nije pozovi GetLastError.

> Servis se nakon install-a ne starta, a kad ga pokušam startati ručno - neće.

Šta ti javi, pogledaj u sistemskom event vieweru ima li grešaka? I da li ga startuješ iz Services managera?

Dodaj i sledeći red u petlji Execute metodi:
ServiceThread.ProcessRequests(False);
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Servisna aplikacija

[ Pregleda: 1677 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.