网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月19日漏签0天
vb吧 关注:156,090贴子:1,166,221
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 9回复贴,共1页
<<返回vb吧
>0< 加载中...

高难:神秘莫测的NewWindow2!

  • 只看楼主
  • 收藏

  • 回复
  • 璐村惂鐢ㄦ埛_0QG84eR馃惥
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题的起源:设置自己喜欢的浏览器为系统绝对默认的浏览器。
(修改.http等关联不是重点)

探索过程:
请看测试程序1:
Private Sub Form_Load()
WebBrowser1.Navigate "www.sina.com.cn"
End Sub
就这么一行代码,其他不做任何处理。当WebBrowser1打开网页后,随便点一个会打开新窗口的超链接,这个时候会发生什么事情?通常情况是IE打开了这个窗口。我们都知道新窗口是在WebBrowser1_NewWindow2事件中发生的,但为什么会打开IE呢?那一定是通过某种途径通知了IE。
继续研究,发现通知到这里:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0002DF01-0000-0000-C000-000000000046}\LocalServer32
起值="C:\Program Files\Internet Explorer\iexplore.exe"
调用的方式大约是Shell C:\Program Files\Internet Explorer\iexplore.exe -Embedding

为了证明我的猜测,请看测试程序2:
Private Sub Form_Load()
MsgBox Command
End Sub
用以监视调用参数,将其编译为c:\app2.exe,然后将上述注册表的值修改为c:\app2.exe,再在测试程序1中随便点一个会打开新窗口的超链接,这个时候又会发生什么事情?没有打开IE了,app2.exe执行了,并且MsgBox显示-Embedding,由此证明了调用的流程:没有处理WebBrowser1_NewWindow2的情况下,调用了HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0002DF01-0000-0000-C000-000000000046}\LocalServer32所指向的程序,带参数-Embedding

那问题就来了,当LocalServer32=IE或MT的时候,IE和MT等浏览器为什么能正确打开呢?请注意这里带的参数是-Embedding而并不是暴露的URL地址。

似乎唯一的解释就是IE和MT等在发现带-Embedding这个参数调用的时候从某个接口等获得了WebBrowser1_NewWindow2的ppDisp或URL。

而我们自己写的程序如何做到这一点呢?就象上面的测试程序2,当检测到-Embedding这个参数的时候如何正确打开呢?

请各路英雄详加指点,不胜感激!

-----------------------------------------------------
别人对我的有用的回复:
http://support.microsoft.com/kb/q160957/
-----------------------------------------------------

但我实在实现不了,无法检测到DDE……


  • gcyun
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
连-Embedding参数你都可以猜出来 你太有才


2025-08-19 15:54:04
广告
不感兴趣
开通SVIP免广告
  • gcyun
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实际上只要设置一个默认浏览器就可以了

[HKEY_CLASSES_ROOT\HTTP\shell\open\command]
@="你的浏览器路径"


  • gcyun
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
另外还要处理command参数
这个参数就是一个url


  • 222.66.101.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
各位,检测到的参数只有-Embedding!
至于HKEY_CLASSES_ROOT\HTTP\shell\open\command,这个我知道,但针对目前的问题,这个根本不是关键


  • gcyun
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
要想知道-Embedding参数的秘密 只有看IE的源码

我猜IE也是处理的NewWindow2 来打开的新窗口
embedding的参数应该另有其他作用
或许这个只是一个标


  • gcyun
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实际上IE的多窗口和一般的多页浏览器有所不同


打开的新窗口并不是孤立的
他们都通过系统接口 相互协作 

也就是说如果网站需要 这些窗口之间可以相互通讯


  • 222.66.101.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里说得清楚点
http://community.csdn.net/Expert/topic/5726/5726382.xml?temp=.7382624
请各位帮


2025-08-19 15:48:04
广告
不感兴趣
开通SVIP免广告
  • 222.212.108.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你的问题是你想要达到什么目的或效果呢?
我发现用了参数-Embedding调用IE时,IE调用的DLL要比直接调用IE时少很多


  • z87123688
  • 啥也不懂
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
同求


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示