elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Duda] CallBack
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Duda] CallBack  (Leído 4,701 veces)
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
[Duda] CallBack
« en: 15 Enero 2011, 01:43 am »

.
Puedo redirigir un proceso por medio de funciones normales, pero lo que realmente quiero es redirrecionar a un miembro (una funcion) dentro de la clase, pero me marca error.

Como se puede hacer un CallBack a un miembro( Funcion ) de una clase?.

Código
  1. /* Con y sin & me marca error */
  2. /* Intento cambiar el proceso que resive los mensajes de "this->v_hWinSock" a otro proceso/mienbro de una clase */
  3. this->v_PrevProc = SetWindowLongA( this->v_hWinSock , GWL_WNDPROC, (DWORD)&this->WndProc);
  4.  

Dulces Lunas!¡.
.


« Última modificación: 15 Enero 2011, 01:56 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #1 en: 16 Enero 2011, 21:08 pm »

Tiene que ser un metodo estatico debido a la convencion de llamada.

http://foro.elhacker.net/programacion_cc/iquestcomo_accedo_a_this_desde_una_funcion_callback-t285522.0.html


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #2 en: 17 Enero 2011, 08:26 am »

.
Es similar pero no me da solución, ya que no le puedo pasar cualquier cosa a este redirrecionamiento que busco es solo cambiar el CallWindowProc de una ventana creada con CreateWindowsEX. a un miembro (funcion) de una clase siendo la misma clase en su constructor cuando se creo la ventana y despues como ya dije redirrecionar los mensajes entrantes de esta ventana a el miembro de la funcion en cuention.

CreateWindowEx + SetWindowLong + GWL_WNDPROC

Código
  1.  
  2. LONG WINAPI SetWindowLong(
  3.  __in  HWND hWnd,
  4.  __in  int nIndex,
  5.  __in  LONG dwNewLong
  6. );
  7.  
  8.  

Este es el proceso... que resive los mensajes.

Código
  1.  
  2. LRESULT CALLBACK cls_socket::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  3. {
  4.  ... Codigo
  5. }
  6.  
  7.  

P.D.: Usare una solucion cutre haber que tal me va.

Dulces Lunas!¡.
.
« Última modificación: 17 Enero 2011, 08:32 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #3 en: 17 Enero 2011, 09:08 am »

No se puede usar un metodo comun, tiene que ser estatico por la convencion de llamada, CALLBACK es un alias de __stdcall y esta convencion no pasa el puntero this. Podrias GWL_USERDATA para escribir y leer el puntero al objeto ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #4 en: 17 Enero 2011, 10:06 am »

.
Esto ya esta solucionado con GWL_WNDPROC+GWL_USERDATA me las apañare perfectamente inclusive quitare ese feo vector con ese feo For.

Dulces Lunas!¡.
« Última modificación: 17 Enero 2011, 10:19 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #5 en: 17 Enero 2011, 11:03 am »

De nada.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #6 en: 17 Enero 2011, 17:49 pm »

.
Esto ya esta solucionado con GWL_WNDPROC+GWL_USERDATA me las apañare perfectamente inclusive quitare ese feo vector con ese feo For.

Dulces Lunas!¡.

Hola BlackZeroX▓▓▒▒░░, hace un tiempo tuve el mismo problema y busque en cada rincon y en cada foro que pude, pero las soluciones que encontre no me sirvieron, al final deje a un lado lo que intentaba hacer por si me surgia alguna solucion. Por lo que leo, al final sabes como lograrlo. Podias exponer el metodo que usastes en algo de codigo y asi ver si asi saco esta espina que tengo :(
Saludos y gracias de antemano ;)
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #7 en: 17 Enero 2011, 17:57 pm »

¿Te referis a esto?
https://foro.elhacker.net/programacion_cc/c_ayuda_con_esta_clase-t311243.0.html

La solucion es la misma que te dieron en ese hilo, si queres usar la clase entonces el metodo tiene que ser estatico (como dije en este mismo hilo para pasar el puntero this podes usar GWL_USERDATA). Lee todo con atencion, incluidos los enlaces e hilos relacionados.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #8 en: 17 Enero 2011, 18:22 pm »

¿Te referis a esto?
https://foro.elhacker.net/programacion_cc/c_ayuda_con_esta_clase-t311243.0.html

La solucion es la misma que te dieron en ese hilo, si queres usar la clase entonces el metodo tiene que ser estatico (como dije en este mismo hilo para pasar el puntero this podes usar GWL_USERDATA). Lee todo con atencion, incluidos los enlaces e hilos relacionados.

Eternal Idol, recuerdo haber leido la respuesta de Littlehorse, pero al final me parece que no pude lograr hacerlo como queria, igual deberia seguir intentandolo y leyendo, aunque bueno...un pedacito de codigo sencillo como el ejemplo que puse en ese hilo, pero funcional, no me vendria mal, por eso le pedi algun ejemplo a BlackZeroX▓▓▒▒░░ que al parecer lo consiguio en su codigo.
De todas formas gracias por responder  ;-)
Saludos
En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [Duda] CallBack
« Respuesta #9 en: 17 Enero 2011, 18:43 pm »

En los enlaces hay varios ejemplos. Lo unico que tenes que hacer es declarar el metodo como estatico, llamar a Set/GetWindowLong con GWL_USERDATA y hacer algun casting.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Process32next Callback
Programación Visual Basic
ntaryl 4 2,201 Último mensaje 24 Septiembre 2008, 05:58 am
por ssccaann43 ©
TLS Callback
Programación C/C++
ThunderCls 0 1,907 Último mensaje 9 Mayo 2011, 22:18 pm
por ThunderCls
Funciones callback?
Programación C/C++
roilivethelife 1 2,949 Último mensaje 20 Agosto 2012, 17:41 pm
por rir3760
Rutina de desencriptación con TLS Callback
Análisis y Diseño de Malware
Binary_Death 5 3,216 Último mensaje 1 Septiembre 2013, 06:13 am
por Binary_Death
Refresco tkinter de texto recibido en un callback
Scripting
minak 1 1,712 Último mensaje 11 Mayo 2018, 13:48 pm
por minak
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines