Programa Executado em Serviço não rodar como serviço

Delphi

28/05/2010

Pessoal

Tenho um programa que instalei como serviço do windows. Este programa verifica se um determinado processo esta ativo, caso contrário ele ativa o processo. Porém quando ativa ele roda o programa como serviço também.
Há como ele não rodar o programa como serviço?


Abaixo a rotina fazendo um teste com o notepad.(que acaba sendo executado como serviço).

procedure TForm3.Timer1Timer(Sender: TObject);
var Prog:string;
    ProgC:PAnsiChar;
begin

if not ProcessoExiste('Notepad.EXE') then
   begin
     Prog := 'C:\WINDOWS\NOTEPAD.EXE';


     ShellExecute(Handle,'open',pchar(prog),nil,nil,sw_normal)
   end;
end;



function TForm3.ProcessoExiste(ExeFileName: string): boolean;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32{declarar Uses Tlhelp32};
begin
result := false;

FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);

while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
begin
Result := true;
exit;
end;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
ry32); end; CloseHandle(FSnapshotHandle); end;
Energetica Serranopolis

Energetica Serranopolis

Curtidas 0
POSTAR