¿ 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 |
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 * ... |
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 |
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.
|
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 |
Cita:
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í:
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