Prohibir Enter

30/11/2004 - 16:09 por Alexander Ariel Kwaszka | Informe spam
Hola, deseo saber como puedo detectar la Tecla enter en determinados
programas, e impedir el proceso que realizaria normalmente.
Se puede?
Supongamos que sea la Calculadora de Windows, que solo permita con el
mouse y no con el Enter, que se traduciria en la tecla "=".
Nota, se como detectar si esta en ejecucion, ponerlo en primer plano y
pasarle numero pra sumarle y que me sume por medio de la tecla Enter, lo
que quiero es prohibir el enter.
Se entiende.

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
30/11/2004 - 16:46 | Informe spam
A ver si entiendo un poco tu necesidad.

En un formulario de VFP puedes interceptar las pulsaciones de teclas en el
evento KeyPress, y configurando la propiedad KeyPreview = .T. para que el
método Keypress del formulario intercepte los eventos KeyPress de los
controles.

Si quieres que la tecla [Enter] no haga nada pones en el método KeyPress del
formulario:

LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 13 && Enter
NODEFAULT
ENDIF


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos




"Alexander Ariel Kwaszka" escribió en el
mensaje news:%23ZP%
Hola, deseo saber como puedo detectar la Tecla enter en determinados
programas, e impedir el proceso que realizaria normalmente.
Se puede?
Supongamos que sea la Calculadora de Windows, que solo permita con el
mouse y no con el Enter, que se traduciria en la tecla "=".
Nota, se como detectar si esta en ejecucion, ponerlo en primer plano y
pasarle numero pra sumarle y que me sume por medio de la tecla Enter, lo
que quiero es prohibir el enter.
Se entiende.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Alexander Ariel Kwaszka
30/11/2004 - 17:03 | Informe spam
Si perfecto, eso si lo se, ahora como hago para que detectar el keypres
que se produce en la calculadora de windows.

Hace lo siguiente, abri la calculadora de windows en Inicio/programas... y
suma dos numeros, para ver el resultado, DEBERAS PRESIONAR ENTER, alli
comienza a actuar MI programa mediante la api u otro, LO QUE DEBE HACER EL
PROGRAMA ES EVITAR QUE ENTER SE EJECUTE, NO EN MI FORMULARIO DE FOX, SINO
EN LA CALCULADORA DE WINDOWS.

Se puede?

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#3 Fernando D. Bozzo
30/11/2004 - 19:40 | Informe spam
Hola Alexander:

Confunde un poco tu necesidad. ¿Que utilidad tendría no permitirle a un
usuario pulsar Enter en cualquier otro programa?
De haber una solución, seguramente sería por medio de la API de Windows,
reasignando temporalmente la tecla Enter, pero no sé cómo se hace y sería
por demás peligroso.


Saludos,

Fernando D. Bozzo

"La programación es más eficiente cuando menos se piensa en el código"



"Alexander Ariel Kwaszka" escribió en el
mensaje news:
Si perfecto, eso si lo se, ahora como hago para que detectar el keypres
que se produce en la calculadora de windows.

Hace lo siguiente, abri la calculadora de windows en Inicio/programas... y
suma dos numeros, para ver el resultado, DEBERAS PRESIONAR ENTER, alli
comienza a actuar MI programa mediante la api u otro, LO QUE DEBE HACER EL
PROGRAMA ES EVITAR QUE ENTER SE EJECUTE, NO EN MI FORMULARIO DE FOX, SINO
EN LA CALCULADORA DE WINDOWS.

Se puede?


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#4 Alexander Ariel Kwaszka
30/11/2004 - 20:08 | Informe spam
Obviamente puede ser peligroso, pero no es para lo que pensas. Es para un
trabajo, del cual se requiere ese control ya que no se tiene el fuente de
ese programa.
Se que se puede, ayudenme porfavor!!!

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
Respuesta Responder a este mensaje
#5 Jorge Mota
01/12/2004 - 05:28 | Informe spam
creo que el Enter no lo puedes prohibir, a menos que como te han indicado
reasignes la tecla para otro codigo Ascii tarea nada sencilla ni aun desde
C++

de todos modos lo que si puedes hacer es enviar pulsaciones de tecla
luego de que te presionen enter

ejecuta este codigo, abre el bloc de notas y la calculadora y presiona
en ambos la tecla enter, para cancelar solo presionando la tecla ESC
en alguno de esos 2 lo detendra. para saber el titulo de la ventana activa
lo hago pasandole como parametro a GetWindowText el valor devuelto por
GetForeGroundWindow (el handle de la ventana que tiene el foco).

luego solo hago
if GetAsyncKeyState(Key_Enter) = Key_Pressed
donde key_enter = codigo Ascii de la tecla que quieras saber si fue pulsada
y Key_pressed es una constante con valor de -32767

ojo el timer tiene como intervalo 10 milisegundos para evitar a lo maximo
que se le
escapen las pulsaciones de tecla (igual se puede construir un keylogger
con esto, pero eso es otro cantar)
asi que quiza tu comsumo del cpu se vaya al maximo. la otra no puedes
interceptar/enviar de
manera tan facil algunas pulsaciones tal como =<>.,@()&$% y signos asi,
por que eso depende de la distribucion
de tu teclado,y habria que pasarle algunos parametros para hacer scan de
tu teclado y ver que codigo
tiene asignado.


#Define Key_Pressed -32767
#Define Key_Enter 13 &&Ascii de enter
#Define Key_ESC 27 &&Ascii de ESC
Declare Integer GetAsyncKeyState In user32 Integer vKey
Declare Long GetForegroundWindow In user32
Declare Long GetWindowText In user32 Long nHandle, String @lpString, Long
cch
Declare Long keybd_event In "user32" Integer bVk, Integer bScan, Long
dwFlags, Long dwExtraInfo

_Screen.AddObject("timer11","timer1")
Read Events

Define Class TIMER1 As Timer
Interval
Enabled=.T.
Procedure Timer
cTitulo =Replicate(' ',250)
=GetWindowText(GetForegroundWindow(),@cTitulo,250)
cTitulo = Chrtran(cTitulo,Chr(0),'')
If cTitulo = 'Calculadora' Or 'Bloc' $ cTitulo
If GetAsyncKeyState(Key_Enter) = Key_Pressed
=keybd_event(Asc("2"), 0, 0, 0)
=keybd_event(Asc("0"), 0, 0, 0)
=keybd_event(Asc("0"), 0, 0, 0)
=keybd_event(Asc("4"), 0, 0, 0)
EndIf
If GetAsyncKeyState(Key_ESC) = Key_Pressed
This.Enabled = .F.
This.Interval = 0
This.Destroy()
Messagebox("Cancelado!")
Clear Events
Endif
Endif
Endproc
Enddefine

(Cada que presiones enter te ejecutara el enter y adicionalmente te
escribira 2004)

Saludos++


En , Alexander Ariel Kwaszka escribió:

Obviamente puede ser peligroso, pero no es para lo que pensas. Es para un
trabajo, del cual se requiere ese control ya que no se tiene el fuente de
ese programa.
Se que se puede, ayudenme porfavor!!!


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway





Jorge Mota
Microsoft Visual FoxPro MVP
Guatemala
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida