使用SHDocVw.InternetExplorer编程,如何定位网页的显示位置?

jshzp 2011-10-15 11:59:32
用SHDocVw.InternetExplorer访问网页后,希望用代码将显示窗口移动到指定的位置,就如用WebBrowser控件编程时webBrowser1 .Document.Window .ScrollTo (new Point (100,100));所实现的那样。

因为SHDocVw.InternetExplorer和WebBrowser都是用IWebBrowser2接口,所以我在IE.DocumentComplete事件响应中写代码IE.Document.Window .ScrollTo (new Point (100,100));希望能达到目的。

但是VS智能提示Document属性:“(动态表达式)此操作将在运行时解析”,这和WebBrowser的情况就不一样了!再运行调试,则引发异常:“mshtml.HTMLDocumentClass”未包含“Window”的定义。

我的代码没写对吗?谢谢指教!

...全文
243 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jshzp 2011-10-17
  • 打赏
  • 举报
回复
采用this.Invoke调用
mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)IE.Document;
doc.parentWindow.window.scrollTo(200, 200);
这样就可以了,是什么原因呢?希望有高手能解释下其中的道理,谢谢!
山东蓝鸟贵薪 2011-10-16
  • 打赏
  • 举报
回复
不会,看看先
jshi123 2011-10-16
  • 打赏
  • 举报
回复
那你加上这句:
MessageBox.Show(IE.Document.GetType().ToString());
看看显示出来是什么类型?
jshzp 2011-10-16
  • 打赏
  • 举报
回复
代码修改如下:
IE.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(IE_DocumentComplete);

void IE_DocumentComplete(object pDisp, ref object URL)
{
try
{
mshtml.HTMLDocument doc = IE.Document;
doc.parentWindow.scrollTo(100,100);//引发异常“指定的转换无效。”
}
catch
{
}
}

调试发现,会catch到“指定的转换无效。”的异常。并且,最终网页也没能移动到指定的(100,100)的位置。会是什么原因呢?期待高手指教,谢谢!
jshi123 2011-10-16
  • 打赏
  • 举报
回复
添加引用msthml.dll, 然后:
mshtml.HTMLDocument doc = ie.Document;
这样就可以有智能感知了。窗口滚动应该是:
doc.parentWindow.window.scrollTo(100, 100);

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧