Znn3bq.jpeg
²é¿´: 322  |  »Ø¸´: 0
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

zsglly

ľ³æ (ÖøÃûдÊÖ)

[½»Á÷] IE±à³Ì---DLL°ó¶¨

²éÔÄÁËһЩ×ÊÁÏ£¬µ«Ð´¹ØÓÚIEµÄDLL°ó¶¨µÄÎÄÕ²¢²»¶à£¬¶øÇÒ£¬Ð´µÃ²»ÊǺÜÇå³þ¡£Îª´Ë£¬ÎÒÏë½éÉÜһϣ¬Õâ¸ö·½·¨£º

»ù´¡ÖªÊ¶:VC COM,(ALT·½·¨À´×ö)

IEµÄÆô¶¯¹ý³Ì£º

µ±IEµÄʵÀýÆô¶¯µÄʱºò£¬Ëü»áÔÚ×¢²á±íÖÐѰÕÒÒ»¸öCLSID,¾ßÌåλÖÃÔÚ

HKEY_LOCALL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

µ±ÕâÀï´æÔÚÒ»CLSIDʱ£¬IE»á½¨Á¢Ò»¸ö¶ÔÏóµÄʵÀý¡£±ÈÈ磺{B5D4581D-ED6A-4905-A267-25BAF7BE79C1}Èç¹ûÕâ¸ö¿´²»¶®£¬Äã¿ÉÒÔÈ¥ÕÒÒ»ÏÂCOM¿ª·¢µÄÊé¡£

¿ª·¢ÊµÀý£º

VC½¨Á¢¹¤³Ì,ALT COM AppWizard ×¢ÒâÊÇDLL.

½¨Á¢Ò»¸öеÄÀ࣬һ¶¨ÒªÊÇALT

Ôڲ˵¥£¬Insert>New ALT Object:Simple Object

Ð޸IJ¢ÊµÏÖ·½·¨

// FiltrateIE.h : Declaration of the CFiltrateIE

   

#ifndef __FILTRATEIE_H_

#define __FILTRATEIE_H_

#include "resource.h"       // main symbols

#include //ÕâÀï±ØÐë¼ÓÉÏÕâÁ½¸öÍ·Îļþ

#include

   

#define       MAX_DOCUMENTS       50

/////////////////////////////////////////////////////////////////////////////

// CFiltrateIE

class ATL_NO_VTABLE CFiltrateIE :

       public CComObjectRootEx,

       public CComCoClass,

       public IObjectWithSiteImpl,//¼ÓÈëÕâ¸ö£¬ÒԼ̳иýӿÚ

       public IDispatchImpl

{

public:

       CFiltrateIE()

       {

       }

   

DECLARE_REGISTRY_RESOURCEID(IDR_FILTRATEIE)

DECLARE_NOT_AGGREGATABLE(CFiltrateIE)

DECLARE_PROTECT_FINAL_CONSTRUCT()

   

BEGIN_COM_MAP(CFiltrateIE)

       COM_INTERFACE_ENTRY(IFiltrateIE)

       COM_INTERFACE_ENTRY(IDispatch)

       COM_INTERFACE_ENTRY(IObjectWithSite)//¼ÓÈë

END_COM_MAP()

   

// IFiltrateIE

public

//ÏÂÃæÁ½¸ö·½·¨±ØÐëʵÏÖ

STDMETHOD(SetSite)(IUnknown *pUnkSite);

STDMETHOD(Invoke)(DISPID dispidMember,REFIID riid, LCID lcid, WORD wFlags,

                                          DISPPARAMS * pdispparams, VARIANT * pvarResult,

                                          EXCEPINFO * pexcepinfo, UINT * puArgErr);

private:

//ÏÂÃæÒ»¸ö·½·¨±ØÐëʵÏÖ

   enum ConnectType {Advise,Unadvise};

   BOOL ManageConnection(enum ConnectType action);

   CComQIPtr m_spWebBrowser2;

   HWND       m_hwndIE;

   DWORD m_dwCookie;

   BOOL       m_bDocComplete;

   BOOL m_test;

};

   

#endif //__FILTRATEIE_H_

// FiltrateIE.cpp : Implementation of CFiltrateIE

#include "stdafx.h"

#include "SafeIE.h"

#include "FiltrateIE.h"

   

#include

#include

#include

#include

#include

#include

/////////////////////////////////////////////////////////////////////////////

// CFiltrateIE

BOOL CFiltrateIE::ManageConnection(enum ConnectType action)

{

       if (!m_spWebBrowser2)

              return S_OK;

   

       HRESULT hr;

   

       CComQIPtr spCPContainer(m_spWebBrowser2);

   

       if (spCPContainer != NULL)

       {

              CComPtr spConnectionPoint;

   

              hr = spCPContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &spConnectionPoint);

              if (SUCCEEDED(hr))

              {

                     if (action == Advise)

                            // Advise the client site that we want to sink events

                            hr = spConnectionPoint->Advise((IDispatch*)this, &m_dwCookie);

                     else

                            // Remove us from the list of active sinks

                            hr = spConnectionPoint->Unadvise(m_dwCookie);

              }

       }

      

       return (SUCCEEDED(hr));

}

   

STDMETHODIMP CFiltrateIE::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,

                                DISPPARAMS* pDispParams, VARIANT* pvarResult,

                                EXCEPINFO*  pExcepInfo,  UINT* puArgErr)

{

       m_test=TRUE;

       if (!pDispParams)

              return E_INVALIDARG;

   

       CComPtr spDisp;

       HRESULT hr;

   

       switch (dispidMember)

       {

           case DISPID_BEFORENAVIGATE2:

   

                     m_bDocComplete = FALSE;

                     m_spWebBrowser2 = pDispParams->rgvarg[6].pdispVal;

   

                     hr = m_spWebBrowser2->get_Document(&spDisp);

                     if (SUCCEEDED(hr))

                     {

                     

                            CComQIPtr spHTML;

                            spHTML = spDisp;

   

                     //       if (spHTML)

                            //       RemoveDocument(spHTML);

                     }

                     break;

              

   

              case DISPID_NAVIGATECOMPLETE2:

   

   

                     //

/*                  if (m_spWebBrowser2){

                                   _bstr_t bsAddress=m_spWebBrowser2->GetLocationURL();

                             LPCTSTR str1,str2;

                                   str1="SolarSafe.htm";

                                   str2=(LPCTSTR)bsAddress;

                             if (strstr(str2,str1)!=NULL)

                                   {

                                    ShellExecute((HWND)m_spWebBrowser2->HWND,"open","C:\\solarsafe.htm",NULL,NULL,SW_SHOWNORMAL);

                                   }

*/   

                     break;

              

              // [0]: New status bar text - VT_BSTR

              //

              /*

              case DISPID_STATUSTEXTCHANGE:

                     break;

              */

              

              // [0]: Maximum progress - VT_I4

              // [1]: Amount of total progress - VT_I4

              //

              /*

              case DISPID_PROGRESSCHANGE:

                     break;

              */

              

              // [0]: Document URL - VT_BYREF|VT_VARIANT

              // [1]: An object that evaluates to the top-level or frame

              //      WebBrowser object corresponding to the event.

              case DISPID_DOCUMENTCOMPLETE:

       // Temporarily disable keyboard hook

       if(m_test)

                     {//ShellExecute(m_hwndIE,"open","C:\\solarsafe.htm",NULL,NULL,SW_SHOWNORMAL);

                  MessageBox(m_hwndIE, "AAAA", "A", MB_OK );

       //            m_spWebBrowser2->Quit();

                  m_test=FALSE;

                     }

                     // Fill in form if necessary

                     m_spWebBrowser2 = pDispParams->rgvarg[1].pdispVal;

   

                     // Get the WebBrowser's document object

                     hr = m_spWebBrowser2->get_Document(&spDisp);

                     if (SUCCEEDED(hr))

                     {  

                           

                            CComQIPtr spHTML;

                            spHTML = spDisp;

                     

   

              //            if (spHTML && DoFillIn(spHTML))

              //                   AddDocument(spHTML);

                     }

                     

   

                     m_bDocComplete = TRUE;

                     // Temporarily disable keyboard hook

              

   

                     break;

   

              // No parameters

              /*

              case DISPID_DOWNLOADBEGIN:

                     break;

              */

              

              // No parameters

              /*

              case DISPID_DOWNLOADCOMPLETE:

                     break;

              */

              

              // [0]: Enabled state - VT_BOOL

              // [1]: Command identifier - VT_I4

              //

              /*

              case DISPID_COMMANDSTATECHANGE:

                     break;

              */

              

              // [0]: Address of cancel flag - VT_BYREF|VT_BOOL

              //

              /*

              case DISPID_NEWWINDOW2:

                     break;

              */

              

              // [0]: Document title - VT_BSTR

              // [1]: An object that evaluates to the top-level or frame

              //      WebBrowser object corresponding to the event.

              //

              /*

              case DISPID_TITLECHANGE:

                     break;

              */

   

              // [0]: Name of property that changed - VT_BSTR

              //

              /*

              case DISPID_PROPERTYCHANGE:

                     break;

              */

   

              // [0]: Address of cancel flag - VT_BYREF|VT_BOOL

              //

              case DISPID_ONQUIT:

                     // Unregister the keyboard hook previously installed

                     // for this instance.

                 ManageConnection(Unadvise);

  

   

                     break;

   

              default:

  

                     break;

       }

   

       return S_OK;

}

   

   

   

STDMETHODIMP CFiltrateIE::SetSite(IUnknown *pUnkSite)

{

      if (pUnkSite != NULL)

       {

              // Query pUnkSite for the IWebBrowser2 interface.

              m_spWebBrowser2 = pUnkSite;

   

              if (m_spWebBrowser2)

              {

                     m_spWebBrowser2->get_HWND((long*) &m_hwndIE);

   

                     // We'll need the this pointer later when the keyboard

                     // hook will be called.

              //     if (!AddInstance(m_hwndIE, this, GetCurrentThreadId()))

                     //       FormWhizError(IDS_ERROR_TOOMUCHWINDOWS, errError);

   

                     // Connect to the browser in order to handle events.

                     if (!ManageConnection(Advise))

                            MessageBox(m_hwndIE, "AAAA", "A", MB_OK );

                            //       FormWhizError(IDS_ERROR_SINKINGFAILED, errError);

              }

   

      

       }

   

       return S_OK;

}

   

   

   

ÕÒµ½.rgsÎļþ£¬¼ÓÈë

HKLM

{

       SOFTWARE

       {

              Microsoft

              {     

                     Windows

                     {

                            CurrentVersion

                            {

                                   Explorer

                                   {

                                          'Browser Helper Objects'

                                          {

                                                 ForceRemove {B5D4581D-ED6A-4905-A267-25BAF7BE79C1} = s 'SafeIE Utility'

                                          }

                                   }

                            }

                     }

              }

       }

}

ÉϱߵÄ{B5D4581D-ED6A-4905-A267-25BAF7BE79C1}ÔÚÕâ¸öÎļþÖпÉÒÔÕÒµ½£¬×¢Ò⣬Äã×öµÄCSLID¿Ï¶¨²»Ò»Ñù¡£

[ Last edited by »ÃÓ°ÎÞºÛ on 2006-11-27 at 10:24 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

×öÈËÒªºñµÀ°¡£¡ºñµÀ°¡£¡
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ zsglly µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 297£¬¹¤¿Æµ÷¼Á? +4 ºÓÄÏũҵ´óѧ-ÄÜ 2026-04-14 4/200 2026-04-16 22:52 by wulijun2012
[¿¼ÑÐ] 294Çóµ÷¼Á +14 µ­È»654321 2026-04-15 14/700 2026-04-16 21:01 by lpl364211
[¿¼ÑÐ] 327Çóµ÷¼Á +26 Xxjc1107. 2026-04-13 29/1450 2026-04-16 10:52 by Espannnnnol
[¿¼ÑÐ] ҩѧר˶µ÷¼Á +9 ? һ·Éú?»¨? 2026-04-10 11/550 2026-04-16 10:49 by noqvsozv
[¿¼ÑÐ] Çóµ÷¼ÁѧУ +14 ²»»á³ÔÈâ 2026-04-13 16/800 2026-04-15 21:59 by noqvsozv
[¿¼ÑÐ] 085404 22408 309·ÖÇóµ÷¼Á +9 lzmk 2026-04-14 10/500 2026-04-15 20:02 by ѧԱJpLReM
[¿¼ÑÐ] 211±¾¿Æ²ÄÁÏ»¯¹¤Çóµ÷¼Á +19 YHLAH 2026-04-11 23/1150 2026-04-14 22:25 by fenglj492
[¿¼ÑÐ] 085408¹âµçÐÅÏ¢¹¤³Ìר˶355Ò»Ö¾Ô¸³¤´º¹â»úËùµ÷¼Á +6 Íõymaa 2026-04-13 13/650 2026-04-14 11:33 by Íõymaa
[¿¼ÑÐ] »úе»¹Óл¹ÓÐÃû¶îÂð£¿Ì«ÄÑÁË +8 ЦЦԬ 2026-04-10 8/400 2026-04-14 08:44 by screening
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¹¤´ó 085600 277 12²Ä¿Æ»ùÇóµ÷¼Á 5+5 chenny174 2026-04-10 37/1850 2026-04-14 07:39 by Abskk
[¿¼ÑÐ] Çóµ÷¼Á +3 ÎÒ°®¸ßÊý¸ßÊý°®Î 2026-04-12 3/150 2026-04-14 01:00 by Íõ¬Bè±
[¿¼ÑÐ] 302Çóµ÷¼Á +10 Ò×£¡? 2026-04-13 10/500 2026-04-13 19:04 by lbsjt
[¿¼ÑÐ] µ÷¼Á½áÊø +6 floriea 2026-04-12 8/400 2026-04-12 18:13 by zhouxiaoyu
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸²ÄÁÏ¿ÆÑ§Ó빤³Ì985£¬365·Ö£¬ +8 ²Ä»¯Àî¿É 2026-04-11 10/500 2026-04-12 08:42 by 852137818
[¿¼ÑÐ] 270Çóµ÷¼Á +14 ÑîÀÖ369 2026-04-11 14/700 2026-04-11 20:16 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤329·ÖÇóµ÷¼Á +16 Ò¶zilin 2026-04-10 16/800 2026-04-11 11:04 by may_ÐÂÓî
[¿¼ÑÐ] ũѧ0904 312Çóµ÷¼Á +6 Say Never 2026-04-10 6/300 2026-04-11 10:33 by wwj2530616
[¿¼ÑÐ] 263ÄÜÔ´¶¯Á¦×¨Ë¶Çóµ÷¼Á +4 ¼Ó´óºÅ·¹ºÐ´ü 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[¿¼ÑÐ] Ò»Ö¾Ô¸¾©Çø985£¬085401£¬Óë±¾¿Æ×¨ÒµÒ»Ö£¬µç×ÓÐÅÏ¢¹¤³Ì£¬ +4 Ñô¹â¿ªÀʵÄÄк¢ 2026-04-10 4/200 2026-04-10 18:27 by shenrf
[¿¼ÑÐ] 301Çóµ÷¼Á +5 149. 2026-04-10 5/250 2026-04-10 15:45 by ²ñС°×
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û