2012-01-19 146 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