2009-06-07 35 views
0

在我的應用程序中,我想打開一個新的IE窗口,然後接收並處理DocumentCompleteNavigateComplete2從新打開的IE觸發的事件。在XP中,一切正常。在Vista中,新的IE在保護模式下運行,所以我的應用程序無法從IE接收DocumentCompelte事件。我可以使用ChangeWindowMessageFilter從Protected Mode IE接收DocumentComplete事件嗎?

我不想改變任何安全級別,像打開IE瀏覽器在保護模式下關閉或降低我的應用程序的完整性。我想知道是否可以使用ChangeWindowsMessageFilter從Protected Mode IE接收DocumentComplete和NavigateComplete2事件?我的代碼是這樣的:

ChangeWindowMessageFilter(DISPID_DOCUMENTCOMPELTE, MSGFLT_ADD); 
    ChangeWindowMessageFilter(DISPID_NAVIGATECOMPLETE2, MSGFLT_ADD); 

謝謝!

回答

1

號ChangeWindowMessageFilter()僅適用於窗口消息(WM_CREATE,例如)。

的DWebBrowserEvents2()「信息」通過COM調用調度接口的事件,並有無關窗口消息。

編輯:

documentation

如果你的應用程序中使用的CoCreateInstance和 互聯網 瀏覽器需要IE瀏覽器啓動後繼續控制 導航啓動,您 可以使用的IWebBrowser2導航 Internet Explorer以編程方式。 如果您的應用程序具有與啓動的IE進程 相同的 完整性級別,則只有在啓動IE後才能繼續控制 導航。一旦應用程序 導航不同 完整性IE進程中的URL,你不能 執行額外的導航。您 應導致 導航後可見的IE幀。

所以我懷疑你的犧牲品一些類似的問題。您需要將流程作爲低完整性流程運行,或者以更高的完整性級別運行Web瀏覽器。有關如何控制應用程序啓動方式(清單)的詳細信息,請參見document

如果你實際上並不需要一個完整的瀏覽器,可以考慮CoCreateInstance(CLSID_WebBrowser)

+0

有沒有辦法在Vista中打開阻塞的Dispinterface事件?謝謝! – bionicoder 2009-06-07 05:41:04

相關問題