2012-01-19 74 views
-1

我写了一个简单的修补程序应用程序,它将文件下载到配置的目录中。InetGet不按预期工作

当我通过修补程序从URL下载一些文件时,dll文件所属的应用程序无法运行(当我点击“打开”时没有任何反应)。这里是我的代码切:

Local $fileDownload = InetGet("http://myurl.com/library.dll" , "library.dll" , 1 , 1) 

一切都很好,如果我删除library.dll AutoIt的是下载它,但随后的主应用程序不运行。

如果我手动下载并替换文件(通过网络浏览器),一切都很好。所以看起来像InetGet()会破坏文件。但我不知道如何以及为什么。

+0

是不是因为它在后台中运行的问题(在'InetGet'函数调用的最后ARG) ?下载完成之前是否关闭句柄('InetClose()')? –

+0

@DevNull我不知道它是否由于在后台运行引起的,我可以检查。下载后我正在关闭句柄。 – Cyclone

+0

尝试剥离最后一个参数,看看是否有帮助。 (默认是等到下载完成。)您也可以将“1”更改为“9”来强制二进制文件,但我认为这只适用于FTP。命令行将是'InetGet(“http://myurl.com/library.dll”,“library.dll”,9)' –

回答

2

inet_get应该工作!反正这里是另一种形式给出与WINAPI方法使用我的功能直接下载文件比它保存到一个文件

Func get_url($url) 

    $RequestURL = $url; 
    Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; 
    $oHTTP.Open("GET", $RequestURL, False) 
    $oHTTP.Send() 
    if $oHTTP.status == 200 Then 
      Return $oHTTP.ResponseText 
    Else 
      Return "ooops... status: " & $oHTTP.status 
    EndIf 

EndFunc