关于 使用MSHTML.Document对像提交表单后弹出IE窗口

lorl2 2008-08-06 07:16:00
我的代码如下:



Private Sub Command2_Click()
Dim objDoc As MSHTML.HTMLDocument
Dim objForm As MSHTML.HTMLFormElement
Dim szHTML As String

Set objDoc = New MSHTML.HTMLDocument
'将HTML文件数据到字符串变量
szHTML = LoadHtmlFromFile("c:\test.htm")
'将HTML字符串写入Document对像
CallByName objDoc, "write", VbMethod, szHTML
'获取表单对像
Set objForm = objDoc.getElementById("表单名")
'.......这里对表单内的控件操作

'.........................
'提交表单
objForm.submit '!!! 为什么执行到这一行后,我的程序里无缘无故弹个IE窗口出来?
' 这不是我想要的.我想submit()后,
' 取得MSHTML处理过的数据,再自己用Socket提交

Set objForm = Nothing
Set objDoc = Nothing
End Sub





是不是要实现什么接口?
希望各位VC的兄弟能够指点一下
...全文
157 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lorl2 2008-08-21
  • 打赏
  • 举报
回复
谢谢.
jameshooo 2008-08-20
  • 打赏
  • 举报
回复
很遗憾,对mshtml的内部我也不太熟,我也想了解细节,曾经参考过wine,但是不完整
lorl2 2008-08-20
  • 打赏
  • 举报
回复
嘿嘿,俺对MSHTML内部不是很了解..


mshtml压根不支持导航,所以才会启动IE.

而我的目的也不是要它来导航.如果在form.submit()后,不想它自己去导航(我接管通信)的话,我要实现哪一些接口给它呢?
jameshooo 2008-08-20
  • 打赏
  • 举报
回复
跟你说了,mshtml压根不支持导航,form.submit就是一种导航操作,在默认实现里因为你没有实现相关接口(比如IHLink等等),它只能启动默认浏览器来打开新页面。
lorl2 2008-08-20
  • 打赏
  • 举报
回复
你的这个方法可以从IMoniker 那里的URL加载源文件到IHTMLDocument2,但是如果我接下来控制这个文档对像里的FORM表单提交时,还是会弹出IE窗口.

不过却解决了我刚碰到的另一个问题.
lorl2 2008-08-19
  • 打赏
  • 举报
回复
能给个 从文档获取IPersistMoniker接口再调用Load方法,前提是你要自己准备IBindCtx和IMoniker接口

的小程序吗,伪代码也行
jameshooo 2008-08-19
  • 打赏
  • 举报
回复
每个接口的资料在MSDN里都有,可惜介绍接口之间关系的资料就太少了
lorl2 2008-08-19
  • 打赏
  • 举报
回复
从文档获取IPersistMoniker接口的话,应该怎么样准备IBindCtx和IMoniker接口?它里面的涵数方法和参数返回值等是怎么样的.

大侠有没有这方面的文档资料或教程.
jameshooo 2008-08-19
  • 打赏
  • 举报
回复
CreateURLMoniker --> IMoniker
CreateBindCtx --> IBindCtx
IHTMLDocument2::QueryInterface --> IPersistMoniker
IPersistMoniker::Load

wait for IHTMLDocument2::get_readyState == "complete"
DOM of IHTMLDocument2 is avail now.
jameshooo 2008-08-18
  • 打赏
  • 举报
回复
mshtml自带通信功能,包括发出请求、接收响应、数据绑定、状态修复、DOM解析、脚本执行、页面渲染等等,除了不带导航,所有基础功能都已经包含了,问题在于自己控制导航也是一件很不容易的事情。
仅使用mshtml倒是简单,直接创建一个IHTMLDocument2接口,但是导航相对复杂,你可以从文档获取IPersistMoniker接口再调用Load方法,前提是你要自己准备IBindCtx和IMoniker接口。
lorl2 2008-08-18
  • 打赏
  • 举报
回复
我不需要它的导航功能

我想要的是,当我激发MSHTML提交的时候,能够获取到它产生的数据(如相关的HTTP头,实体).然后再由我决定是不是采取SOCKET与远程主机通信.

MSHTML在这里仅仅扮演一个解析器的角色.
jameshooo 2008-08-08
  • 打赏
  • 举报
回复
问题在于mshtml本身不支持导航,要加入导航功能可能会耗费你较多的精力
lorl2 2008-08-08
  • 打赏
  • 举报
回复
浏览器控件太耗资源了,而且长时间运行的话占用更大.所以想绕过WebBrowser控件直接用MSHTML解析
jameshooo 2008-08-07
  • 打赏
  • 举报
回复
你直接使用了trident引擎来导航,处理起来是比较复杂的,不建议使用,还是建议你使用浏览器控件就不会发生这种事情,form提交是不会打开新窗口的
lorl2 2008-08-07
  • 打赏
  • 举报
回复
就是我的表单提交后,WWW服务返回来的数据
jameshooo 2008-08-06
  • 打赏
  • 举报
回复
弹出的IE窗口显示的是什么内容?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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