我已经成功的Hook到了CoCreateInstance函数,但是在IE7里面,我不知道到底哪一次调用才是创建IWebBrowser2的调用,望高手指教……

解决方案 »

  1.   

    需要判断CLSID是不是CLSID_WebBrowser或者CLSID_InternetExplorer
      

  2.   

    同上,另外在HOOK后的该函数内,查看LOCAL编译器会显示出该CLSID的信息。
    另外要HOOK IWebBrower2的方法的话,其实可以自己创建一个,得到这个接口对象指针,在虚函数表上跑。
      

  3.   

    可是在IE7创建一个新标签的过程中,为什么我用IsEqualCLSID进行判断,却找不到任何一个CLSID是CLSID_WebBrowser或者CLSID_InternetExplorer 的创建?
      

  4.   

    CLSID_Microsoft Web Browser
    或者比较IID为IID_IWebBrower2仍推荐在HOOK后的COCREATE函数被调用时查看CLSID以及IID,比瞎猜强些
      

  5.   

    现在的情况是,整个IE7一个新标签的创建过程中,没有满足CLSID是CLSID_WebBrowser或者CLSID_InternetExplorer 的调用…………我现在用一个折中的办法,就是改成hook CreateWindowEx 函数……可是还是不理解为什么CoCreateInstance不行……
      

  6.   

    可以HOOK CoGetClassObject可以看到CLSID_HTML Document和CLSID_ShellWindows
      

  7.   

    另外我测试HOOK了一下CLSID_HTML Document 类场对象的CreateInstance com方法发现每次打开标签页都会触发,可以在产生的接口对象处查询IHTMLDocument