コード例 #1
0
ファイル: MiniMule.cpp プロジェクト: LjApps/eMule-VeryCD
void CMiniMule::_OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL, VARIANT* /*Flags*/, VARIANT* /*TargetFrameName*/, VARIANT* /*PostData*/, VARIANT* /*Headers*/, BOOL* Cancel)
{
    ASSERT( GetCurrentThreadId() == _uMainThreadId );
    CString strURL(V_BSTR(URL));
    TRACE(_T("%hs: %s\n"), __FUNCTION__, strURL);

    // No external links allowed!
    TCHAR szScheme[INTERNET_MAX_SCHEME_LENGTH];
    URL_COMPONENTS Url = {0};
    Url.dwStructSize = sizeof(Url);
    Url.lpszScheme = szScheme;
    Url.dwSchemeLength = ARRSIZE(szScheme);
    if (InternetCrackUrl(strURL, 0, 0, &Url) && Url.dwSchemeLength)
    {
        if (Url.nScheme != INTERNET_SCHEME_UNKNOWN  // <absolute local file path>
                && Url.nScheme != INTERNET_SCHEME_RES	// res://...
                && Url.nScheme != INTERNET_SCHEME_FILE)	// file://...
        {
            *Cancel = TRUE;
            return;
        }
    }

    OnBeforeNavigate(pDisp, strURL);
}
コード例 #2
0
void CHTMLContainerDlg::_OnBeforeNavigate2(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName, VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel)
{
	CString targetURL(V_BSTR(URL));

	__time64_t now;
	_time64(&now);
	if (max(now, m_backspaceTime) - min(now, m_backspaceTime) <= 1) *Cancel = TRUE;
// 	if (m_lastURL.CompareNoCase(targetURL) == 0)
// 	{
// 		*Cancel = TRUE;
// 	}
// 	else
// 	{
// 		m_lastURL = m_curURL;
// 		m_curURL = targetURL;
// 	}
	
	OnBeforeNavigate(pDisp, targetURL);
}