人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術開發(fā)教程 > 詳細頁面

IE里的探索之定制瀏覽器好助手(中1)

IE里的探索之定制瀏覽器好助手(中1)

更新時間:2021-04-20 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

IE里的探索之定制瀏覽器好助手(中)
(作者:青蘋果工作室編譯 2001年02月08日 14:00)

檢測調(diào)用者
  像前面提到的,如果你運行的外殼版本不低于471,BHO 就既能被Internet Explorer又能被Windows Explorer引用。在這個例子里,我們要是涉及一個專對 HTML 頁面起作用的助手對象,所以它應該對 Windows Explorer 不起任何作用。一個不想被特定的調(diào)用者加載的 DLL 可以在它發(fā)現(xiàn)誰是調(diào)用者后,簡單地在它的 DllMain() 函數(shù)中返回 False。當你將 NULL 作為 API 函數(shù) GetModuleFileName() 的第一個參數(shù)調(diào)用它時,它返回調(diào)用 DLL 的模塊名。這個參數(shù)是你想知道名字的模塊的句柄。NULL 表示你想知道調(diào)用 DLL 的進程的名字。

  if (dwReason == DLL_PROCESS_ATTACH)

  {

   TCHAR pszLoader[MAX_PATH];

   GetModuleFileName(NULL, pszLoader, MAX_PATH);

   _tcslwr(pszLoader);

   if (_tcsstr(pszLoader, _T("explorer.exe")))

   return FALSE;

  }

  你知道了進程的名字,你就能在它是 Windows Explorer 時退出加載過程。注意采取更嚴格的淘汰是很危險的。實際上,其它進程可能視為一個正常的原因調(diào)用它但被拒絕。第一個受害者是 regsvr32.exe,這個程序用來自動注冊對象。如果 你是用不同的測試條件,比如說,只允許 Internet Explorer 可以執(zhí)行:

   if (!_tcsstr(pszLoader, _T("iexplore.exe")))

  你就不能注冊 DLL 了。實際上,當 regsvr32.exe 試圖加載 DLL 以調(diào)用DllRegisterServer() 函數(shù)時,調(diào)用被拒絕。

同 WebBrowser 建立聯(lián)系
  SetSite() 方法是 BHO 進行初始化以及所有只進行一次任務的地方。當你用 Internet Explorer 瀏覽 URL 時,你需要等待一對事件以確保所需的文檔被完全下載并被初始化。只有在這一位置上你能通過可能存在的對象模型安全地訪問它的 內(nèi)容。這表示你需要獲得一對指針。第一個是指向 IWebBrowser2 的,它是處理 WebBrowser 對象的接口。第二個指針和事件有關。這個模塊必須注冊為瀏覽器的事件監(jiān)聽者,以便能夠接收關于下載和文檔相關事件的通知。通過使用 ATL 的靈巧指針:

  CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> m_spWebBrowser2;

  CComQIPtr<IConnectionPointContainer,

     &IID_IConnectionPointContainer> m_spCPC;

  源代碼類似于:

  HRESULT CViewSource::SetSite(IUnknown *pUnkSite)

  {

   // 獲得并保存 IWebBrowser2 指針

   m_spWebBrowser2 = pUnkSite;

   if (m_spWebBrowser2 == NULL)

   return E_INVALIDARG;

   // 獲得并保存 IConnectionPointerContainer 指針

   m_spCPC = m_spWebBrowser2;

   if (m_spCPC == NULL)

   return E_POINTER;

   // 獲得并保存瀏覽器的 HWND。另外為以后的使用安裝鍵盤掛鉤。

   RetrieveBrowserWindow();

   // 連接到容器以接受事件通知

   return Connect();

  }

  要獲得指向 IWebBrowser2 接口的指針,你只需要簡單地查詢。對事件處理的第一個步驟,獲得 IConnectionPointContainer 的指針,也用同樣的辦法。SetSite() 的代碼也查詢?yōu)g覽器的 HWND 并在當前線程上安裝鍵盤掛鉤。HWND 以后會被用以移動 Internet Explorer 窗口并改變它的尺寸。那個掛鉤,被用以提供一個熱鍵,以方便用戶顯示或隱藏 HTML 代碼窗口。 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 阜南县| 昌邑市| 华阴市| 长汀县| 永春县| 永仁县| 巴林右旗| 奉节县| 精河县| 孙吴县| 宝山区| 沛县| 菏泽市| 海宁市| 那坡县| 宜良县| 名山县| 双柏县| 团风县| 清流县| 丰镇市| 大庆市| 元氏县| 乐都县| 平和县| 新津县| 阿勒泰市| 许昌县| 宽甸| 利川市| 中宁县| 太仓市| 武鸣县| 凤翔县| 金湖县| 壶关县| 淄博市| 监利县| 攀枝花市| 许昌县| 根河市|