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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


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

Desconectado Desconectado

Mensajes: 54


Ver Perfil
Funciones callback?
« en: 20 Agosto 2012, 13:17 pm »

Hola!
Estoy adentrandome poco a poco en la winAPI, y quiero utilizar una funcion para listar las ventanas abiertas.

La funcion es esta:
Código:
BOOL WINAPI EnumWindows(
  _In_  WNDENUMPROC lpEnumFunc,
  _In_  LPARAM lParam
);
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx

El tema que no se que es una funcion callback, ni como se usa.
Tampoco he encontrado informacion suficiente para utilizarla yo mismo.

Lo que necesito es comparar el nombre de todas las ventanas con un texto, si existe que devuelva TRUE, y si no FALSE; aunque con que consiga usar la funcion ya me arreglo.

Salu2 y gracias!


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Funciones callback?
« Respuesta #1 en: 20 Agosto 2012, 17:41 pm »

Una función "callback" es una que no llamas directamente, en su lugar alguien mas (en tu caso el SO) se encarga de hacerlo. Solo tienes que definir una función en la forma indicada, su tipo se indica en esa misma pagina.

Un ejemplo sencillo (solo lista las ventanas):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #include <windows.h>
  6.  
  7. #define NUM_CHARS 256
  8.  
  9. BOOL CALLBACK fn(HWND hwnd, LPARAM lParam);
  10.  
  11. int main(void)
  12. {
  13.   puts("Antes de la llamada a EnumWindows\n");
  14.   if (!EnumWindows(fn, 0))
  15.      return EXIT_FAILURE;
  16.   puts("\nDespues de la llamada a EnumWindows");
  17.  
  18.   return EXIT_SUCCESS;
  19. }
  20.  
  21. BOOL CALLBACK fn(HWND hwnd, LPARAM lParam)
  22. {
  23.   char nombre[NUM_CHARS + 1];
  24.   static int i = 0;
  25.  
  26.   if (GetWindowText(hwnd, nombre, NUM_CHARS) > 0)
  27.      printf("%02d -- %s\n", ++i, nombre);
  28.  
  29.   return TRUE;
  30. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Process32next Callback
Programación Visual Basic
ntaryl 4 2,239 Último mensaje 24 Septiembre 2008, 05:58 am
por ssccaann43 ©
[Duda] CallBack « 1 2 »
Programación C/C++
BlackZeroX 11 4,761 Último mensaje 17 Enero 2011, 21:05 pm
por ThunderCls
TLS Callback
Programación C/C++
ThunderCls 0 1,931 Último mensaje 9 Mayo 2011, 22:18 pm
por ThunderCls
Rutina de desencriptación con TLS Callback
Análisis y Diseño de Malware
Binary_Death 5 3,252 Último mensaje 1 Septiembre 2013, 06:13 am
por Binary_Death
Refresco tkinter de texto recibido en un callback
Scripting
minak 1 1,757 Último mensaje 11 Mayo 2018, 13:48 pm
por minak
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines