我正在使用PassthruAPP方法挂钩IE所做的HTTP/HTTPS请求.
它在大多数情况下都运行良好,但我注意到了一个问题.一次只有一个下载线程是活动的,通常IE使用两个下载线程.我可以看到两个IInternetProtocol对象被创建,但IE一次只使用一个.
IE7正在发生这种情况,我还没有尝试过其他版本.
问题似乎是当IE IInternetSession::RegisterNameSpace被调用任何默认处理程序时,IE会一次回退一个项目.即使我正在注册HTTPS处理程序,下面的代码也会导致HTTP下载顺序.注册'file://'会导致同样的问题.
CComPtr<IInternetSession> spSession;
CoInternetGetSession(0, &spSession, 0);
MetaFactory::CreateInstance(CLSID_HttpSProtocol, &m_spCFHTTPS);
spSession->RegisterNameSpace(m_spCFHTTPS, CLSID_NULL, L"https", 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)
这总是发生在页面上的前几个项目中,但似乎在发布文档完成后,可以再次发生并发下载.例如,在页面加载完成后执行的Javascript代码可以同时加载图像.
我有点困惑,也许你可以帮助我.
我有mshtml.dll(版本8.0)和Microsoft.mshtml.dll(版本7.0)
如果我去添加对我的WPF项目的引用并尝试添加mshtml.dll,它会告诉我引用必须是有效的程序集或com组件.这是正确的,因为我知道我必须添加对Microsoft.mshtml.dll的引用,因为它是mshtml.dll的包装器,我是对的吗?
现在,我的mshtml.dll版本是8.0,Microsoft.mshtml是7.0.
我在哪里可以找到8.0版本的Microsoft.mshtml.dll?
如果我添加了Microsoft.mshtml.dll的7.0,它将运行mshtml 8 dll的功能?
他们为什么不同?
非常感谢Jayson
我试图在C#WebBrowser控件(WPF而不是WinForm)中加载一个网页.与其他内容一起,页面具有图像旋转器,其动态地创建具有相同类的两个div以利用旋转的图像.在LoadComplete eventWebBrowser控件中,我附加了一个样式表来隐藏两个div.动态加载页面的两个div是:
<div class="backgroundImageDivsClass" style="
width: 100%;
height: 100%;
position: fixed;
top: 0px;
left: 0px;
padding: 0px;
margin: 0px;
z-index: -9999;
opacity: 1;
background-image: url("data/767/Course/9214/1000000001_474030834.jpg");
background-position: left top;
background-size: 100% 100%;
background-repeat: no-repeat;
"></div>
<div class="backgroundImageDivsClass"></div>
Run Code Online (Sandbox Code Playgroud)
并且在webbrowser控件的LoadComplete事件中分配css的方式是:
mshtml.IHTMLStyleSheet styleSheet = Document.createStyleSheet(string.Empty, 0);
styleSheet.cssText = @".backgroundImageDivsClass{display:none;}";
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,因为它没有隐藏div.有人请告诉我一些我缺少的东西.
我想使用MSHTML [1]来访问IE中的DOM,但我刚刚发现它缺少HTML文档类中的querySelector和querySelectorAll方法,否则将非常有助于通过CSS选择器获取文档中的元素.
我现在能想到的唯一解决方法是通过执行脚本来完成所有操作,但这很糟糕.
是否有任何MSHTML版本有两个方法(querySelector和querySelectorAll)?是否有其他库(希望是Microsoft的官方.Net库),其中有两种方法或它们的等价物?
[1]%ProgramFiles(x86)%\ Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll