tempad
Readygo技术搜索引擎 >>防火墙 >> 请教微软专家——IE下调用chm帮助文件的问题

请教微软专家——IE下调用chm帮助文件的问题

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 18:20:28

请教微软专家——IE下调用chm帮助文件的问题

楼主firechun(天火)2002-09-14 09:39:52 在 VB / 基础类 提问

一个在网页上使用的控件,在控件中使用了hhctrl.ocx的htmlhelp方法调用chm帮助文件。帮助文件和控件打在同一个包内,当打开网页时,IE会自动下载控件,并且将帮助文件下载到Windows目录中,程序中相关的代码如下:  
  Public   Property   Get   HelpFile()   As   String  
          "帮助文件名  
          HelpFile   =   m_HelpFile  
          App.HelpFile   =   GetWindowsDir   &   "\"   &   HelpFile  
  End   Property  
   
  Public   Sub   HelpContext(ByVal   Hwnd   As   Long,   ByVal   Index   As   Long)  
          "打开帮助文件  
          Dim   strFile                   As   String  
           
          If   Dir(App.HelpFile)   =   ""   Then  
                  MsgBox   "帮助文件不存在!",   vbExclamation    
                  Exit   Sub  
          End   If  
          Call   Htmlhelp(Hwnd,   App.HelpFile,   HH_HELP_CONTEXT,   ByVal   Index&)  
  End   Sub  
   
  Private   Sub   UserControl_Terminate()  
          "关闭帮助文件  
          Call   Htmlhelp(Hwnd,   App.HelpFile,   HH_CLOSE_ALL,   ByVal   0&)  
  End   Sub  
   
  程序在调试时运行正常,在win98下通过网页运行控件也正常,但是在win2000下,用IE打开含有该控件的网页,则IE常常会被win2000自动杀掉,经过仔细观察,发现问题出在调用帮助文件上,理由如下:  
  用同样方法编写的控件,如果不含帮助文件的调用(程序中未引用hhctrl.ocx),IE使用正常,不会被WIN2000杀掉。含帮助文件的控件,如果未按过“帮助”按纽(即未加载hhctrl.ocx,hh.exe等)不会被杀。如果执行了HelpContent方法显示帮助文件,并且不关闭帮助文件的窗口,IE也不会被杀。调用帮助时,如果找不到帮助文件,或打开帮助文件后再关闭帮助文件窗口,过不了一下,IE就会被杀掉。这个时间通常在几分钟之内,在IE被杀前观察WIN2000的系统资源,会发现虚拟内存不停上涨。而且很奇怪的是,利用跟踪线程的工具分别在WIN98和WIN2000下观察,发现在WIN2000下打开有该控件的网页时,系统先加载hhctrl.ocx,然后加载了一个名为hhctrlui.dll的线程,并且该文件会出现在SYSTEM32下的MOU/UI0804目录下,经过分析,该文件应该是hhctrl.ocx的副本,下次再打开同一网页时,如果hhctrlui.dll已经存在,则直接加载hhctrlui.dll,而不加载hhctrl.ocx。不知这和IE被杀有没有关系?由于IE频繁被WIN2000杀掉,含有帮助文件的控件根本无法使用,而帮助文件又是必须的,考虑过使用传统的.hlp格式的帮助文件,不知还会不会有这一问题?而且重新编写.hlp格式的帮助文件工作量也非常大。急盼高手为我剖析以上现象并提出解决问题的方法,谢谢!!!  
   
  对这个问题,我自己的猜想是:chm是html文件编译的,hhctrl.ocx会不会跟IE有冲突,或者两者在某些地方根本就是互相调用,当在IE下打开chm文件时,两者形成类似于递归的调用(WIN2000的虚似内存不停增涨),造成WIN2000自动杀掉IE。  
  问题点数:0、回复次数:4Top

1 楼firechun(天火)回复于 2002-09-14 12:00:14 得分 0

upTop

2 楼firechun(天火)回复于 2002-09-17 09:04:27 得分 0

有知道的吗?Top

3 楼shanhe(TNT)回复于 2002-09-17 09:35:07 得分 0

我猜想是不是你的程序有问题含有什么有害病毒。你说的副本覆盖好像是win2000的系统DLL保护Top

4 楼firechun(天火)回复于 2002-09-17 09:43:00 得分 0

程序不可能有问题,我用过多种调试工具和线程跟踪工具对程序的执行情况进行过跟踪,一切都很正常。  
  刚才去msdn找了一下,hhctrlui.dll是win2000上使用的html   help的dll.Top

责任编辑: efish 参与评论 查找更多:
相关文章
谁知道IP HELPER API中SENDARP函数的用法 谁知道IP HELPER API中SENDARP函数的用法
恭喜发财贴! ^_^ 恭喜发财贴! ^_^
使用winsock,如何保持与服务器的连接? 使用winsock,如何保持与服务器的连接?
如何把javascript的变量传递到vbscript中? 如何把javascript的变量传递到vbscript中?
我想问一下在 Delphi中如何写一个组件,在ASP中调用… 我想问一下在 Delphi中如何写一个组件,在ASP中调用它!
请看看这段代码在access转到sql后order by部分为什么… 请看看这段代码在access转到sql后order by部分为什么出错?
传奇是2D的,换了装备人物样子会变,那么3D能实现吗? 传奇是2D的,换了装备人物样子会变,那么3D能实现吗?
强烈要求湖北、江西的同道黑掉这个网站!!!!! 强烈要求湖北、江西的同道黑掉这个网站!!!!!
疑惑:MIDAS链接等问题! 疑惑:MIDAS链接等问题!
关于SocketConnection. 关于SocketConnection.
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎