利用IEHelper實現簡單網址過濾

 

利用IEHelper實現簡單網址過濾
作者:譚昕

下載本文示例源代碼

Microsoft爲"我的電腦",IE流瀏覽器都設置了接口,只要你註冊一個自己定義的COM DLL庫,windows 在IE啓動的時候都會調用這個DLL,(相當於掛鉤了),所以你在你的DLL文件中對輸入的網址進行處理了! 下載一個IEhelper,IE瀏覽網頁的時候有幾個事件要發生:
ID分別爲:
DISPID_BEFORENAVIGATE2
DISPID_NAVIGATECOMPLETE2
DISPID_DOWNLOADBEGIN
DISPID_DOWNLOADCOMPLETE
DISPID_DOCUMENTCOMPLETE
等等,所以你只有你在ID爲DISPID_BEFORENAVIGATE2的事件中做處理,你就可以實現過濾了! 部分代碼如下:

//因爲IEhelper會在explorer.exe和iexplorer.exe啓動時加載,
//所以這裏設置只允許iexplorer.exe加載這個DLL
TCHAR Loader[MAX_PATH];
GetModuleFileName( NULL, Loader, MAX_PATH);
for ( int i = lstrlen( Loader); i > 0; i--)
if ( Loader[i] == _T(''''//''''))
{
lstrcpy( Loader, Loader + i + 1);
break;
}
if ( lstrcmpi( Loader, _T("iexplore.exe")) != 0 &&
lstrcmpi( Loader, _T("regsvr32.exe")) != 0)
return FALSE;
//設置網址過濾
case DISPID_BEFORENAVIGATE2:
char *str;
if (pDispParams->cArgs >= 5 && pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
{
CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
varURL.ChangeType(VT_BSTR);
//轉化要訪問的網址爲char *型
str = OLE2A(varURL.bstrVal);
}

//如果正要訪問的網址爲要被攔截的,則stop
if(strstr(str,"www.163.net")!=NULL)
{
*pDispParams->rgvarg[0].pboolVal = TRUE;
MessageBox(NULL,"當前系統禁止瀏覽該頁","警告",MB_ICONSTOP);
return S_OK;
}
break;
詳細請參考源代碼
注意:
加載這個DLL用:regsvr32 x:/xx/iehelper.dll
卸載用:regsvr32 /u x:/xx/iehelper.dll
x就是你的安置目錄,這個dll和3721網絡實名衝突,估計它也是採用這個技術。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章