Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   lanzar proceso lanzado desde aplicacion delphi (https://www.clubdelphi.com/foros/showthread.php?t=13722)

agustincs 28-08-2004 03:41:41

lanzar proceso lanzado desde aplicacion delphi
 
tengo una aplicacion hecha en delphi desde la que lanza un programa y luego dejo a la aplicacion delphi esperando a que termine de la siguietne forma:
Código:

  Process := ExecuteProcess('programab.exe');
  if Process <> 0 then
        WaitForSingleObject(Process, INFINITE);
  Application.Restore;

Asi pues, es fundamental que mientras esta esa aplicacion en ejucion, mi programa "lanzador" siga en memoria. Por tanto, si el usuario cierra el programa que lanzador desde el gestor de procesos, quiero que mi lanzador, antes de morir, fuerce el cierre del ejecutable que habia lanzado. Supongo que eso lo tendre que hacer desde el evento onclose del form, pero no se exactamente como hacerlo, se que es mas facil al lanzar la otra aplicacion desde mi aplicacion ya que lo puedo cerrar por el puntero, pero tampoco se como ni donde guardar ese puntero a la aplicacion lanzada, :confused:

roman 28-08-2004 04:05:13

¡Por Zeus! ¡Qué paranoia! ¿Acaso tus usuarios son hackers? :D

Mira, la verdad la tienes difícil. Cuando se mata un proceso mediante el gestor de procesos no se ejecutará ninguna rutina de salida de tu aplicación.

Puedes verlo tu mismo haciendo algo en el OnClose y matando el proceso.

// Saludos

agustincs 28-08-2004 04:38:36

jeje. pues no es que sean hackers, pero poco les falta, creeme :D

no hay ninguna forma.. vaya.. eso si que me fastidia bien.. era imprescindible para el buen funcionamiento, xd

roman 28-08-2004 04:48:47

Cita:

Empezado por agustincs
no hay ninguna forma.. vaya.. eso si que me fastidia bien

¡Hombre! No tomes mis palabras tan literal. Que yo piense que no se puede no significa necesariamente que así sea. ;)

De cualquier forma, hay formas de deshabilitar el usos del gestor de procesos mediante políticas de grupo de Windows.

// Saludos

agustincs 28-08-2004 05:02:45

si, eso lo se... pero la aplicacion esta es para que la isntales varias personas que estan en diversos puntos de españa, por tanto no puedo ir pc por pc cambiando eso... y desconozco totlamente como lo puedo cambiar atraves de mi aplicacion

moesis 28-08-2004 20:42:32

Saludos,

Quizás lo que vaya a decir es una estupidez, pero ... siempre hay que ver el otro lado de la moneda ;).

Cita:

Por tanto, si el usuario cierra el programa que lanzador desde el gestor de procesos, quiero que mi lanzador, antes de morir, fuerce el cierre del ejecutable que habia lanzado
Claro que si el programa no aparece en el 'Process Manager' ¿Como lo mataría el usuario? Bueno se puede, pero no creo que tus 'hackers' lleguen tan lejos, pues habría que identificar el process_id mediante el nombre de la ventana, y después enviarle un KILL_PROCESS desde un programa que se encuentre en el anillo 0 del sistema operativo... cosa poco probable (fijate que digo probable) ;)


Espero que te ayude la idea.
Un saludo,

agustincs 28-08-2004 21:30:45

vaya, esa solucion ya me gusta muchsismo mas :D

como tendria que hacer para que cada vez que el lanzador lanza la aplicacion, que el lanzador desaparezca de la barra de aplicaciones y tampoco se vea en el gestor de procesos? si me dices como hacer eso me salvas la vida :p

moesis 29-08-2004 00:44:57

Saludos agustincs

Este código lo he sacado de http://www.q3.nu/trucomania/ una página interesante que no convendría olvidar para determinadas cosas.

Código Delphi [-]
  procedure TfrmMain.btnHideFromTaskBarClick (Sender:TObject);
  begin
    ShowWindow (Application.Handle, SW_HIDE);
    SetWindowLong (Application.Handle, GWL_EXSTYLE,
                           GetWindowLong (Application.Handle, GWL_EXSTYLE) or
                           WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
    ShowWindowLong (Application.Handle, SW_SHOW);

No obstante puedes mirar también en este otro enlace aunque este está en inglés, puede servirte pues incluso muestra una clase para realizar tal tarea.

Espero haberte ayudado.
Saludos.

agustincs 29-08-2004 11:41:36

acabo de probar eso en XP pero no funciona :-S
me tira error en concreto la ultima linea, ShowWindowLong
Me podrias decir de que truco lo quitaste? es que estube buscando en la web y no encontre ese truco :(

DarkByte 01-09-2004 20:20:11

Buscad en clubdelphi que está...

agustincs 01-09-2004 21:24:52

pos yo no lo vi, lo veo mucho para windows 98/me, pero para windows xp/2000 nunca lo vi


La franja horaria es GMT +2. Ahora son las 02:50:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi