Fórum Programa Executado em Serviço não rodar como serviço #378474
28/05/2010
0
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)