Programa Executado em Serviço não rodar como serviço
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;
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
Curtidas 0