CHttpFile 获取URL重定向后的文件名

CHttpFile 获取URL重定向后的文件名

// 获取URL重定向后的文件名,如果没有重定向,也返回下载文件名
CString GetFileNameFromRedirectUrl(CString strUrl)
{
	CInternetSession iSession; 
	CStdioFile* pFileDown = NULL; 
	CString sFileName; 
 
	pFileDown = iSession.OpenURL(strUrl, 1, INTERNET_FLAG_TRANSFER_BINARY); 
 
	CHttpFile* pHttpFile = (CHttpFile *)pFileDown; 
	HINTERNET hHttpFile = HINTERNET(*pHttpFile); 
 
	//获得重定向文件名 
	BOOL bResult = pHttpFile->QueryOption(INTERNET_OPTION_URL, sFileName);
	int flag=sFileName.ReverseFind('/');
	CString strFileName=sFileName.Mid(flag+1);
 
	return strFileName;
}

错误: _malloc 已经在 Libcmtd.lib 中定义, 引发的思考

错误: _malloc 已经在 Libcmtd.lib 中定义, 引发的思考:

C++编译器选项:/MT,/MTd,/Md,/MDd
必须让工程所使用的库都使用相同的配置,否则就会有相应的警告或错误提示,甚至出现无法解析的函数,
有时,我们使用的库不是自己可以控制的,那么就只能把工程属性设置成你使用库的选项相同,这样可以编译通过了.

用CHtmlView接口获取HTML源文件

用CHtmlView接口获取HTML源文件:

支持在UNICODE工程下获取HTML代码,无乱码。。。。发了两年多了才知道,害得我找了一晚上,没想到自己的博客里就有。。。

BOOL CWeb::GetSource(CString& strString) 
{ 
    IHTMLDocument2* pHtmlDoc2 = (IHTMLDocument2*)GetHtmlDocument(); 
    // check if HtmlDocument initialized 
    if( pHtmlDoc2 != NULL) 
    { 
        IHTMLDocument3* pHTMLDoc3 = NULL; 
        HRESULT hr = pHtmlDoc2->QueryInterface(IID_IHTMLDocument3, (LPVOID*)&pHTMLDoc3); 
        ASSERT(SUCCEEDED(hr)); 
        if(pHTMLDoc3) 
        { 
            IHTMLElement* pDocElem=NULL; 
            hr = pHTMLDoc3->get_documentElement(&pDocElem); 
            ASSERT(SUCCEEDED(hr)); 
            if(pDocElem) 
            { 
                BSTR bstrHTML; 
                pDocElem->get_outerHTML(&bstrHTML); 
                pDocElem->Release(); 
                USES_CONVERSION; 
                //MessageBox(OLE2T(bstrHTML), _T("源文件")); 
                strString = OLE2T(bstrHTML); 
                SysFreeString(bstrHTML); 
            } 
            pHTMLDoc3->Release(); 
        } 
        pHtmlDoc2->Release(); 
        pHtmlDoc2=NULL; 
    }
    return TRUE; 
}