vb如何调用.chm文件??????!!!!!!

lzhcsdn3 2003-11-18 06:12:45
请问大家vb如何调用.chm文件?比如我已经有了一个窗体,一个按钮,想在按钮按下去时调用同一个目录下的123.chm文件。我已经找过了相关的文章,流传的比较多的是有五种方法的一段话。我等会儿粘贴过来。我用的是第三种办法,既只在按钮控件的click事件之中加入了如下的代码:
Shell "hh.exe 123.chm", vbNormalFocus
也尝试过
Shell "c:\windows\hh.exe "+ app.path + "\123.chm", vbNormalFocus
都报错说不能打开123.chm, 不知道我错在那里呢?我觉得这种方式比较适合我,希望不要我采用别的方法。最好能帮我找出错误来。
注释:
1.我的c:\windows\下面有hh.exe。
2.双击123.chm可以打开的。


方法一 使用F1键:
这种方法最简单,只需如下代码即可:
Private Sub Form_Load()
App.HelpFile = app.path & "\help.chm" '调用与主程序同目录下的help.chm帮助文件,按F1键调用
End Sub

方法二 使用SendKeys方法:
Private Sub Form_Load()
App.HelpFile = app.path & "\help.chm"
End Sub
private Sub CmdHelp_Click()
SendKeys "{F1}" '发送击键到活动窗口
End Sub

方法三 使用Shell函数:
private Sub CmdHelp_Click()
Shell "hh.exe help.chm", vbNormalFocus 'help.chm为指定的帮助文件,可包含路径。
End Sub

方法四 使用HtmlHelp函数:
先声明如下API:
Option Explicit
Private Declare Function HtmlHelpA Lib "hhctrl.ocx" (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As Long
'hwndCaller指定调用者的窗口,pszFile指定要调用的文件,uCommand是发送给 HtmlHelp的命令,dwData是uCommand的参数。
然后在过程中调用:
private Sub CmdHelp_Click()
dim i as string
i = app.path & "\help.chm" '用变量i记录与主程序同目录下的help.chm帮助文件
HtmlHelpA Form1.hWnd, i, 0, 0
End Sub

方法五 使用ShellExecute函数:
先声明如下API:
Option Explicit
'声明API函数用于异步打开一个文档
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL = 1
然后在过程中调用:
private Sub CmdHelp_Click()
dim a as long
Dim b As String
b = App.Path & "\help.chm" '用变量b记录与主程序同目录下的help.chm帮助文件
a = ShellExecute (0, "open", b, "", "", SW_SHOWNORMAL)
End Sub
以上五种方法各有优缺点,从代码的简单上讲,建议使用第二种方法。从功能上讲,建议使用第五种方法,因其不只用于打开CHM帮助文件,还可用同样的格式打开、打印或查找一个文件或文档(参见该API的说明资料)。


...全文
60 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Axuluo 2003-11-19
  • 打赏
  • 举报
回复
shell "cmd/ c:\aa.chm"
of123 2003-11-19
  • 打赏
  • 举报
回复
试试:
Private Declare Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" _
( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long _
) As Long

Call ShellExecute(Me.hWnd,"Open", app.path + "\123.chm", "", "", 1)
lzhcsdn3 2003-11-19
  • 打赏
  • 举报
回复
问题更新:
我已经明确了我的问题了:
只要把我的程序的目录名起成英文就可以打开.chm文件,比如在d:\prog目录下的.chm文件是可以打开的。可是如果把目录文件名称起为中文就是不能打开的了,比如在"d:\我的程序"下面的.chm文件是不能打开的!!!!!!!!!!!%……¥¥·……%%·#
可是我希望我的程序是在一个中文的目录名称下面呀!!!!我该怎么办呢??之所以有这样的现象是因为hh.exe的程序设计上的问题吗????
望得到大家的继续帮助,谢谢!
lzhcsdn3 2003-11-19
  • 打赏
  • 举报
回复
谢谢大家的帮助,我现在知道原因了:
我是在系统之中直接搜索.chm文件,并任意选择一个调用的。本认为系统之中的应该没有问题。的确都可以打开。可是我现在发现他们都是在c:\windows\help文件夹下面的。如果把任何一个拷贝到我的目录,比如d:\prog下面,就不能打开了。也就是报我的程序之中的错误,可是我希望我写好的程序的.chm文件和我的程序是一个目录,我应该怎样办呢?我把hh.exe已经拷贝了一个到我的程序的目录:d:\prog可是还是不能双击该目录下的.chm文件打开呀????!!!!!
望得到大家的继续帮助,谢谢大家!
Dublue 2003-11-18
  • 打赏
  • 举报
回复
第一,菜单中快捷键不要设为F1;
第二,注意路径。可以把hh.exe拷贝到程序路径下,再使用shell "hh.exe help.chm"
第三,注意方法一的调用地点,是form_load,不是mdiform_load
lzhcsdn3 2003-11-18
  • 打赏
  • 举报
回复
是的,我已经更换了很多的.chm文件了呀。。。。。。。。
pigsanddogs 2003-11-18
  • 打赏
  • 举报
回复
换个chm文件看看。 可能123.chm本来就不规范
lzhcsdn3 2003-11-18
  • 打赏
  • 举报
回复
up
lzhcsdn3 2003-11-18
  • 打赏
  • 举报
回复
真是着急呀!!!!!就是这么一句代码!!!!!到底错在那里呢?????
lzhcsdn3 2003-11-18
  • 打赏
  • 举报
回复
谢谢你的帮助,可是我的程序文件是在c:\prog目录下的。于是我按照你的样子写了这样的代码:
Shell "c:\windows\hh.exe " + "c:\prog\123.chm", vbNormalFocus

可是还是报同样的错误呀??!!!
rainstormmaster 2003-11-18
  • 打赏
  • 举报
回复
Shell "c:\windows\hh.exe " + "d:\mc\123.chm", vbNormalFocus

7,789

社区成员

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

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