FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Recibir mensaje al ejecutarse programa
Buenas a todos
Estuve buscando en los foros y en google y no pude encontrar información al respecto. La intuición me dice que tiene que haber alguna forma, tal vez uds me puedan ayudar. La cosa es bastante sencilla, lo que quiero saber es, mientras corro una aplicación delphi, saber si se ejecuta otra aplicacion. Por ejemplo, si mientras se esta corriendo mi aplicacion delphi alguien ejecuta un notepad, que la aplicación ejecute X rutina. Se me ocurre que tiene que haber una especie de mensaje que windows envie al ejecutarse una aplicación. Se que con un FindWindow llamado cada X segundos podría saber si se esta ejecutando o no, pero querria evitar el estar ejecutando constantemente ese procedimiento. Desde ya, muchas gracias a todos |
#3
|
||||
|
||||
Esto lo tengo hace tiempo
Esto lo encontré hace tiempo en el ClubDelphi, donde se mostraba la forma de saber si algún proceso se está ejecutando.
Cita:
Donde dice "Edit1.text" puedes cambiarle por el nombre del proceso que quieres saber si se ejecuta en ese momento, por ejemplo "notepad.exe" o cambiar la condición para saber si se está ejecutando uno u otro proceso: en este caso el notepad o el M$ Word
Y así sucesivamente... Y si quieres que sea automatizado... Puedes poner el código en un Timer Saludos! |
#4
|
|||
|
|||
Gracias por ambas respuestas.
Esos dos metodos ya los encontre buscando por el foro y google, pasa que justamente lo que yo queria evitar en lo posible era el uso permanente de un timer que pregunte a cada rato si se esta ejecutando X programa, y ver en cambio si habia alguna forma de recibir algun mensaje que windows envie o algo similar, que indique que ese programa acaba de ser ejecutado. Buscando mas por internet se me ocurrio una forma híbrida, utilizando el mensaje WM_ACTIVATEAPP de la WindowsApi, activando un TTimer en el momento en el que detecto que mi aplicacion dejo de tener el foco del SO y desactivandlo cuando vuelve a tenerlo. TTimer que por dentro tiene un proceso utilizando el EnumWindows y un procedimiento CallBack. Si tiene éxito lo posteo. Sin embargo, si alguien sabe/conoce alguna forma de saber lo que especifique en un principio, quedaria agradecido. Saludos |
#5
|
||||
|
||||
Pues hasta donde yo se, no puedes hacerlo sin un Timer. El mismo Task Manager utiliza un Timer para actualizarse.
La única forma que se me ocurre es haciendo un Hook a la API CreateProcessW a nivel global, es decir inyectándote en todos los procesos capaces de lanzar otro porceso, es decir en todos... Creo que es mas rentable un timer que se actualice cada segundo o medio segundo. Saludos. |
#6
|
|||
|
|||
Uses un timer o un hilo, de igual forma tu aplicacion debe estar pendiente estilo sentinela a ver que mensages se generar y asi actuar de acuerdo al que programes detectar.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Registrar aplicación para recibir mensaje de reloj | Lord Delfos | API de Windows | 8 | 04-02-2008 04:54:14 |
¿En cuantos lugares se escribe la direccion de un programa para ejecutarse? | aeff | Varios | 10 | 15-10-2007 11:38:13 |
App emita Sonido al recibir mensaje netsend | Gelmin | Varios | 1 | 19-07-2004 14:50:06 |
Programa que no pueda ejecutarse más de una vez | Sr_Sombrero | Varios | 3 | 25-05-2004 17:21:11 |
|