18.10.2日报

1,大概搞明白activex控件的运行流程了。不过还是没跑起flash。

原来昨天提到的CPluginSite,只是用来加载plugin.ocx,再模拟npapi的。

实际的<object>代码在

COleSite和\win2k\private\inet\mshtml\src\site\ole\eobject.cxx

其中COleSite是基类。

下面是个堆栈:

     Flash32_22_0_0_210.ocx!0560e5ae()    未知
     [下面的框架可能不正确和/或缺失,没有为 Flash32_22_0_0_210.ocx 加载符号]    
>    mshtml.dll!COleSite::LoadObject(struct IPropertyBag *)    未知
     mshtml.dll!COleSite::CreateObjectNow(struct _GUID const &,struct IUnknown *,struct COleSite::OLECREATEINFO *)    未知
     mshtml.dll!CCodeLoad::OnObjectAvailable(struct _GUID const &,struct IUnknown *)    未知
     mshtml.dll!CCodeLoad::BindToObject(void)    未知
     mshtml.dll!CCodeLoad::Init(class COleSite *,struct COleSite::OLECREATEINFO *)    未知
     mshtml.dll!COleSite::CreateObject(struct COleSite::OLECREATEINFO *)    未知
     mshtml.dll!CObjectElement::FinalCreateObject(unsigned short const *)    未知
     mshtml.dll!CObjectElement::CreateObject(void)    未知
     mshtml.dll!CHtmObjectParseCtx::Execute(void)    未知
     mshtml.dll!CHtmParseBase::Execute(void)    未知
     mshtml.dll!CHtmPost::Exec(unsigned long)    未知
     mshtml.dll!CHtmPost::Run(unsigned long)    未知
     mshtml.dll!PostManExecute(struct THREADSTATEUI *,unsigned long,class CHtmPost *)    未知
     mshtml.dll!PostManResume(class CHtmPost *,int)    未知
     mshtml.dll!CHtmPost::OnDwnChanCallback(void *,void *)    未知
     mshtml.dll!CDwnChan::OnMethodCall(unsigned long)    未知
     mshtml.dll!GlobalWndOnMethodCall(void)    未知
     mshtml.dll!GlobalWndProc(struct HWND__ *,unsigned int,unsigned int,long)    未知
     user32.dll!_InternalCallWinProc@20()    未知
     user32.dll!_UserCallWinProcCheckWow@32()    未知
     user32.dll!_DispatchMessageWorker@8()    未知
     user32.dll!_DispatchMessageW@4()    未知
     testdll.exe!wWinMain(HINSTANCE__ * hInstance=0x00110000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x006f2ae2, int nCmdShow=0x0000000a) 行 472    C++
     testdll.exe!invoke_main() 行 128    C++
     testdll.exe!__scrt_common_main_seh() 行 264    C++
     testdll.exe!__scrt_common_main() 行 309    C++
     testdll.exe!wWinMainCRTStartup() 行 17    C++
     kernel32.dll!@BaseThreadInitThunk@12()    未知
     ntdll.dll!___RtlUserThreadStart@8()    未知
     ntdll.dll!__RtlUserThreadStart@8()    未知

 

可以看出会先走个网络流程,判断ocx是否需要网络下。如果不需要,就loadobject。这个是以IPropertyBag为参数的。

这个IPropertyBag是表示<PARAM>.

目前在把N多缺少的com接口,如class CHTMLDocument都实现后,可以发现昨天没跑到的CPropertyBag跑到了。也就是说flash去读了参数列表了。但还是不知道为何没加载成功

阅读更多

没有更多推荐了,返回首页