亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pub.cpp

?? 一個在IExplorer中運行
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
#include "stdafx.h"
#include "Pub.h"
#include "Wininet.h"
#include "ExDispID.h"
#include "MsHtmcid.h"

#include "PubDomExtender.h"
#include "DocEventHandler.h"
#include "WindowEventHandler.h"

#define ELEMTYPE_FLASH		0x0001
#define ELEMTYPE_IMAGES		0x0002

extern PUB::CAtlFileMapping<TCHAR> g_filemapBlockedList;

extern CString g_sCoRegKey;
extern CString g_sPubRegKey;

HMENU	g_hPubMenu = NULL;
WNDPROC	g_lpPrevWndProc = NULL;
BOOL	g_bResizePosChanged = FALSE;
BOOL	g_bResizeSysCmd = FALSE;
BOOL	g_bInSizeMove = FALSE;
BOOL	g_bCaptureChanged = FALSE;

#define MAX_PUB_INSTANCES	100

typedef struct tagPUB_INSTANCE
{
	HWND		hWnd;
	CPub*		pPub;
	DWORD		dwThreadId;
	DWORD		dwProcessId;
}
PUB_INSTANCE;

// Shared data among all instances
#pragma data_seg(".SHARED")
// Begin shared data
BOOL	g_bRegistrySettingsLoaded = FALSE;
DWORD	g_dwBlockedTotal = 0;
DWORD	g_dwBlockedSession = 0;
BOOL	g_bEnabled = TRUE;
BOOL	g_bBlockFlash = FALSE;

BOOL	g_bStatusMsg = TRUE;



BOOL	g_bBlockUncachedImages = FALSE;
int		g_nPubInstanceCount = 0;
DWORD	g_dwHideAnimationsHotkey = 0;
PUB_INSTANCE	g_aPubInstances[MAX_PUB_INSTANCES]= {0};
// End shared data
#pragma data_seg()
#pragma comment(linker, "/SECTION:.SHARED,RWS")


// CPub

//
// The functions below are used to manage the array of PUB_INSTANCE
// structures.
//
// The technique for handling PUB_INSTANCE comes from:
// WEB HIGHLIGHTER Version 1.1
// Copyright (c) 2001 Ziff Davis Media, Inc.
// All rights reserved.
// First Published in PC Magazine, US Edition, April 9, 2001.
// Programmer: Patrick Philippot
//
BOOL AddInstance(HWND hWnd, CPub* pPub, DWORD dwThreadId, DWORD dwProcessId)
{
	for (int i = 0; i < g_nPubInstanceCount; i++)
	{
		if ((g_aPubInstances[i].pPub == pPub) &&
			(g_aPubInstances[i].hWnd == hWnd) &&
			(g_aPubInstances[i].dwProcessId == dwProcessId))
		{
			// Already registered
			return TRUE;	
		}
	}

	if (g_nPubInstanceCount < MAX_PUB_INSTANCES)
	{
		g_aPubInstances[g_nPubInstanceCount].hWnd = hWnd;
		g_aPubInstances[g_nPubInstanceCount].pPub = pPub;
		g_aPubInstances[g_nPubInstanceCount].dwThreadId = dwThreadId;
		g_aPubInstances[g_nPubInstanceCount].dwProcessId = dwProcessId;

		g_nPubInstanceCount++;
		return TRUE;
	}
	return FALSE;
}

BOOL RemoveInstance(CPub* pPub, HWND hWnd, DWORD dwProcessId)
{
	BOOL	bOK = FALSE;

	for (int i = 0; i < g_nPubInstanceCount; i++)
	{
		if ((g_aPubInstances[i].pPub == pPub) &&
			(g_aPubInstances[i].hWnd == hWnd) &&
			(g_aPubInstances[i].dwProcessId == dwProcessId))
		{
			if (i < MAX_PUB_INSTANCES - 1)
			{
				memmove(&g_aPubInstances[i], &g_aPubInstances[i+1], 
					sizeof(PUB_INSTANCE) * (g_nPubInstanceCount - i - 1));
			}
			g_nPubInstanceCount--;
			bOK = TRUE;
			break;
		}
	}

	if (g_nPubInstanceCount == 0)	// Last instance
	{
	}

	return bOK;
}

CPub* LookupInstance(HWND hWnd)
{
	int i;

	for (i = 0; i < g_nPubInstanceCount; i++)
	{
		if (g_aPubInstances[i].hWnd == hWnd)
			return g_aPubInstances[i].pPub;
	}

	return NULL;
}

CPub* LookupInstance(DWORD dwThreadId)
{
	int i;
	for (i = 0; i < g_nPubInstanceCount; i++)
	{
		if (g_aPubInstances[i].dwThreadId == dwThreadId)
			return g_aPubInstances[i].pPub;
	}

	return NULL;
}

// 
// Prevent scripts from resizing the browser window.  Basically, this
// works by assuming that if the window is being resized and
//     1) it is not due to a system command (maximize, minimize or restore)
//     2) it is not when IE is first being launched in this process
//     3) it is not because the user double-clicked the title bar 
//     4) the IE has not captured the mouse, i.e., the user isn't 
//        dragging the frame, and
//     5) the user is not using just his eyes to resize the frame ;)
// then it must be due to script and therefore should be blocked.
//
// Credit and kudos go to Ferdinand Oeinck and Gerk Huisma!
//
LRESULT CALLBACK CPub::ResizeWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	CPub* pPub;

	// We first try to find a matching window
	do
	{
		pPub = LookupInstance(hWnd);
		if (pPub == NULL)
			hWnd = GetParent(hWnd);
	}
	while ((pPub == NULL) && (hWnd != NULL));

	// If the previous attempt failed, this may be because the IE window that
	// has the input focus is not a child of the main browser window. A typical
	// case is the Favorites | Add Favorites | New Folder command. In this case,
	// we try to lookup using the current thread id
	if (pPub == NULL)
		pPub = LookupInstance(GetCurrentThreadId());

	ATLASSERT(pPub != NULL);
	if (pPub == NULL)	// Should not happen
		return 1;		// No other choice

	if (msg == WM_CAPTURECHANGED)
	{
		g_bCaptureChanged = TRUE;
	}
	else if (msg == WM_ENTERSIZEMOVE)
	{
		g_bInSizeMove = TRUE;
	}
	else if (msg == WM_EXITSIZEMOVE)
	{
		g_bInSizeMove = FALSE;
		g_bCaptureChanged = FALSE;
	}
	else if (msg == WM_SYSCOMMAND)
	{
		// Set resize exception:
		if (wParam == SC_MAXIMIZE || 
			wParam == SC_RESTORE || 
			wParam == SC_MINIMIZE)
		{
			ATLTRACE(_T("(%ld) WM_SYSCOMMAND\n"), ::GetCurrentThreadId());
			g_bResizeSysCmd = TRUE;
		}
	}
	
	else if (msg == WM_WINDOWPOSCHANGED)
	{
		ATLTRACE(_T("(%ld) WM_WINDOWPOSCHANGED\n"), ::GetCurrentThreadId());

		// g_bResizePosChanged is FALSE until after window position
		// change so that IE can restore the window position when initially
		// launched.  Remember that g_bResizePosChanged is global and therefore
		// shared by all BHOs in this process.
		g_bResizePosChanged = TRUE;

		// Reset
		g_bResizeSysCmd = FALSE;

		g_bCaptureChanged = FALSE;
	}
	return CallWindowProcW((WNDPROC)pPub->m_lpResizeOldWndProc, hWnd, msg, wParam, lParam);
}

LRESULT CALLBACK CPub::IEKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	// We need a pointer to an instance of CPub to work with. This value
	// has been stored in the g_aPubInstances collection when CPub::SetSite has
	// been called.
	HWND hWnd = GetFocus();
	CPub* pPub;

	// We first try to find a matching window
	do
	{
		pPub = LookupInstance(hWnd);
		if (pPub == NULL)
			hWnd = GetParent(hWnd);
	}
	while ((pPub == NULL) && (hWnd != NULL));

	// If the previous attempt failed, this may be because the IE window that
	// has the input focus is not a child of the main browser window. A typical
	// case is the Favorites | Add Favorites | New Folder command. In this case,
	// we try to lookup using the current thread id
	if (pPub == NULL)
		pPub = LookupInstance(GetCurrentThreadId());

	ATLASSERT(pPub != NULL);
	if (pPub == NULL)	// Should not happen
		return 1;		// No other choice -- will lock keyboard

	if (!pPub->m_bHotkeysEnabled || 
		(nCode < 0) || 
		(lParam & 0xC0000000))	// bit 30 or bit 31 is set
	{
		// Process the key only once.
		// Disable hotkeys if still navigating.
		return CallNextHookEx(pPub->m_hHook, nCode, wParam, lParam);
	}

	UINT nState = pPub->GetKeyState();

	if (g_dwHideAnimationsHotkey != 0 &&
		pPub->KeyMatch(nState, wParam, g_dwHideAnimationsHotkey))
	{
		pPub->BlockWebPageElements(ELEMTYPE_FLASH | ELEMTYPE_IMAGES);
		return 1;
	}

	// Note that we do not let the keystroke go through.
	// Which means that if the keystroke is used by MSIE
	// the corresponding function will not be triggered.
	// Use CallNextHook instead if you want that the original
	// function be triggered as well.
	return CallNextHookEx(pPub->m_hHook, nCode, wParam, lParam);
}

UINT CPub::GetKeyState()
{
	UINT	nState = 0;

	// Make KeyState
	if (::GetKeyState(VK_SHIFT) < 0)
		nState += HOTKEYF_SHIFT;
	if (::GetKeyState(VK_MENU) < 0)
		nState += HOTKEYF_ALT;
	if (::GetKeyState(VK_CONTROL) < 0)
		nState += HOTKEYF_CONTROL;

	return nState;
}

//
// Check whether a key and a key option match
//
BOOL CPub::KeyMatch(UINT nState, WPARAM wParam, int nKey)
{
	return ((wParam == LOBYTE(nKey)) && (nState == HIBYTE(nKey)));
}

//
// Funnel web browser events through this class
//
HRESULT CPub::ManageBrowserConnection(ConnectType eConnectType)
{
	if (eConnectType == ConnType_Unadvise && m_dwBrowserCookie == 0)
		return S_OK;	// not advised, nothing to do

	ATLASSERT(m_spWebBrowser2);
	if (!m_spWebBrowser2)
		return S_OK;

	HRESULT hr = E_FAIL;
	if (eConnectType == ConnType_Advise)
	{
		ATLASSERT(m_dwBrowserCookie == 0);
		hr = AtlAdvise(m_spWebBrowser2, (IDispatch*)this, 
			__uuidof(DWebBrowserEvents2), &m_dwBrowserCookie);
		if (SUCCEEDED(hr) && m_dwBrowserCookie > 0)
		{
			// subclass browser window
			SHANDLE_PTR hWnd;
			hr = m_spWebBrowser2->get_HWND(&hWnd);
			if (SUCCEEDED(hr) && hWnd && !m_lpResizeOldWndProc)
			{
#pragma warning( push )
#pragma warning( disable : 4311 )
#pragma warning( disable : 4312 )
				m_lpResizeOldWndProc = (WNDPROC)::SetWindowLong((HWND)hWnd, 
					GWLP_WNDPROC, (LONG)ResizeWndProc);
#pragma warning( pop ) 
			}

			// Initialize GDI+.
			Gdiplus::GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
		}
	}
	else
	{
		hr = AtlUnadvise(m_spWebBrowser2, 
			__uuidof(DWebBrowserEvents2), m_dwBrowserCookie);
		m_dwBrowserCookie = 0;

		// un-subclass browser window
		SHANDLE_PTR hWnd;
		hr = m_spWebBrowser2->get_HWND(&hWnd);
		if (SUCCEEDED(hr) && hWnd && m_lpResizeOldWndProc)
		{
#pragma warning( push )
#pragma warning( disable : 4311 )
			::SetWindowLong((HWND)hWnd, GWLP_WNDPROC, (LONG)m_lpResizeOldWndProc);
			m_lpResizeOldWndProc = NULL;
#pragma warning( pop ) 
		}

		// Shutdown GDI+.
		Gdiplus::GdiplusShutdown(m_gdiplusToken);
	}
	ATLASSERT(SUCCEEDED(hr));
	return hr;
}

//
// Receive IPropertyNotifySink notifications
//
HRESULT CPub::ManagePropertyNotifyConnection(ConnectType eConnectType)
{
	if (eConnectType == ConnType_Unadvise && m_dwPropNotifyCookie == 0)
		return S_OK;	// not advised, nothing to do

	HRESULT hr = S_OK;

	if (SUCCEEDED(hr))
	{
		if (m_spHTMLDocument)
		{
			if (eConnectType == ConnType_Advise)
			{
				ATLASSERT(m_dwPropNotifyCookie == 0);
				hr = AtlAdvise(m_spHTMLDocument, (IDispatch*)this, IID_IPropertyNotifySink, &m_dwPropNotifyCookie);
			}
			else
			{
				hr = AtlUnadvise(m_spHTMLDocument, IID_IPropertyNotifySink, m_dwPropNotifyCookie);
				m_dwPropNotifyCookie = 0;
			}
		}
		else
		{
			ATLASSERT(FALSE);
			hr = E_FAIL;
		}
	}

	ATLASSERT(SUCCEEDED(hr));
	return hr;
}

//
// Set event handlers for HTMLDocumentEvents2 and HTMLWindowEvents2
//
HRESULT CPub::ManageEventHandlers(CConnInfo* pConnInfo, ConnectType eConnectType)
{
	HRESULT hr = E_FAIL;

	CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> spWB(pConnInfo->m_spWBDisp);
	if (spWB)
	{
		CComPtr<IDispatch> spDocDisp;
		hr = spWB->get_Document(&spDocDisp);
		if (SUCCEEDED(hr) && spDocDisp)
		{
			CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spDoc(spDocDisp);
			if (spDoc)
			{
				IHTMLWindow2* spWnd = NULL;
				hr = spDoc->get_parentWindow(&spWnd);
				if (SUCCEEDED(hr) && spWnd)
				{
					if (eConnectType == ConnType_Advise)
					{
						DWORD dwCookie = 0;

						CComObject<CDocEventHandler>* pDocHandler = NULL;
						hr = CComObject<CDocEventHandler>::CreateInstance (&pDocHandler);
						ATLASSERT(SUCCEEDED(hr));
						if (SUCCEEDED(hr) && pDocHandler)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女一区二区三区| 在线视频你懂得一区| 欧美刺激午夜性久久久久久久 | 亚洲国产日产av| 欧洲一区在线观看| 五月天丁香久久| 欧美成人女星排名| 国产一区二区三区久久久| 国产欧美1区2区3区| 成+人+亚洲+综合天堂| 一区二区三区在线观看欧美| 欧美日韩三级一区二区| 久久福利视频一区二区| 久久九九影视网| 91久久香蕉国产日韩欧美9色| 婷婷开心久久网| 久久久久久久综合日本| 91偷拍与自偷拍精品| 日韩精品三区四区| 国产亚洲视频系列| 91在线一区二区| 人人精品人人爱| 国产精品毛片大码女人| 欧美人动与zoxxxx乱| 国产精品自在欧美一区| 亚洲免费观看高清完整版在线观看熊 | 国产精品一线二线三线精华| 亚洲欧洲av色图| 91精品国产综合久久国产大片| 国产成人午夜精品5599| 亚洲成a人片在线不卡一二三区 | 国产日韩欧美制服另类| 欧美色男人天堂| 丁香婷婷综合网| 天堂一区二区在线| 1区2区3区欧美| 欧美大胆一级视频| 欧美私模裸体表演在线观看| 国产91综合一区在线观看| 日韩精品乱码免费| 亚洲欧美日韩国产成人精品影院 | 美腿丝袜在线亚洲一区| ㊣最新国产の精品bt伙计久久| 日韩一区二区免费高清| 91美女在线看| 国产精品99久久久| 麻豆精品国产91久久久久久| 一区在线观看免费| 日韩欧美一区二区在线视频| 成人动漫在线一区| 美女在线视频一区| 国产精品女主播av| 欧美videofree性高清杂交| 91麻豆自制传媒国产之光| 蜜桃久久av一区| 亚洲精品欧美二区三区中文字幕| 欧美大白屁股肥臀xxxxxx| 色噜噜狠狠成人网p站| 精品一区二区三区久久久| 亚洲天堂a在线| 久久久久久久久久久久久久久99| 在线看国产日韩| 国产盗摄精品一区二区三区在线 | 免费成人在线网站| 亚洲欧美区自拍先锋| 亚洲精品一区二区三区香蕉| 91麻豆自制传媒国产之光| 国产精品亚洲一区二区三区在线| 亚洲国产精品嫩草影院| 综合激情成人伊人| 久久精品视频在线看| 欧美一区二区三区在线观看| 一本色道综合亚洲| 国产91对白在线观看九色| 国产精品99精品久久免费| 久久精品国产色蜜蜜麻豆| 视频一区视频二区中文字幕| 亚洲美女免费在线| 国产精品传媒入口麻豆| 久久久久久久综合色一本| 精品毛片乱码1区2区3区| 欧美日韩不卡一区二区| 欧美在线高清视频| eeuss鲁片一区二区三区在线观看| 成人va在线观看| 从欧美一区二区三区| 国产精品亚洲第一区在线暖暖韩国 | 99久免费精品视频在线观看| 丁香天五香天堂综合| 极品美女销魂一区二区三区 | 久久成人免费日本黄色| 日韩成人免费看| 欧美aa在线视频| 日韩中文字幕亚洲一区二区va在线| 亚洲一区二区在线免费观看视频| 曰韩精品一区二区| 一区二区国产视频| 亚洲小少妇裸体bbw| 亚洲国产欧美日韩另类综合| 亚洲最新在线观看| 一区二区三区.www| 午夜精品久久久久久久99水蜜桃| 亚洲免费在线视频一区 二区| 国产精品视频观看| 国产精品久久久久一区二区三区 | 在线一区二区视频| 欧美性高清videossexo| 色综合天天综合色综合av | 成人性色生活片免费看爆迷你毛片| 久久精品理论片| 免费在线看一区| 一区二区久久久| 丝袜美腿亚洲色图| 国产一区二区三区四| www.欧美色图| 在线中文字幕不卡| 欧美一二三在线| 日本一二三不卡| 亚洲在线观看免费| 麻豆精品在线观看| 国产成人在线观看免费网站| 播五月开心婷婷综合| 欧洲生活片亚洲生活在线观看| 欧美专区亚洲专区| 日韩精品在线一区二区| 国产精品国产三级国产a| 亚洲国产精品久久艾草纯爱| 久久99国产精品免费网站| 丁香五精品蜜臀久久久久99网站 | 亚洲高清免费观看| 精品一区二区三区在线播放视频 | 91美女在线看| 欧美一区在线视频| 中文字幕国产一区| 亚洲五月六月丁香激情| 国产一区二区三区在线看麻豆| 99热在这里有精品免费| 欧美一区二区成人6969| 自拍视频在线观看一区二区| 琪琪久久久久日韩精品| 91亚洲男人天堂| 日韩美女天天操| 亚洲免费大片在线观看| 国产精品自拍毛片| 欧美日韩在线播放三区| 国产日产欧美一区| 亚洲成人动漫在线观看| 色婷婷亚洲综合| 国产色综合一区| 午夜a成v人精品| av一区二区不卡| 精品国产乱码久久久久久久久| 自拍偷拍亚洲激情| 国产精品羞羞答答xxdd| 色成年激情久久综合| 欧美电影免费观看高清完整版在| 亚洲区小说区图片区qvod| 国产一区二区精品久久| 欧美精品亚洲一区二区在线播放| 国产精品久久久久精k8 | 天天操天天色综合| av午夜一区麻豆| 精品日韩一区二区三区| 免费国产亚洲视频| 欧美日韩精品是欧美日韩精品| 国产精品女主播av| 东方aⅴ免费观看久久av| 精品免费视频一区二区| 午夜电影一区二区三区| 欧美综合色免费| 亚洲人成网站精品片在线观看| 国产福利电影一区二区三区| 精品国产伦一区二区三区免费| 亚洲国产日韩精品| 5月丁香婷婷综合| 亚洲成a人在线观看| 在线观看亚洲专区| 一区二区三区不卡视频在线观看| heyzo一本久久综合| 国产精品久久久久久久久免费樱桃 | 国产精品成人网| 懂色中文一区二区在线播放| 国产色综合一区| 成人免费视频一区| 国产欧美日韩在线看| 国产伦精品一区二区三区免费迷| 2021国产精品久久精品| 国产麻豆91精品| 国产日韩欧美一区二区三区综合| 国产一区二区剧情av在线| 2024国产精品视频| 国产精品综合在线视频| 国产精品每日更新在线播放网址| 成人黄色免费短视频| 国产精品久久午夜| 色噜噜狠狠色综合欧洲selulu| 免费在线成人网| 国产色一区二区| 91小视频免费观看| 夜夜嗨av一区二区三区中文字幕|