Page 1 of 1
Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 2:31 am
by FranciscoA
Eso amigos.
Necesito emular (via codigo) presionar las teclas CONTROL + CLICK IZQ del mouse.
Es para lanzar una acción sin tener teclado ni mouse, en una pantalla touch.
Agradeceré cualquier codigo de muestra, o sugerencias.
Saludos.
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 4:17 pm
by Armando
Francisco:
Tengo una función a la que nombre Teclado:
Code: Select all
FUNCTION Teclado( oDlg, nKey, nVeces )
LOCAL nVez
DEFAULT nVeces := 1
oDlg:SetFocus( )
FOR nVez := 1 TO nVeces
oDlg:POSTMSG( WM_KEYDOWN, nKey, 0 )
NEXT
RETURN ( NIL )
En esta función solo utilizo la tecla FLECHA ABAJO (WM_KEYDOWN) pero si miras
en VKey.Ch de FW, encontrarás vairas combinaciones de teclas.
Espero te sirva mi ejemplo
Saludos
EDITADO
Francisco, creo que la combinación de teclas que necesitas sería VK_CONTROL + VK_RETURN, no olvides
incluir VKey.Ch
Saludos
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 7:19 pm
by FranciscoA
Armando.
Gracias por contestar. Voy a probar tu codigo y luego te digo.
Nuevamente gracias.
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 7:29 pm
by karinha
Code: Select all
#Include "FiveWin.Ch"
Function Main()
LOCAL oWnd
DEFINE WINDOW oWnd TITLE "Testando Teclado"
oWnd:bKeyDown := { | nKey | StdKey( nKey ) }
oWnd:bKeyChar := { | nKey | StdKey( nKey ) }
ACTIVATE WINDOW oWnd
Return Nil
FUNCTION StdKey( nKey )
do case
case nKey == 1 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 2 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 3 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 4 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 8 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 13 .and. GetKeyState( VK_CONTROL )
? Str( nKey )
case nKey == 65 .and. GetKeyState( VK_CONTROL ) // Crtl + A
? Str( nKey )
case nKey == 66 .and. GetKeyState( VK_CONTROL ) // Crtl + B
? Str( nKey )
case nKey == 68 .and. GetKeyState( VK_CONTROL ) // Crtl + C
? Str( nKey )
case nKey == 38 .and. GetKeyState( VK_CONTROL ) // Ctrl + Down
? Str( nKey )
case nKey == 40 .and. GetKeyState( VK_CONTROL ) // Ctrl + Up
? Str( nKey )
case nKey == 48 .and. GetKeyState( VK_CONTROL ) // Ctrl + 0
? Str( nKey )
end case
RETURN Nil
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 9:40 pm
by FranciscoA
Armando.
He probado con esta leve modificacion a tu funcion, pero no logro resultados:
Code: Select all
Teclado( oDlg, .T., VK_CONTROL, nVeces )
Teclado( oDlg, .F., VK_CONTROL, nVeces )
//---------------------------------------//
FUNCTION Teclado( oWind, lPressed, nVKey, nVeces )
LOCAL nVez, nTecla
DEFAULT nVeces := 1
nTecla := if(lPressed, WM_KEYDOWN, WM_KEYUP)
oWind:SetFocus( )
FOR nVez := 1 TO nVeces
oWind:PostMsg( nTecla, nVKey, 0 )
NEXT
RETURN ( NIL )
Lo que necesito es emular la tecla VK_CONTROL presionada, mientras ejecuto una accion, luego soltar la tecla VK_CONTROL.
En otras palabras, quiero imitar el MULTISELECT del xBrowse, en un ambiento touch.
Alguna otra idea.
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Tue May 08, 2018 9:44 pm
by FranciscoA
Karinha.
Gracias por tu codigo. Me ha dado ideas para otros trabajos.
Lo que quiero hacer es imitar el MULTISELECT del xBrowse, en un ambiento touch. (sin keyboard y sin mouse instalados)
Es decir, emular la tecla VK_CONTROL presionada, mientras ejecuto otra accion. Luego soltar la tecla VK_CONTROL. (vía codigo)
Alguna otra idea?
Saludos.
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Wed May 09, 2018 2:46 pm
by FranciscoA
Hola amigos.
Voy avanzando. Estoy probando la function SendKey(VK_CONTROL), y me funciona para fijar la tecla CONTROL.
Lo que me falta es emular mantener presionado un boton, ejecutar action with SendKey(), y después emular soltar el boton.
Gracias
Re: Como emular presionar CTRL + CLICK IZQ ?
Posted: Wed May 09, 2018 3:46 pm
by karinha