hola, he estado usando la api keybd_event para simular presionar teclas normales y otras pero para realizar una simulacion de combinacion de teclas como por ej. Alt+64 no me funciona, lo he estado haciendo asi:
Public Const Alt_iz = &HA4
Call keybd_event(Alt_iz, 0, 0, 0) 'presionamos Alt Izquierdo
Pulsar_Tecla (vbKeyNumpad6) 'presionamos 6 numerico
Pulsar_Tecla (vbKeyNumpad4) 'presionamos 4 numerico
Call keybd_event(Alt_iz, 0, KEYEVENTF_KEYUP, 0) 'soltamos la tecla Alt Izquierdo
La funcion Pulsar_Tecla es simple:
Sub Pulsar_Tecla(Tecla As Long)
Call keybd_event(Tecla, 0, 0, 0)
Call keybd_event(Tecla, 0, KEYEVENTF_KEYUP, 0)
End Sub
Y no funciona, alguien podria echarme una mano, y con otros simbolos? como por ej. el "/" o el "\".
Desde ya gracias por su ayuda.
podrías usar sendkeys
SendKeys "%" & Chr(64)
saludos
SendKeys no me sirve, aún así desearia hacerlo con la API, he estado buscando pero no hay mucho sobre lo que pido, Gracias de todas formas.
Pues como dices no hay mucho sobre lo que pides solo MSDN :rolleyes: :laugh:
Bueno me puse a leer un poco en MSDN y te arme un ejemplo:
'Constantes para las teclas y otros
Const KEYEVENTF_KEYUP = &H2
Const VK_LMENU = &HA4 'Alt Izquierdo
Const VK_RMENU = &HA5 'Alt Derecho
Const VK_NUMPAD6 = &H66 '6
Const VK_NUMPAD4 = &H64 '4
Const VK_LSHIFT = &HA0 'Shift Izquierdo
Const VK_NUM7 = &H37 'Numero 7 Barra de división "/"
Const VK_OEM_5 = &HDC 'Barra inversa \
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyW" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Sub Command1_Click()
Text1.SetFocus
'Enviar @ Arroba
Call keybd_event(VK_LMENU, MapVirtualKey(VK_LMENU, 0), 0, 0)
Call keybd_event(VK_NUMPAD6, MapVirtualKey(VK_NUMPAD6, 0), 0, 0)
Call keybd_event(VK_NUMPAD4, MapVirtualKey(VK_NUMPAD4, 0), 0, 0)
Call keybd_event(VK_NUMPAD6, MapVirtualKey(VK_NUMPAD6, 0), KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_NUMPAD4, MapVirtualKey(VK_NUMPAD4, 0), KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_LMENU, MapVirtualKey(VK_LMENU, 0), KEYEVENTF_KEYUP, 0)
'Enviar / Barra de division
Call keybd_event(VK_LSHIFT, MapVirtualKey(VK_LSHIFT, 0), 0, 0)
Call keybd_event(VK_NUM7, MapVirtualKey(VK_NUM7, 0), 0, 0)
Call keybd_event(VK_NUM7, MapVirtualKey(VK_NUM7, 0), KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_LSHIFT, MapVirtualKey(VK_LSHIFT, 0), KEYEVENTF_KEYUP, 0)
'Enviar \ Barra inversa
Call keybd_event(VK_RMENU, MapVirtualKey(VK_RMENU, 0), 0, 0)
Call keybd_event(VK_OEM_5, MapVirtualKey(VK_OEM_5, 0), 0, 0)
Call keybd_event(VK_OEM_5, MapVirtualKey(VK_OEM_5, 0), KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_RMENU, MapVirtualKey(VK_RMENU, 0), KEYEVENTF_KEYUP, 0)
End Sub
Espero te sriva de algo. te dejo solo enviando "@" "\" "/" es cuestion de ver las VirtualKey correspondiente para armas los otros. saludos
Excelente Dany, tenia la sospecha de que debia indagar mas a cerca de MapVirtualKey pero la falta de tiempo me desanimó.
Me ha servido de mucho, una gran solución. Saludos y exitos.