In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Cerrar una ventana ajena a nuestra aplicación

Foro de Xailer profesional en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Cerrar una ventana ajena a nuestra aplicación

Mensaje por Bingen Ugaldebere »

Alguien sabe si hay alguna función, programa, truco o sistema para
cerrar una Window que esta abierta pero que no es de nuestra aplicación.
En principio deberí­a de valer tener su Handle a través de su tí­tulo
(hasta aqui no hay problema)y la llamada a la función del API de Windows
DestroyWindow(nHandle) pero no soy capaz de hacerla funcionar, no hace
nada y me devuelve cero, aunque compruebo el Lasterror del sistema y me
indica ERROR_ACCESS_DENIED 5 Access is denied.
CloseWnd("DSGAviso")
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
XA_FUNC( GETWNDHND )
{
HWND hWnd;
hWnd = FindWindow(NULL, hb_parc( 1 ));
hb_retnl ((long) hWnd );
}
//---------------------------------------------------------- ----------------
XA_FUNC( CLOSEWND )
{
hb_retnl ((long) DestroyWindow(FindWindow(NULL, hb_parc( 1 ))) );
}
#pragma ENDDUMP
Gracias a todos.
Salu2.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Cerrar una ventana ajena a nuestra aplicación

Mensaje por ignacio »

Bingen,
Prueba con SendMessage( Handle, WM_CLOSE )
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:466e7b81$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Alguien sabe si hay alguna función, programa, truco o sistema para cerrar
> una Window que esta abierta pero que no es de nuestra aplicación.
>
> En principio debería de valer tener su Handle a través de su título (hasta
> aqui no hay problema)y la llamada a la función del API de Windows
> DestroyWindow(nHandle) pero no soy capaz de hacerla funcionar, no hace
> nada y me devuelve cero, aunque compruebo el Lasterror del sistema y me
> indica ERROR_ACCESS_DENIED 5 Access is denied.
>
>
>
> CloseWnd("DSGAviso")
>
> #pragma BEGINDUMP
> #include "windows.h"
> #include "xailer.h"
>
> XA_FUNC( GETWNDHND )
> {
> HWND hWnd;
> hWnd = FindWindow(NULL, hb_parc( 1 ));
> hb_retnl ((long) hWnd );
> }
>
> //---------------------------------------------------------- ----------------
>
> XA_FUNC( CLOSEWND )
> {
> hb_retnl ((long) DestroyWindow(FindWindow(NULL, hb_parc( 1 ))) );
> }
>
> #pragma ENDDUMP
>
>
>
> Gracias a todos.
>
> Salu2.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Cerrar una ventana ajena a nuestra aplicación

Mensaje por jfgimenez »

Bingen,
> En principio debería de valer tener su Handle a través de su título (hasta
> aqui no hay problema)y la llamada a la función del API de Windows
> DestroyWindow(nHandle) pero no soy capaz de hacerla funcionar, no hace
> nada y me devuelve cero, aunque compruebo el Lasterror del sistema y me
> indica ERROR_ACCESS_DENIED 5 Access is denied.
Aunque tengas su handle, no la puedes manipular directamente, ya que está en
otro proceso. En cambio, lo que sí se puede hacer es enviarle mensajes.
Prueba con PostMessage( Handle, WM_CLOSE ).
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Cerrar una ventana ajena a nuestra aplicación

Mensaje por Bingen Ugaldebere »

Sois la leche, quien pudiera estar a vuestro nivel.
Con la solución de Ignacio funciona sin problemas.
¿De donde puedo sacar mas información sobre SendMessage o PostMessage y
sus funcionalidades?
Muchas gracias y salu2.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Cerrar una ventana ajena a nuestra aplicación

Mensaje por ignacio »

Bingen,
Creo que es mejor que uses PostMessage() como te comentaba José Giménez.
Para más información:
http://msdn.microsoft.com
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Bingen Ugaldebere" <bingen@muninser.com> escribió en el mensaje
news:466eb0c2$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Sois la leche, quien pudiera estar a vuestro nivel.
>
> Con la solución de Ignacio funciona sin problemas.
>
> ¿De donde puedo sacar mas información sobre SendMessage o PostMessage y
> sus funcionalidades?
>
> Muchas gracias y salu2.
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder