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;
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)