[ franjo_tahi @ 28.10.2009. 11:45 ] @
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) |