Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: .:UND3R:. en 12 Mayo 2012, 18:41 pm



Título: Duda: ¿Como especificar parámetros dentro de estructuras de una función?
Publicado por: .:UND3R:. en 12 Mayo 2012, 18:41 pm
Hola a todos tengo la siguiente duda:

Tengo la función:

Citar
ReadConsoleInput function

BOOL WINAPI ReadConsoleInput(
  __in   HANDLE hConsoleInput,
  __out  PINPUT_RECORD lpBuffer,
  __in   DWORD nLength,
  __out  LPDWORD lpNumberOfEventsRead
);

lpBuffer [out]
A pointer to an array of INPUT_RECORD structures that receives the input buffer data.

Pero dentro de esta estructura en msdn encuentro lo siguiente:

Citar
INPUT_RECORD structure

typedef struct _INPUT_RECORD {
  WORD  EventType;
  union {
    KEY_EVENT_RECORD          KeyEvent;
    MOUSE_EVENT_RECORD        MouseEvent;
    WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
    MENU_EVENT_RECORD         MenuEvent;
    FOCUS_EVENT_RECORD        FocusEvent;
  } Event;
} INPUT_RECORD;

Como se ve, se puede especificar el tipo de evento a capturar (filtrar), los cuales pueden ser (FOCUS_EVENT, KEY_EVENT, MENU_EVENT, etc.)

Mi pregunta es como llamo a ReadConsoleInput especificando el tipo de evento dentro de la estructura INPUT_RECORD junto con los demás parámetros?, ya que yo solo se llamar a la función.

Les pido que sean claros y sencillos, ya que estoy recién aprendiendo a programar (llevo 1 día con lo de las API).

Saludos y gracias


Título: Re: Duda: ¿Como especificar parámetros dentro de estructuras de una función?
Publicado por: _Enko en 12 Mayo 2012, 21:17 pm
En la misma MSDN hay un ejemplo
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685035(v=vs.85).aspx

No los filtras en realidad, se capturan todos los eventos, luego procesas los que te interesen.


Título: Re: Duda: ¿Como especificar parámetros dentro de estructuras de una función?
Publicado por: .:UND3R:. en 13 Mayo 2012, 18:53 pm
Solucionado:

El mismo libro que me estoy leyendo explica como definir estructuras....

Ejemplo estructura COORD:

Código
  1. COORD STRUCT
  2.   X WORD ?
  3.   Y WORD ?
  4. COORD ENDS


Si queremos utilizar SetConsoleCursorPosition de MS Wndows, debemos pasarle el manejador de slida de la consola y el puntero a la estructura COORD

Código
  1. .data
  2. posXY COORD <10,5>
  3. manejadorConsola HANDLE 0
  4. .code
  5. INVOKE GetStdHandle, STD_OUTPUT_HANDLE
  6. mov manejadorConsola,eax
  7. INVOKE SetConsoleCursorPosition, manejadorConsola, posXY

<10,5> indica los valores inicializados dentro de la estructura 10 (X) e 5 (Y).

Saludos