PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum DELPHI XE SERVIÇO WINDOWS #488817

13/08/2014

0

Boa noite amigos..

sou novo no delphi e estou desenvolvendo um serviço do windows, a função dele é manter outro exe sempre sendo executado, caso este exe seja fechado o serviço chama ele novamente...

de certa forma consegui, mas estou enfrentando alguns problemas:

1º apesar de simples, o myservices.exe esta consumindo 50% do processador
2º ele reabre o .exe se eu o fechar, mas nao mostra nenhuma janela, o .exe fica nos processos mas a janela fica "oculta".

imagino que minha forma de ver se o processo esta sendo executado, e caso não reabri-lo é o que esta consumindo o processador...e em relação a janela ficar oculta não sei o que fazer tb...

abaixo esta a função que uso pra ver se o .exe esta sendo executado e mais abaixo a função dentro do ONEXECUTE....

 function IsRunningProcess(exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
    begin
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;


FUNÇÃO ONEXECUTE do serviço:

procedure TsrvPrincipal.ServiceExecute(Sender: TService);

begin

while not self.Terminated do
 if IsRunningProcess('notepad.exe') = false then

 begin
 winexec('notepad.exe',SW_NORMAL);
 end
 else
 ServiceThread.ProcessRequests( false );
 end;


alguem teria alguma ideia do que posso fazer pra resolver estas 2 questoes?

muito obrigado!
Luis Luz

Luis Luz

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar