Ir al contenido



Foto

Controlar ejecucion de una aplicacion desde un servicio

servicio

  • Por favor identifícate para responder
3 respuestas en este tema

#1 seba_13680

seba_13680

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 14 marzo 2017 - 02:18

Buenas tardes a todos¡

Me pueden dar una mano con alguna respuesta y orientacion con una consulta

 

Necesito mantener una aplicacion constantemente en los clientes para poder hacer unas tareas, con la ventaja de evitar

el programador de tarea de windows

y quisiera poder adaptar el siguiente programa a un servicio y poder tratarlo como tal y no tener que ejecutarlo de la manera

 

watchdog "C:\Windows\notepad.exe"


delphi
  1. program watchdog;
  2.  
  3. uses
  4. Windows, SysUtils, PsApi, ShellApi;
  5.  
  6. function CuantosSon(Path: String): Integer;
  7. var
  8. Procesos: array[1..1024] of DWORD;
  9. Needed, i: DWORD;
  10. Process: THandle;
  11. ModName: array[0..MAX_PATH] of Char;
  12. begin
  13. Result:= 0;
  14. if EnumProcesses(@Procesos,SizeOf(Procesos),Needed) then
  15. begin
  16. for i:= 1 to (Needed div Sizeof(DWORD)) do
  17. begin
  18. Process := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
  19. FALSE,Procesos[i]);
  20. if Process <> 0 then
  21. begin
  22. if GetModuleFileNameEx(Process,0,ModName,SizeOf(ModName)-1)>0 then
  23. begin
  24. if StrIComp(ModName,PChar(Path)) = 0 then
  25. inc(Result);
  26. end;
  27. CloseHandle(Process);
  28. end;
  29. end;
  30. end;
  31. end;
  32.  
  33. begin
  34. if ParamCount < 1 then
  35. Exit;
  36. if not FileExists(ParamStr(1)) then
  37. Exit;
  38. while TRUE do
  39. begin
  40. if CuantosSon(ParamStr(1)) < 1 then
  41. ShellExecute(0,nil,PChar(ParamStr(1)),nil,nil,SW_SHOW);
  42. // Aqui pones el retardo que quieras
  43. Sleep(1000);
  44. end;
  45. end.

Desde ya muchas gracias a todos y saludos¡ 


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.646 mensajes
  • LocationMadrid - España

Escrito 14 marzo 2017 - 02:47

En primer lugar, nunca está de más citar la fuente del código que expones

En segundo lugar, no se debe preguntar dos veces la misma cuestión

 

 

Saludos.


  • 0

#3 seba_13680

seba_13680

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 14 marzo 2017 - 03:47

Buenas tardes Escafandra, no estaba al tanto sobre citar el codigo fuente, no lo sabia ...

y con respecto al segundo punto las respuestas me llevaron hacia el foro Platino pero no obtuve mas respuestas

me disculpo, no estaba al tanto ni sabia como continuar

Saludos ...

Sigo investigando


  • 0

#4 seba_13680

seba_13680

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 14 marzo 2017 - 03:56

Buenas tardes Escafandra, no estaba al tanto sobre citar el codigo fuente, no lo sabia ...

y con respecto al segundo punto las respuestas me llevaron hacia el foro Platino pero no obtuve mas respuestas

me disculpo, no estaba al tanto ni sabia como continuar

Saludos ...

Sigo investigando

 

http://delphiaccess....cución/?p=41903


  • 0





Etiquetado también con una o más de estas palabras: servicio