Exemplo n.º 1
0
/***********************************************************************
 *           URLDownloadToCacheFileA (URLMON.@)
 */
HRESULT WINAPI URLDownloadToCacheFileA(LPUNKNOWN lpUnkCaller, LPCSTR szURL, LPSTR szFileName,
        DWORD dwBufLength, DWORD dwReserved, LPBINDSTATUSCALLBACK pBSC)
{
    LPWSTR url = NULL, file_name = NULL;
    int len;
    HRESULT hres;

    TRACE("(%p %s %p %d %d %p)\n", lpUnkCaller, debugstr_a(szURL), szFileName,
            dwBufLength, dwReserved, pBSC);

    if(szURL) {
        len = MultiByteToWideChar(CP_ACP, 0, szURL, -1, NULL, 0);
        url = heap_alloc(len*sizeof(WCHAR));
        MultiByteToWideChar(CP_ACP, 0, szURL, -1, url, len);
    }

    if(szFileName)
        file_name = heap_alloc(dwBufLength*sizeof(WCHAR));

    hres = URLDownloadToCacheFileW(lpUnkCaller, url, file_name, dwBufLength*sizeof(WCHAR),
            dwReserved, pBSC);

    if(SUCCEEDED(hres) && file_name)
        WideCharToMultiByte(CP_ACP, 0, file_name, -1, szFileName, dwBufLength, NULL, NULL);

    heap_free(url);
    heap_free(file_name);

    return hres;
}
Exemplo n.º 2
0
StString StActiveXCtrl::loadURL(const CString& theUrl) {
    if(theUrl.IsEmpty()) {
        // invalid URL
        return StString();
    }

    // obtaining the full url
    CComBSTR aURLTemp(theUrl);
    CW2CT aFullUrl(aURLTemp);

    // load file and return path to cache
    IBindHost* aHost = NULL;
    wchar_t aFilePath[ST_MAX_PATH];
    this->GetClientSite()->QueryInterface(IID_IBindHost, (void** )&aHost);
    if(URLDownloadToCacheFileW(aHost, aFullUrl, aFilePath, ST_MAX_PATH, 0, NULL) == S_OK) {
        return StString(aFilePath);
    }

    return StString();
}