Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿ Cual es la clase del emule ? (https://www.clubdelphi.com/foros/showthread.php?t=27604)

Javier_A 25-11-2005 12:10:15

¿ Cual es la clase del emule ?
 
Hola a tod@s,
He creado un programa para cerrar aplicaciones y quiero que me cierre el emule, entonces....

Una vez abierto el emule abro el WinSight, para averiguar cual es la clase del emule; aparecen un sinfin de programas en hidden y por mas que pongo una y otra clase, ( de todos los programas que hay abiertos del emule ), no logro cerrar la aplicación.
¿ Alguien me puede decir cual es exactamente el nombre de la clase que cierra la aplicación ?

Os espero
Salu2

Neftali [Germán.Estévez] 25-11-2005 13:22:28

Hay muchas utilizades e Internet que te permiten ver "la clase" de una ventana (aplicación); Seguro que si buscas las encuentras sin problemas:
* WinSpy 1.0; Warren Galyen
* WinExplorer 1.30 de nirSoft
* WinDowse de Greatis Software
* ...

Javier_A 25-11-2005 16:56:19

Hola Neftali, he instalado el WinExplorer 1.30, y la clase del emule me dice que es: #32770.
Si que me cierra el emule, pero tambien el winexplorer, ( y eso que su clase es otra) ??????
Este es el procedimiento que gasto:


procedure TForm1.Timer1Timer(Sender: TObject);
var
hWnd : THandle;
begin

hWnd := FindWindow( '#32770', nil );
if hWnd <> 0 Then
begin
Form2.Visible:=True;
SendMessage( hWnd, WM_CLOSE, 0, 0 );
end;
end;

El form2 es una ventana de aviso de que se va a cerrar la aplicacion y no para se salir, ¿ que programas estara cerrando ?, ¿ sabes que es lo que puede pasar ?

Gracias y un saludo

Neftali [Germán.Estévez] 25-11-2005 17:59:54

Siguen saliendo los avisos, porque no debe estar cerrando corectamente el Emule y como el timer sigue funcionando, sigue encontrando la ventana; Después de enviar el mensaje para cerrar debería desactivar el Timer.

Código Delphi [-]
   Timer1.Enabled := False;

Javier_A 28-11-2005 10:34:59

Hola Neftali,
Un problema añadido, resulta que la clase del emule #32770 es la misma, por ejemplo, que la que utiliza "WinExplorer 1.30", "El Administrador de Tareas de Windows" e imagino que bastantes programas mas, asi que cuando intento cerrar esta clase (#32770), se me cierran también los otros.
¿ Se puede filtrar las clases dependiendo por ejemplo del nombre del programa ?
Este es el procedimiento:

procedure TForm1.Timer1Timer(Sender: TObject);
var
hWnd : THandle;
begin

hWnd := FindWindow( '#32770', nil );
if hWnd <> 0 Then
begin
Form2.Visible:=True;
SendMessage( hWnd, WM_CLOSE, 0, 0 );
end;
end;

Perdona las molestias
Salu2

Neftali [Germán.Estévez] 28-11-2005 11:13:39

Cita:

Empezado por Javier_A
...resulta que la clase del emule #32770 es la misma, por ejemplo, que la que utiliza "WinExplorer 1.30", "El Administrador de Tareas de Windows" e imagino que bastantes programas mas....

¿ Se puede filtrar las clases dependiendo por ejemplo del nombre del programa?

Efectivamente, no me había dado cuenta; Por ejemplo, la ayuda de Delphi también lo tiene (y como tú dices supongo que muchos más...);

Respecto a la otra pregunta, la otra opción que tienes para encontrar la ventana es utilizar el título; Con la misma función que estás utilizando, pero dejando el primer parámetro vacío. Algo así:

Código Delphi [-]
   FindWindow(Nil, Pchar('notepad'))

El problema es que a veces el título de la ventana es variable, por ejemplo, como pasa con el Word, que el título de la ventana incluye el nombre del documento activo; En esos casos, lo único que se me ocurre es accder a la lista de procesos activos, recorrerlos e intentar encontrarla con sólo alguna parte del título.


La franja horaria es GMT +2. Ahora son las 01:58:09.

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