📄 surfmanager.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 + -