как использовать URLDownloadToFile в окне IE8 (без сбоев было бы неплохо)? - PullRequest
0 голосов
/ 19 июня 2009

У меня есть приложение на C ++ (похожее на на этот ), которое загружает файлы с помощью метода URLDownloadToFile (определен в urlmon.dll). До IE8 можно было прервать загрузку, вернув E_ABORT в обратном вызове прогресса.

В системе, в которой установлен IE8, при этом происходит сбой программы с созданием отчета об ошибке.

Кто-нибудь знает какой-либо альтернативный способ отменить загрузку, запущенную через URLDownloadToFile?

Ответы [ 2 ]

1 голос
/ 19 июня 2009

Джоэл Была такая проблема. Он отказался от этого и обманул (обман, означавший отмену передачи, сделал передачу больше невидимой для пользователя, но все еще продолжающей движение). В WinInet была ошибка ...

1 голос
/ 19 июня 2009

Если вы используете MFC, рассматривали ли вы использование CInternetSession и CHttpFile?

Я использую их без проблем (IE8 установлен)

Быстрый фрагмент кода, который я использую:

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;

Это то, что я сейчас использую - мне нужен буфер с содержимым, однако изменение этого кода для записи в файл не должно быть слишком большой проблемой.

...