会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
  · 杀毒专区
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
技术文档 > VB文档 > 其他文档
在VB中调用CHM帮助的几种方法
发表日期:2003-12-24 00:00:00作者: 出处:  

一个应用程序不论编制得如何完美,在很多情况下用户还是会对如何使用它提出问题。 Visual Basic 提供了对两种不同帮助系统的支持:传统的 Windows 帮助系统 (WinHelp)和新的 HTML 帮助(CHM帮助)。当我们制作好帮助文件后,就需要在程序的适当位置编写代码进行调用,本文将讨论几种在程序中调用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 

方法六

声明HtmlHelp API函数

由于HtmlHelp API 并没有集成在Windows操作系统的API中,因此不能直接调用HtmlHelp.lib 库函数,但HtmlHelp API的功能位于hhctrl.ocx中,这样可以通过调用hhctrl.lib库函数来显示帮助文件,其声明格式如下:

Declare Function Htmlhelp Lib "hhctrl.ocx"Alias "HtmlHelpA"

(ByVal hwndCaller As Long,

ByVal pszFile As String,

ByVal uCommand As Long,

ByVal dwData As Any) As Long

具体参数含义如下:

hwndCaller 调用该函数的窗体句柄

pszFile 帮助文件的名称和位置

uCommand 帮助类型

dwData 与uCommand相匹配的附加参数

定义uCommand 常数

Const HH_DISPLAY_TOPIC = &H0

Const HH_DISPLAY_INDEX=&H2

Const HH_HELP_CONTEXT = &HF

Const HH_DISPLAY_SEARCH= &H3

Const HH_DISPLAY_TEXT_POPUP= &HE

接着指定CHM文件的名称和位置:

App.HelpFile=App.Path & "\Sample.CHM"

程序调用

调用缺省主题帮助

Call HtmlHelp(hwnd,

App.HelpFile,

HH_DISPLAY_TOPIC,

ByVal "Default.htm")

此调用方式用于没有上下文ID号的情形,dwData可指定一个在CHM文件内的缺省htm文件,也可取NULL,这是HtmlHelp API最基本的一种用法。

调用关键字帮助

Call HtmlHelp(hwnd,

App.HelpFile,

HH_DISPLAY_INDEX,

(DWORD)"关键字"))

此调用方式中dwData取索引文件(.hhk)中存在的关键字。

调用上下文敏感帮助

Call HtmlHelp(hwnd,

App.HelpFile,

HH_HELP_CONTEXT, 1000)

此调用方式用于含有映射信息的CHM文件, dwData取映射表中存在的ID号。

调用全文搜索帮助

Dim Query As HH_FTS_QUERY

Call HtmlHelp(hwnd,

App.HelpFile,

HH_DISPLAY_SEARCH,

(DWORD)& Query)

DwData参数指定一个指向HH_FTS_QUERY结构的指针。

调用弹出式帮助

Dim Popup As HH_POPUP

Call HtmlHelp(hwnd,

NULL,

HH_DISPLAY_TEXT_POPUP,

(DWORD)&Popup)

PszFile通常取NULL,也可以指定一个CHM和一个在该CHM文件中的TEXT文件,DwData用于指定一个指向HH_POPUP结构的指针。

指定显示窗体形式

由于显示帮助文件的缺省窗体是在编译该CHM文件时的窗体,因此为了更好地控制帮助文件的显示,在制作CHM文件时,可以自定义一个窗体形式。在程序中可以通过两种方法来调用自定义窗体。

1.当uCommand 为HH_DISPLAY_TOPIC或HH_HELP_CONTEXT时,在pszFile参数中用“>”符号,其后跟上窗体名称即可。如pszFile取:

App.HelpFile & "> MainWin"

2.用HtmlHelp函数直接指定:

Dim WinType As HH_WINTYPE

Call HtmlHelp(hwnd,

App.HelpFile &" > MainWin",

HH_SET_WIN_TYPE,

(DWORD) &WinType)

必须声明的是,以上叙述中使用的“Sample.CHM”、“Default.htm”、“关键字”、“1000”和“MainWin”等均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。

至此,应用程序的帮助系统就建立起来了,当然,要把帮助系统做得更完美一点,还有更多的工作要做。

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00154