Mmmmmm....esto no es tan fácil como te crees. Esta página que nos das tiene mucho código y llama a muchos scripts que habría que analizar. Piensa que la dirección web que nos das no es una dirección de descarga del fichero, sino que con el código que contiene esta página, te acaba resolviendo la dirección final del fichero que deseas bajar.
Viéndolo por encima, se podría hacer de dos formas. La que más me gustaría a mí, sería enviando peticiones y respuestas por código autoit hasta que te respondiese dándote la dirección web del fichero de descarga. Eso puede ser algo complicado. Yo analizaría el form y los datos que manda a ver por donde te sale la cosa. Por lo que he visto, también puede que tuvieses que mandarle una cabecera con datos específicos que puede que necesite para que la respuesta no sea erronea, como por ejemplo el explorador web desde el que haces la petición?
.
Ya te digo, todo esto habría que ir analizándolo tranquilamente hasta dar con la tecla. Se podria utilizar varias formas, desde las funciones nativas de autoit, hasta la udf inet o winhttp. Esta última es de las que más me gustan a mí. Busca por el foro y seguro que contraras ayuda de estas udfs. O siempre te queda el foro de habla inglesa
.
Otra forma algo más rápida, y puede que la entiendas mejor, es con el objeto internetexplorer. Te dejo el ejemplo de como sacar la dirección del archivo de descarga que necesitas para poder trabajar con inetget. Gran parte del código está sacado de la ayuda en Autoit>GUI Reference>Obj/COM Reference. Echale un vistacillo y verás que es muy interesante
.
Código: Seleccionar todo
$oIE=ObjCreate("InternetExplorer.Application.1") ;creación del objeto
$oIE.Visible=0
$EventObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents") ;creación de los eventos del objeto anterior
if @error then ;mensaje de error por si falla la creación anterior
Msgbox(0,"AutoIt COM Test", _
"ObjEvent: Can't use event interface 'DWebBrowserEvents'. Error code: " & hex(@error,8))
exit
endif
; Now starting to load an example Web page.
$URL = "http://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashx"
$oIE.Navigate( $URL ) ;navega a la dirección anterior
While 1
Sleep(100)
Wend
$EventObject.Stop ; Tell IE we don't want to receive events.
$EventObject=0 ; Kill the Event Object
$oIE=0 ; Remove IE from memory (not really necessary).
; A few Internet Explorer Event Functions
; See also: http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp
Func IEEvent_StatusTextChange($Text) ;evento del objeto internetexplorer que nos interesa para sacar la dirección de descarga.
; busco un trozo fijo de la dirección de descarga. Se que es así porque ya lo he averiguado espiando la navegación ;)=
$encontrado=StringInStr($Text,"http://silverlight.dlservice.microsoft.com/download")
If $encontrado<>0 Then ;si encuentro la dirección de descarga entro en la condición
$oIE.stop ;paro la navegación para que no me salga la ventana de descarga del explorador.
$EventObject.Stop ; Tell IE we don't want to receive events.
$EventObject=0 ; Kill the Event Object
$oIE=0 ; Remove IE from memory (not really necessary).
$direccion=StringRight($Text, StringLen($Text)-$encontrado+1) ;saco solamente la dirección de descarga desechando los caracteres del principio que no me interesan.
msgbox(0,"Direccion de descarga encontrada",$direccion)
Exit ;salgo del script
EndIf
EndFunc
Más o menos lo he comentado todo, pero si tienes alguna duda pregunta, que si no soy yo seguro que alguien te la resolverá.
Por cierto, puede que se pueda acortar un poco el proceso de resolución de la dirección de descarga, porque entre consulta-respuesta, entre la primera dirección que nos has proporcionado y la dirección de descarga, hay otra dirección web. Lo que pasa que tiene como dato un ID y puede que cambie (quien sabe....puede que según el sistema operativo, la versión del internet explorer, etc). Por eso no me he arriesgado a hacerlo desde esa dirección y he ido sobre seguro. Si te interesa puedes estudiarlo tú.
Saludos.