PDA

Ver la versión completa : KeyBd_event



galileogali
08-10-2008, 13:35
Tengo toda la informacion de msdn sobre la funcion keybd_event
necesito Trabajar con ella dentro de VBA
En concreto enviar
Numeros
Enter
y
{F8}
Francamente, necesitaraia algun ejemplo. Particularmente , reconozco no saber como pasar el Hexadecimal....
Por ejemplo sil a tabla de msdn V Key - Code me da
VK_F8 (0x77)
F8 key

Como mando (siempre estoy en VBA o VB6, NO en VB .NET )????

Ahora bien existe alguna rutinita para
enviar una cadena de Numeros o Texto con keybd_event????

hystd
08-10-2008, 21:23
Buenas! Antes de nada comentarte dos enlaces, que supongo, al menos uno de ellos ya lo habrás visto:

http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx

Y la segunda, corresponde a nuestra ezine, en donde se explica con detalle esa función:
http://www.hh-server.com/archivos/ezine/HH_eZine_N2.pdf

La solución a tu problema, aparece en la ezine, en concreto en el apartado que dice:


Nota: Podemos usar la función VkKeyScan (ch: char), que dado un carácter, obtiene el código asociado que debemos pasar a keybd_event. Está contenida en User32.dll de nombre “VkKeyScanA”

El código por tanto, se resumiría en recorrer la cadena de números que quieres enviar, luego simular ENTER y posteriormente F8:

desde i=1 hasta longitud(cadena) hacer //"cadena" contiene los numeros a enviar
keybd_event(VkKeyScan(cadena[i]), 0, 0, 0);
fin_desde

//a continuación simulamos ENTER:
keybd_event(VK_RETURN, 0, 0, 0); //PULSAMOS ENTER
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); //SOLTAMOS ENTER

//y por último F8:
keybd_event(VK_F8, 0, 0, 0); //PULSAMOS F8
keybd_event(VK_F8, 0, KEYEVENTF_KEYUP, 0); //SOLTAMOS F8


El esquema es secuencial. Primero la cadena, luego ENTER y luego F8.

Un saludo.

galileogali
08-10-2008, 23:09
Soy forero de excel y tengo mi propio sitio.
Vaya pues mi agradecimiento por la amplitud de tu respuesta.
Sinceramente , aun no me he puesto a probar,....... pero creo que si a mi me gusta que me agradezcan, no puedo menos que hacerlo, y ya....

Despues que pruebe te cuento como me fue y si me surge alguna duda adicional...
GALILEOGALI

NOSPAM