请教微软专家——IE下调用chm帮助文件的问题
请教微软专家——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
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn
