Page 1 of 1
Keyboard
Posted: Mon Apr 09, 2007 7:40 pm
by saviotti
Olá a todos,
Alguém saberia me informar, por favor, como faço para emular as teclas F10,F1,ALT+C, etc..
Já tentei com :
__Keyboard (chr (237) )
__Keyboard (VK_F10)
keyboard (chr (237) )
Keyboard (VK_F10)
e não funcionarm.
Obrigado,
Mário Saviotti Jr.
Re: Keyboard
Posted: Mon Apr 09, 2007 8:05 pm
by Manuel Aranda
Hola saviotti:
Algunos ejemplos para orientarte:
SetKey(VK_F1, {|nKey| WinHelp("Ayuda.Hlp")})
SetKey(VK_F9, {|nKey| Calculadora() })
oBtn1:bkeydown:={|nKey|IIF((nKey == Asc( "S" ) .OR. nKey == Asc( "s" ) ) .AND. GetKeyState( VK_CONTROL ),;
( lSalvar := .T. , oDlgCodigo:End(), oLBx:refresh() ),)}
Un saludo,
Manuel
saviotti wrote:Olá a todos,
Alguém saberia me informar, por favor, como faço para emular as teclas F10,F1,ALT+C, etc..
Já tentei com :
__Keyboard (chr (237) )
__Keyboard (VK_F10)
keyboard (chr (237) )
Keyboard (VK_F10)
e não funcionarm.
Obrigado,
Mário Saviotti Jr.
Keyboard
Posted: Mon Apr 09, 2007 10:03 pm
by saviotti
Gracias por responder, mas o lo que necessito é o seguinte :
function ExecutaScript ()
Local aTexto := memoread ("teclas.txt") ,;
nLinhas ,;
aTeclas ,;
lLinhaSistema := .f. ,;
aLinha ,;
I ,;
nContaCaracter ,;
nPos ,;
nPosFinal ,;
aFuncao ,;
aComando
oTimerScript:Deactivate ()
nLinhas := mlcount (aTexto)
for I := 1 to nLinhas
aLinha := alltrim (memoline (aTexto,254,I))
nPos := at (".EXE",upper (aLinha))
aInicial := substr(aLinha,2,4)
do case
case upper (aLinha) == "ENTER"
* ISTO FUNCIONA
KEYBOARD (chr (13) )
//syswait (.2)
case upper (aLinha) == "TAB"
* ISTO FUNCIONA
KEYBOARD (chr (9) )
syswait (.2)
case upper (aLinha) == "F10"
* ISTO NÃO FUNCIONA
__Keyboard (chr (237) )
__Keyboard (chr (VK_F10) )
case upper (aLinha) == "F3"
* ISTO NÃO FUNCIONA
Keyboard (CHR (VK_F3 ) )
Keyboard (CHR (230 ) )
case upper (aLinha) == "F1"
KEYBOARD (chr (228) )
syswait (.2)
case at ("ALT+",aLinha) > 0
nPos := at ("ALT",aLinha)
nPosFinal := at ("+",aLinha)
aComando := asc (substr (aLinha,nPosFinal+1,len (aLinha)))
SysWait (1)
__Keyboard( Chr( VK_END ))
KEYBOARD (chr (ACC_ALT) + chr (aComando) )
//KEYBOARD (chr (254) + chr (aComando) )
//CC SysWait (1)
case at ("TEMPO(",aLinha) > 0
nPos := at ("(",aLinha)
nPosFinal := at (")",aLinha)
nTempo := val (substr (aLinha,nPos+1,nPosFinal-1))
SysWait (nTempo)
OtherWise
for nContaCaracter := 1 to len (aLinha)
aComando := substr (aLinha,nContaCaracter,1)
aComando := asc (aComando)
aComando := chr (aComando)
KeyBoard (aComando)
next
syswait (.1)
endcase
next
lLoginScript := .f.
return .t.
Posted: Tue Apr 10, 2007 2:14 pm
by Carlos Mora
Keyboard( Chr( nKey) ) no te funcionará con valores de nKey > 255.
Que tal un PostMessage( , WM_KEYDOWN, VK_10, 0 ) ?
Eso si funciona en windows.
Saludos,
Carlos
Re: Keyboard
Posted: Tue Apr 10, 2007 2:18 pm
by Maurilio Viana
Tente Keybd_Event da API do Win32:
[Intenta Keybd_Event desde la API de Win32:]
Code: Select all
DLL function keybd_event(bVk as _INT,bScan as _INT, dwFlags as LONG, dwExtraInfo as LONG ) PASCAL lib "user32.dll"
Esta declaração pode não ser a correta, pois não testei
[Esta declaracion puede no ser la correcta aunque yo no he testeado]
Exemplo [Ejemplo]:
Code: Select all
keybd_event(VK_F3, 0, 0, 0) // Press F3 key
keybd_event(VK_F3, 0, 2, 0) // Release F3 key
URL:
http://eric.aling.tripod.com/PB/tips/pbtip36.htm
http://www.codeproject.com/system/keyboard.asp
Antonio, puedes ayudarnos?
Abraços/Saludos
Maurilio
Keyboard
Posted: Tue Apr 10, 2007 3:54 pm
by saviotti
Gracias,
A conseguido fazer funcionar com :
DLL32 FUNCTION keybd_event ( bVk as _INT,bScan as _INT, dwFlags as LONG, dwExtraInfo as LONG ) AS LONG ;
PASCAL LIB "user32.dll"
Mário
Re: Keyboard
Posted: Tue Apr 10, 2007 5:09 pm
by Maurilio Viana
Beleza, Mário!!!
Abraços!
Maurilio