Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2009
pedrosan pedrosan is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
pedrosan Va por buen camino
Capturar eventos de una ventana externa

Hola a todos,estoy necesitando ayuda, basicamente lo que quiero hacer es lo siguiente: Existe una aplicacion externa,una ventana externa y necesito que mi ventana, o sea, la de mi aplicacion tome los eventos o se posicione junto a la ventana de la aplicación externa. Es decir, si maximizo la ventana de la aplicación externa también se maximize mi ventana, lo mismo al minimizar etc.
Algún aporte? muchas gracias!
Responder Con Cita
  #2  
Antiguo 11-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Se me ocurre SetWindowsHookEx, con WH_CALLWNDPROC o con WH_GETMESSAGE.

Saludos.
Responder Con Cita
  #3  
Antiguo 11-11-2009
pedrosan pedrosan is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
pedrosan Va por buen camino
Muchas gracias, muy buen aporte, voy a investigar y meter mano por ahí...veremos que sale
Responder Con Cita
  #4  
Antiguo 12-11-2009
pedrosan pedrosan is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
pedrosan Va por buen camino
Mover mi ventana pegada a la ventana de otra aplicacion?

Salio perfecto,funciona trabajando con un hook, solo que en vez de usar SetWindowsHookEx utilicé la funcion SetCWPMSGHook() que instala un hook para los mensajes WH_CALLWNDPROC y/o WH_GETMESSAGE. Esta funcion se encuentra en la dll gratuita dscwpmsg.dll.
El código dentro de la funcion callback (esta función es llamada por el hook instalado desde la dll,dscwpmsg) sería algo así:

function Callback(SenderHWnd:HWND; wMsg:LongInt; wParam:LongInt; lParam:LongInt): LongInt;
.
.
.
WinClassName := GetWindowClassName(SenderHWnd);
WM_SYSCOMMAND: begin
if (WParam = SC_MINIMIZE) then
begin
if (WinClassName = 'xxxxxx') then
Main.ShowMinimizedWebBrowser();
end;
if (WParam = SC_RESTORE) then
begin
if (WinClassName = 'xxxxxx') then
Main.ShowNormalWebBrowser();
end;
end;

.
.
.
Ahora bien, lo que voy a intentar hacer es que mi ventana se mueva si es q la ventana de la otra apliacion se mueve, es decir,si se arrastra la ventana de la aplicacion,mi ventana se mueva pegada a ella,junto con ella,no se si me explico... Si alguien tiene algún aporte al respecto se lo voy a agradecer,mientras veo que me va saliendo.

Saludos!
Responder Con Cita
  #5  
Antiguo 12-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
La idea que te propuse del Hook era para que capturaras los Mensajes WM_MOVING, WM_MOVE y WM_SIZING para reenviarselos a tu ventana con las modificaciones pertinentes según como adoses tu ventana a la anfitriona.

Por su puesto capturando mas mensajes puedes hacer mas cosas con tu ventana.

Saludos.
Responder Con Cita
  #6  
Antiguo 12-11-2009
pedrosan pedrosan is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
pedrosan Va por buen camino
Si, tal cual, logre hacerlo, solo q tenia qveriguar cual funcion usar para lograr "movimiento"....basicamente,el código quedaría algo asi (a continuación del código escrito arriba):

WM_MOVING: Begin
if (WinClassName = 'xxxxxxx') then
begin
GetWindowRect(SenderHWnd, rcClient);
Main.MoveWebBrowser(rcClient.Top,rcClient.Right);
end;

Y en la funcion MoveWebBrowser utilizo MoveWindow con el handle correspondiente a mi venta y demás parametros...

El unico temita que me quedaría por intentar resolver es tratar de eliminar el delay entre que muevo la ventana y la mia cambia de posición...no se si será posible, tal vez utilizando AnimateWindow? ?

Muchas gracias escafandra, fue fundamental tu aporte!
Responder Con Cita
  #7  
Antiguo 31-10-2010
deneus deneus is offline
Miembro
 
Registrado: ago 2007
Posts: 10
Poder: 0
deneus Va por buen camino
Hola he leido este hilo y me ha parecido muy interesante, podias decirme donde poder descargar la dll dscwpmsg.dll? Gracias.
Responder Con Cita
  #8  
Antiguo 01-11-2010
pedrosan pedrosan is offline
Miembro
 
Registrado: nov 2009
Posts: 14
Poder: 0
pedrosan Va por buen camino
Cita:
Empezado por deneus Ver Mensaje
Hola he leido este hilo y me ha parecido muy interesante, podias decirme donde poder descargar la dll dscwpmsg.dll? Gracias.
Hola, encontraras informacion sobre la dll y podras descargarla de aqui: http://www.telecable.es/personales/j...htm?trucos.htm

Saludos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar Eventos de Windows berna API de Windows 4 07-10-2008 19:40:52
Ejecutar aplicacion externa y mandarle eventos de teclado iqui.Balam API de Windows 0 16-06-2008 03:35:09
capturar eventos de un telefono fedeloko API de Windows 0 04-10-2006 01:35:48
Como saber cuando windows abre una ventana externa a nuestra apli? Xema API de Windows 6 23-09-2004 15:16:18
Capturar eventos de componentes vichovi OOP 3 13-06-2003 19:01:33


La franja horaria es GMT +2. Ahora son las 02:10:52.


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
Copyright 1996-2007 Club Delphi