100分:Webbrowser与DDE的困惑

hpygzhx520 2007-09-06 09:43:39
当我们用Webbrowser打开一个网页的时候,如果不处理Webbrowser的任何事件,那么里面产生的新窗口默认会用IE打开的.当然也可能是其他浏览器……

详细描述见这里:
http://community.csdn.net/Expert/topic/5726/5726382.xml?temp=.2280084

问题是Webbrowser启动浏览器之后是如何将地址传递过去的?研究了一些资料,应该是用DDE来实现,但Webbrowser与浏览器之间具体的通讯是怎样的呢?用的是哪个DDE主题?我们有没有办法监视一个程序的DDE动作?

谢谢,期待回复。

...全文
873 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ__27742190 2008-04-14
  • 打赏
  • 举报
回复
结论到底是什么呀?
supergreenbean 2007-09-22
  • 打赏
  • 举报
回复
amen,这帖子终于好关了
hpygzhx520 2007-09-21
  • 打赏
  • 举报
回复
再顶一次,不知道大家是不会还是不愿意指点……
hpygzhx520 2007-09-19
  • 打赏
  • 举报
回复
值得注意的是WebBrowser并不是我们自己程序中的,而是外部程序的.比如QQ迷你网页.
嗷嗷叫的老马 2007-09-18
  • 打赏
  • 举报
回复
好久没来了,再帮你顶一下
hpygzhx520 2007-09-18
  • 打赏
  • 举报
回复
70%差不多是这个意思
但最终结果却是想要用某个程序(我们编写的浏览器了)替换IE打开.
也就是说,当从一个没有处理任何事件的WebBrowser控件点了一个超链接的时候,不要让IE打开,用我自己的浏览器打开

感谢关注.
vansoft 2007-09-18
  • 打赏
  • 举报
回复
我简化一下楼主的问题,是不是这样:

你用WebBrowser控件打开了一个网页,
别人在这个网页上点了一个连接,
出现IE新窗口打开了这个连接,
你想的是别人点的时候知道的个URL?

如果是这样,很简单的问题,
早就有人解决了,而已网上有源码,我也收藏过。
hpygzhx520 2007-09-17
  • 打赏
  • 举报
回复
据说要创建一个internetexplorer.application来接收……

实在不懂,再顶!!!
hpygzhx520 2007-09-12
  • 打赏
  • 举报
回复
随便用一个webbrowser打开一个本地文件夹,然后在某个文件夹上右键,选搜索,这个时候跳出资源管理器的搜索窗口.用DDESPY监视这个过程,发现的确使用了DDE,但打开网页的情况却没有DDE的消息.所以现在连是否使用DDE都不确定.

各位大侠,指点一下吧……
hpygzhx520 2007-09-11
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/189634/en-us

这个应该是最接近真相的了,可惜不是很懂。
如果仅处理DDE消息部分应该是不行的,因为客户端似乎不会发送DDE消息。而这个代码是C++的,我也看不明白核心在哪里。初始化DDE、注册DDE服务器之后也不见有什么消息。
代码中涉及IID_IWebBrowser2这些代码难道就是获取客户端webbrowser的关键?

CSDN藏龙卧虎,哪位熟悉的指点或者用VB实现来看看,不胜感激。
hpygzhx520 2007-09-11
  • 打赏
  • 举报
回复
呵呵,感谢关注.
事情是这样的:
如果是自己的程序,MS说这样:
Private Sub WebBrowser1_NewWindow2(ppDisp As Object,Cancel As Boolean)
Dim frmWB As Form1
Set frmWB = New Form1
frmWB.WebBrowser1.RegisterAsBrowser = TRUE
Set ppDisp = frmWB.WebBrowser1.Object
frmWB.Visible = True
End Sub
这样是很方便的就可以"让自己的窗口里面打开新窗口的时候还打开自己的程序。"

至于接管,我觉还不是很准确,就算千方百计获得调用我们程序的webbrowser对象,但等我们的程序启动起来之后,NewWindow2早发生过了……,只有再次点击连接,我们才能打开(前提是已经获得了这个webbrowser)

上面这个VC的代码如果研究通了,应该是差不多的了。我不懂C,粗略看看,大约就是这个意思。只是代码演示的是本地文件夹而已。而所面临的问题是一样的:比如在webbrowser里面显示的本地文件夹上 右键、搜索,就能打开资源管理器的搜索窗口并定位到你所选择的文件夹上。而这个过程是如何传递的呢?这个代码大约就是演示这个过程。

至于DDE,想来想去,觉得也有些道理的。以上这个代码也用到了DDE。
iget 2007-09-11
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/q160957/
这里有个ie支持的dde列表。
在我的程序里,似乎打开新窗口以后webbrowser并没有调用navigate,
可能还是需要dde操作?
我正在研究ie的dde,看看能不能在vb中调用。最终让自己的程序顺利打开链接。
不过还没有什么头绪。
如果可以,我会再来告诉你。
iget 2007-09-11
  • 打赏
  • 举报
回复
我用vb继承webbrowser
捕捉newwindow2事件,然后构建自己的类。
可以让自己的窗口里面打开新窗口的时候还打开自己的程序。
但是怎么让我的程序接管ie,就不太清楚。
那个vc我下下来了。看起来头晕。留着慢慢看。
  • 打赏
  • 举报
回复
mark
嗷嗷叫的老马 2007-09-08
  • 打赏
  • 举报
回复
帮你顶一下,你连发三帖了,嘿嘿.....
hpygzhx520 2007-09-08
  • 打赏
  • 举报
回复
没有办法,自己再顶!
hpygzhx520 2007-09-07
  • 打赏
  • 举报
回复
另外一个说法是OLE:
http://phxwang.spaces.live.com/blog/cns!124EE0DC29D30DC6!114.entry

但也没说具体应该如何……
hpygzhx520 2007-09-07
  • 打赏
  • 举报
回复
现在就是极度没有头绪,期待高人……
iget 2007-09-07
  • 打赏
  • 举报
回复
我没有QQ,公司不让上班聊天。
上CSDN也是冒险啊。
如果你有结论,记得拿来跟大家分享。
iget 2007-09-06
  • 打赏
  • 举报
回复
我怀疑是 IWebBrowser2 这个接口,前面写错了。
不过不知道firefox会不会去实现这个接口。
或者浏览器实现另有玄机?
加载更多回复(11)

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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