中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      如何用HOOK函數關閉IE廣告窗口

      時間:2024-07-22 05:45:17 ACCP培訓 我要投稿
      • 相關推薦

      如何用HOOK函數關閉IE廣告窗口

        很多時候廣告窗口都很煩人,YJBYS小編下面為你整理了如何用HOOK函數關閉IE廣告窗口的方法,希望對你有所幫助。

        1、彈出式廣告框也是IE瀏覽窗口,一般來說,它是一個無菜單、無工具欄窗口。所以可以在桌面上打開一個窗口時,首先判斷該窗口類型是否是“IEFrame”,接著判斷IEFrame的子窗口類型“WorkerW”的屬性是否是不可見(這是一般彈出式廣告窗口的特征),這樣就可以向該窗口發出關閉的消息,以上步驟一般能自動關閉大部分彈出廣告框。

        2、通過WINDOWS編程中的鉤子(HOOK)函數解決截獲在桌面上打開窗口的消息。鉤子函數的基本原理就是對WINDOWS系統的某些動作注冊,當發生這些事件時首先調用預先設置的回調函數,回調函數處理后,再由原來的函數處理。這里回調函數的作用正是實現1中敘述的功能。因為這里實現的鉤子函數是監視其它進程窗口產生的消息,所以必須用動態鏈接庫實現。

        主要代碼如下:

        在動態鏈接庫中,實現鉤子回調函數。

        LRESULT CALLBACK CallWndProc(

        int nCode, // hook code

        WPARAM wParam, // current-process flag

        LPARAM lParam // address of structure with message data

        )

        {

        CWPSTRUCT *pCwp = NULL;

        CString strClassName;

        HWND hWnd = NULL;

        unsigned long ulStyle = 0;

        BOOL bIsClosed = FALSE;

        if (nCode < 0)

        {

        return CallNextHookEx(gHook, nCode, wParam, lParam);

        }

        if (NULL != lParam)

        {

        pCwp = (CWPSTRUCT *)lParam;

        if (WM_SHOWWINDOW == pCwp->message)

        {

        ::GetClassName(pCwp->hwnd, strClassName.GetBufferSetLength(128), 128);

        //IE窗口的類型為IEFrame

        if (0 == strClassName.CompareNoCase("IEFrame"))

        {

        hWnd = ::GetWindow(pCwp->hwnd, GW_CHILD);

        if (NULL == hWnd)

        {

        bIsClosed = TRUE;

        }

        while (NULL != hWnd)

        {

        ::GetClassName(hWnd, strClassName.GetBufferSetLength(127), 127);

        //IEFrame的子窗口包含窗口類型WorkerW

        if (0 == strClassName.CompareNoCase("WorkerW"))

        {

        //若WorkerW不可見,則一般是廣告彈出窗口

        if (0 == (::GetWindowLong(hWnd, GWL_STYLE) & WS_VISIBLE))

        {

        bIsClosed = TRUE;

        break;

        }

        break;

        }

        else

        {

        bIsClosed = TRUE;

        }

        hWnd = ::GetWindow(hWnd, GW_HWNDNEXT);

        }

        //若是IE廣告彈出窗口,則關閉

        if (TRUE == bIsClosed)

        {

        ::PostMessage(pCwp->hwnd, WM_CLOSE, 0, 0);

        }

        }

        }

        }

        return CallNextHookEx(gHook, nCode, wParam, lParam);

        }

        在主程序中,調用DLL中的CallWndProc。

        //獲得動態鏈接庫句柄

        HINSTANCE hmodHook = GetModuleHandle("CloseWndDll.dll");

        if (NULL == hmodHook)

        {

        return TRUE;

        }

        //設置鉤子函數

        if (NULL == gHook)

        {

        gHook = SetWindowsHookEx(WH_CALLWNDPROC,

        (HOOKPROC)GetProcAddress(hmodHook, "CallWndProc"), hmodHook, 0);

        }

        主程序退出時,注意調用鉤子卸載函數。

        //卸載鉤子函數

        if (NULL != gHook)

        {

        UnhookWindowsHookEx(gHook);

        gHook = NULL;

        }

      【如何用HOOK函數關閉IE廣告窗口】相關文章:

      有關javascript在IE下trim函數無法使用的解決方法08-19

      怎么關閉硬件加速09-01

      怎么刪除桌面ie圖標09-13

      fireworks關閉隱藏邊緣選項的方法06-15

      如何關閉電腦遠程桌面08-18

      如何用丹田唱歌06-23

      網頁編程語言禁止IE緩存08-10

      編寫JavaScript函數10-24

      PHP的壓縮函數06-21

      Javascript 函數的學習09-11

      主站蜘蛛池模板: 久久99老妇伦国产熟女高清| 亚洲免费无毛av一区二区三区| 精品理论一区二区三区| 人妻中出精品久久久一区二| av毛片在线播放网址| 安徽省| 伊人中文字幕在线乱码| 黑人巨大亚洲一区二区久| 一区二区丝袜美腿视频| 齐河县| 视频精品亚洲一区二区| 精品日韩欧美一区二区三区在线播放| 国产精品亚洲一区二区极品| 曲沃县| 四川省| 久久99国产亚洲高清观看首页| 国产精品久久婷婷婷婷| 日韩狼人精品在线观看| 国产精品一区二区久久毛片| 西林县| 国产亚洲成年网址在线观看| 久久se精品一区二区国产| 91福利精品老师国产自产在线| 国产精品久久久久亚洲| 榆社县| 乐业县| 开封市| 达拉特旗| 精品在免费线中文字幕久久| 绍兴县| 鲜城| 久久青草亚洲AV无码麻豆| 宿州市| 文登市| 阳泉市| 另类人妖在线观看一区二区 | 国产精品乱子伦一区二区三区 | 太白县| 五指山市| 交城县| 日韩在线观看中文字幕一区二区|