2012-01-19 3 views
-1

파일을 구성된 디렉토리에 다운로드하는 간단한 patcher 응용 프로그램을 작성했습니다.InetGet가 예상대로 작동하지 않습니다.

patcher를 통해 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

마지막 arg를 제거하고 그 도움이되는지 확인하십시오. (기본값은 다운로드가 완료 될 때까지 기다리는 것입니다.) "1"을 "9"로 변경하여 바이너리를 강제 할 수도 있지만, FTP에서만 작동합니다. 커맨드 라인은'InetGet ("http://myurl.com/library.dll", "library.dll", 9)' –

답변

2

inet_get이 작동해야합니다! 어쨌든 여기에 또 다른 aproach 파일에 저장보다 내 기능을 사용하여 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 
관련 문제