Perdón por haber tardado tanto en responder. He estado este puente en la playita casi sin conexión
.
Ximorro escribió:Pero por si te sirve otra idea sería pasar el dato por el portapapeles, si es que javascript puede mandar algo al portapapeles, si no pues estoy diciendo tonterías...Así no habría que crear una página nueva...
Sería una buena idea, lo malo es que el código script (javascript o vbs) devuelve en una página nueva si se ha realizado la acción bien o no (true o false). Esto ocurre si se ejecuta el código javascript desde la barra de direcciones. O sea, que tenemos el mismo problema.
Lo he hecho de una forma que ya he utilizado alguna vez. He creado dos objetos ocultos en la página web, uno que da la latitud y otro la longitud cuando los cliqueamos. Después los cliqueo a propósito cuando quiero actualizar las coordenadas. Estas coordenadas son almacenadas dentro de los objetos (propiedad value) y recupero su texto para saber las coordenadas.
Os dejo el código. El botón "coordenadas" muestra las coordenadas con el código del portapapeles, y el botón "coordenadas2" las muestra con el método de los objetos ocultos.
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
_IEErrorHandlerRegister ()
$oIE = _IECreateEmbedded ()
GUICreate("Embedded Web control Test", 800, 500, _
(@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
$WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$GUIActiveX = GUICtrlCreateObj($oIE, 10, 40, 780, 360)
$GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
$GUI_Button_Forward = GUICtrlCreateButton("Coordenadas 2", 120, 420, 100, 30)
$GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
$GUI_Button_Stop = GUICtrlCreateButton("Coordenadas", 340, 420, 100, 30)
GUISetState() ;Show GUI
_IENavigate ($oIE, "http://www.google.es/maps")
;~ $codigoJava='javascript:coordenadas.value=(gApplication.getMap().getCenter().lng()%20+%20","+%20gApplication.getMap().getCenter().lat());'
$codigoJava="alert('hola');"
; Waiting for user to close the window
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $GUI_Button_Home
_IENavigate ($oIE, "http://www.google.es/maps")
Case $msg = $GUI_Button_Back
_IEAction ($oIE, "back")
Case $msg = $GUI_Button_Forward
$oBody = _IETagNameGetCollection($oIE, "body", 0) ;obtengo el objeto body de la página
If _IEGetObjById($oIE, "coordLng")=0 Then ;si existe el objeto creado por mí (coordLng) no lo vuelve a crear, si no existe lo crea
;crea en la página dos objetos ocultos los cuales contendrán la latitud y longitud. Almacena las coordenadas en el objeto si ejecutamos el evento click.
$oBody.insertAdjacentHtml("beforebegin","<input type='hidden' id='coordLng' onclick='javascript:coordLng.value=gApplication.getMap().getCenter().lng();'></input>")
$oBody.insertAdjacentHtml("beforebegin","<input type='hidden' id='coordLat' onclick='javascript:coordLat.value=gApplication.getMap().getCenter().lat();'></input>")
;obtenemos los dos objetos creados.
$oCoordLng=_IEGetObjById($oIE, "coordLng")
$oCoordLat=_IEGetObjById($oIE, "coordLat")
EndIf
;hacemos click en los objetos ocultos creados para que almacenen las coordenadas.
_IEAction($oCoordLng, "click")
_IEAction($oCoordLat, "click")
MsgBox(0,"","Longitud: " & $oCoordLng.value & @CR & "Latitud: " & $oCoordLat.value) ;mostramos las coordenadas recuperando el valor de los objetos creadas, o sea, sus coordenadas.
Case $msg = $GUI_Button_Stop
_IENavigate ($oIE, 'javascript:window.clipboardData.setData("Text",gApplication.getMap().getCenter().lng()%20+%20","+%20gApplication.getMap().getCenter().lat());',0)
;~ $oIE.stop
$posicion=StringSplit(ClipGet(),",")
MsgBox(0,"","Longitud: " & $posicion[1] & @CR & "Latitud: " & $posicion[2])
EndSelect
WEnd
GUIDelete()
Exit
Saludos.