No me funciona la función KEYBOARD

Hola Softigal:

Te estaría muy agradecido si pudieses echarme una mano. Tengo una aplicación que procesa unas páginas web para obtener datos a través del objeto webbrowser. Mi problema está en que a veces necesito mandarle a la página una pulsación de una tecla (un TAB o un ENTER) ya que por algún motivo en ese momento no puedo invocar al método click() de un determinado elemento. Mi problema es que utilizo la función KEYBOARD '{TAB}' o KEYBOARD '{ENTER}' y el sistema no me hace caso. SI pudieras darme algún consejo de como tengo que utilizar esta u otra función para mandar a la ventana activa eventos de teclado te estaré muy muy agradecido.
Un saludo y gracias de antemano

2

2 respuestas

Respuesta
1

Sí, estuve haciendo unas pruebas y veo que el comando "KEYBOARD" no tiene efecto dentro del objeto "Web Browser", me imagino que es porque dicho comando sólo afecta al buffer interno de vfp, pero en este caso, el control es un objeto externo.
Lo que pienso que puedes hacer, si es que no lo habías intentado ya, es utilizar el objeto "Document" del control "WebBrowser", el cual te da acceso a todos los elementos de la página actualmente mostrada, dándote la posibilidad de manipularlos de una forma muy similar a como si usaras Javascript.
** Podrías manipular el valor de un texto así:
Doc = ThisForm.webControl.Document
Doc.getElementById("IdDelTexto").value = "valor"
** Invocar un evento de algún objeto, p.e. un botón
Doc. GetElementById("IdDelBoton"). Click()

Respuesta
1

http://msdn.microsoft.com/en-us/library/ks92c5bk(v=vs.80).aspx

Echale un ojo al link, la función keyboard no tiene mucha ciencia, de todas maneras el problema lo tienes en otro lado porque si no puedes ejecutar el método click tampoco te va hacer caso al keyboard, revisa lo que estas haciendo pero algo haces mal, sino haz pruebas con un formulario en limpio.

Gracias por responder,

El link que me pasas ya me lo se de memoria, jajjaj pero muchas gracias por responder tan pronto. Creo que tienes razón con lo de que el problema está en otro lado. Creo que está relacionado con la página activa.  Pero con lo del método click() no me expliqué bien. Sí puedo utilizar métodos como el focus(), o incluso puedo mostrar con un WAIT WINDOW las propiedades del objeto (botón) que quiero que actúe. Lo que no sé es porque ese no me reacciona al clic() y otros elementos si. Por eso quise probar con focus() y KEYBOARD. Pero no hace nada ni con '{ENTER}' ni '{TAB}'

Saludos

Si utilizas bien la función pues ya sabes que el problema es otro, depura el código revisa lo que estas haciendo poniendo banderitas(MESSAGEBOX) para saber desde donde te falla porque nosotros sin el proyecto en ese sentido no te podemos ayudar más porque no sabemos lo que estas haciendo y como lo estas haciendo, te podemos ayudar con las funciones o cualquier tipo de duda.

Muchas gracias por la atención.

Resulta que he descubierto por casualidad que haciendo lo siguiente si que me lanza un evento de teclado a la ventana activa

LOCAL loWSH
loWSH = CreateObject("WScript.Shell")
loWSH.SendKeys('{ENTER}')

gracias y un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas