2009-06-19 5 views
0

메서드를 사용하여 파일을 다운로드하는 C++ 앱 (this one과 유사 함) (urlmon.dll에 정의 됨). IE8 전까지는 progress 콜백에 E_ABORT을 반환하여 다운로드를 중단 할 수있었습니다.IE8 상자에서 URLDownloadToFile을 사용하는 방법 (크래시가 좋지 않음)?

IE8이 설치된 시스템에서 오류 보고서가 생성되어 프로그램이 중단됩니다.

URLDownloadToFile을 통해 다운로드를 취소하는 다른 방법을 아는 사람이 있습니까?

+0

그건 그렇고, 내 문제는 kb969897에 의해 해결되었습니다, thanks guys – Vinzz

답변

1

Joel 이와 같은 문제가있었습니다. 그는 그것을 포기하고 속여서 (속임수를 취소한다는 의미는 더 이상 사용자에게 표시되지 않지만 계속 진행됨). WinInet은 버그가있었습니다 ...

+0

음, 그게 장난입니다! 하지만 어쨌든 좋은 생각, 나는 그것을 고려할 것이다. 감사. – Vinzz

1

MFC를 사용하는 경우 CInternetSession 및 CHttpFile을 사용 해본 적이 있습니까? - 내가 버퍼를 필요

CInternetSession internetSession; 

CHttpFile *pHttpFile = 
    reinterpret_cast< CHttpFile* >(internetSession.OpenURL(L"www.example.com")); 

DWORD dwStatusCode; 
if (pHttpFile->QueryInfoStatusCode(dwStatusCode) && 
    dwStatusCode == HTTP_STATUS_OK) 
{ 
    char szBuffer[ BUFFER_SIZE ]; 
    DWORD dwBufferIndex = 0; 

    DWORD dwBytesRead = (DWORD)pHttpFile->Read(&szBuffer[ dwBufferIndex ], CHUNK_SIZE); 
    while (dwBytesRead > 0 && dwBufferIndex < BUFFER_SIZE) 
    { 
     dwBufferIndex += dwBytesRead; 

     // break out if cancelled 
     if (m_bCancel) 
      break; 

     dwBytesRead = (DWORD)pHttpFile->Read(&szBuffer[ dwBufferIndex ], CHUNK_SIZE); 
    } 

    szBuffer[ dwBufferIndex ] = '\0'; 

    // szBuffer now contains the file contents 
} 

pHttpFile->Close(); 
delete pHttpFile; 

이 내가 현재 사용하고 무엇인가

나는 (IE8 설치)

빠른 코드의 조각 내가 사용하고 아무 문제없이 이것들을 사용하고 있습니다 내용을 포함하고 있지만,이 코드를 수정하여 파일에 쓰지 않아도되는 것은 아닙니다.

+0

이들은 통계가있는 진행 리포트가 있습니까? 내 앱에 꼭 있어야합니다. – Vinzz

+0

내가 어떻게하는지에 대한 아이디어를 제공하기 위해 내 대답을 수정했습니다. – Alan