⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 surfmanager.cpp

📁 一个管理ie的软件
💻 CPP
字号:
// SurfManager.cpp : Implementation of CSurfManager
#include "stdafx.h"
#include "SurfHelp.h"
#include "SurfManager.h"

extern HWND g_hMainWnd;

/////////////////////////////////////////////////////////////////////////////
// CSurfManager

STDMETHODIMP CSurfManager::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&IID_ISurfManager
	};
	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		if (InlineIsEqualGUID(*arr[i],riid))
			return S_OK;
	}
	return S_FALSE;
}

STDMETHODIMP CSurfManager::GetSettings(long *plSettings)
{
	if (g_Global.m_bDisable)
	{
		*plSettings = 0;
	}
	else
	{
		*plSettings = g_Global.m_dwFilterSettings | g_Global.m_dwIeWindowSettings;
	}

	return S_OK;
}

STDMETHODIMP CSurfManager::GetWindowSizeThreshold(long *plThreshold)
{
	*plThreshold = g_Global.m_lWindowSizeThreshold;

	return S_OK;
}

STDMETHODIMP CSurfManager::CheckTitle(BSTR bstrTitle, BSTR bstrUrl, BOOL *pbKill)
{
	USES_CONVERSION;
	LPCTSTR pszTitle = OLE2T(bstrTitle);
	LPCTSTR pszUrl = OLE2T(bstrUrl);
	MAP_FILTER::iterator theFilter;
	CPopupLog* pPopupLog;
	BOOL bInExclusions = IsInExclusions(pszTitle, pszUrl);

	*pbKill = FALSE;
	if (!bInExclusions)
	{
		g_Global.m_lockTitleBlacklist.ReadLock();
		for (theFilter=g_Global.m_mapTitleBlacklist.begin(); 
			theFilter!=g_Global.m_mapTitleBlacklist.end(); theFilter++)
		{
			if (theFilter->second && PathMatchSpec(pszTitle, theFilter->first))
			{
				*pbKill = TRUE;

				//save log
				pPopupLog = new CPopupLog();
				pPopupLog->m_sTitle = pszTitle;
				pPopupLog->m_sUrl = pszUrl;
				pPopupLog->m_sFilter = theFilter->first;
				pPopupLog->m_lKillType = KILLED_BY_TITLE;
				GetLocalTime(&(pPopupLog->m_timeOccur));

				g_Global.m_lockPopupLog.WriteLock();
				g_Global.m_vecPopupLog.push_back(pPopupLog);
				SendMessage(g_hMainWnd, WM_ADD_LOG_NOTIFY, 
					0, g_Global.m_vecPopupLog.size() - 1);
				g_Global.m_lockPopupLog.WriteUnlock();
				break;
			}
		}
		g_Global.m_lockTitleBlacklist.ReadUnlock();
	}

	return S_OK;
}

STDMETHODIMP CSurfManager::CheckUrl(BSTR bstrTitle, BSTR bstrUrl, BOOL *pbKill)
{
	USES_CONVERSION;
	LPCTSTR pszTitle = OLE2T(bstrTitle);
	LPCTSTR pszUrl = OLE2T(bstrUrl);
	MAP_FILTER::iterator theFilter;
	CPopupLog* pPopupLog;
	BOOL bInExclusions = IsInExclusions(pszTitle, pszUrl);

	*pbKill = FALSE;
	if (!bInExclusions)
	{
		g_Global.m_lockUrlBlacklist.ReadLock();
		for (theFilter=g_Global.m_mapUrlBlacklist.begin(); 
			theFilter!=g_Global.m_mapUrlBlacklist.end(); theFilter++)
		{
			if (theFilter->second && PathMatchSpec(pszUrl, theFilter->first))
			{
				*pbKill = TRUE;

				//save log
				pPopupLog = new CPopupLog();
				pPopupLog->m_sTitle = pszTitle;
				pPopupLog->m_sUrl = pszUrl;
				pPopupLog->m_sFilter = theFilter->first;
				pPopupLog->m_lKillType = KILLED_BY_URL;
				GetLocalTime(&(pPopupLog->m_timeOccur));

				g_Global.m_lockPopupLog.WriteLock();
				g_Global.m_vecPopupLog.push_back(pPopupLog);
				SendMessage(g_hMainWnd, WM_ADD_LOG_NOTIFY, 
					0, g_Global.m_vecPopupLog.size() - 1);
				g_Global.m_lockPopupLog.WriteUnlock();
				break;
			}
		}
		g_Global.m_lockUrlBlacklist.ReadUnlock();
	}

	return S_OK;
}

STDMETHODIMP CSurfManager::CheckSize(BSTR bstrTitle, BSTR bstrUrl, 
									 long lWidth, long lHeight, BOOL* pbKill)
{
	USES_CONVERSION;
	LPCTSTR pszTitle = OLE2T(bstrTitle);
	LPCTSTR pszUrl = OLE2T(bstrUrl);
	CPopupLog* pPopupLog;

	*pbKill = ! IsInExclusions(pszTitle, pszUrl);

	if (*pbKill)
	{
		TCHAR szBuffer[32];
		_stprintf(szBuffer, _T("%ld X %ld"), lWidth, lHeight);

		pPopupLog = new CPopupLog();
		pPopupLog->m_sTitle = pszTitle;
		pPopupLog->m_sUrl = pszUrl;
		pPopupLog->m_sFilter = szBuffer;
		pPopupLog->m_lKillType = KILLED_BY_SIZE;
		GetLocalTime(&(pPopupLog->m_timeOccur));

		g_Global.m_lockPopupLog.WriteLock();
		g_Global.m_vecPopupLog.push_back(pPopupLog);
		SendMessage(g_hMainWnd, WM_ADD_LOG_NOTIFY, 
			0, g_Global.m_vecPopupLog.size() - 1);
		g_Global.m_lockPopupLog.WriteUnlock();
	}
	return S_OK;
}

BOOL CSurfManager::IsInExclusions(LPCTSTR pszTitle, LPCTSTR pszUrl)
{
	MAP_FILTER::iterator theFilter;
	BOOL bRet = FALSE;

	if (g_Global.m_dwFilterSettings & REMOVE_POPUP_BY_TITLE)
	{
		g_Global.m_lockTitleExclusion.ReadLock();
		for (theFilter=g_Global.m_mapTitleExclusion.begin(); 
			theFilter!=g_Global.m_mapTitleExclusion.end(); theFilter++)
		{
			if (theFilter->second && PathMatchSpec(pszTitle, theFilter->first))
			{
				bRet = TRUE;
				break;
			}
		}
		g_Global.m_lockTitleExclusion.ReadUnlock();
	}

	if (bRet == FALSE && (g_Global.m_dwFilterSettings & REMOVE_POPUP_BY_URL))
	{
		g_Global.m_lockUrlExclusion.ReadLock();
		for (theFilter=g_Global.m_mapUrlExclusion.begin(); 
			theFilter!=g_Global.m_mapUrlExclusion.end(); theFilter++)
		{
			if (theFilter->second && PathMatchSpec(pszUrl, theFilter->first))
			{
				bRet = TRUE;
				break;
			}
		}
		g_Global.m_lockUrlExclusion.ReadUnlock();
	}

	return bRet;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -