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 systemHelp_Click()
Dim a As Long
Dim b As String
b = App.Path & "\GRAPH10.chm" '用变量b记录与主程序同目录下的help.chm帮助文件
MsgBox (b)
a = ShellExecute(Me.hwnd, "open", b, vbNull, vbNull, 1)
MsgBox (a)
End Sub
可以得到正确的文件路径(b值正确)
但是 a 值是 2
不能打开帮助文件,请问到底是什么错误???

解决方案 »

  1.   

    哦,忘了说,这里的me是MDIForm类型
      

  2.   

    Private Sub systemHelp_Click()
    sendkeys "{F1}"
    End If
      

  3.   

    用ShellExecute的前提是文件类型已经注册。
    a = ShellExecute(Me.hwnd, "open", b, vbNullString, vbNullString, 1)
      

  4.   

    直接双击是否能打开?
    如果弹出打开方式对话框,就是没注册,直接选hh.exe。
    如果能,就是你的文件路径不对。
      

  5.   

    请问这里用a接收ShellExecute(Me.hwnd, "open", b, vbNullString, vbNullString, 1)
    返回值,为何值是2呀???高手们,帮帮忙呀!小弟正在做课程设计,急呀,在线等待!!
      

  6.   

    a<=32,表示失败;>32,表示成功
    a = ShellExecute(0, "open", b, "", "", vbNormalFocus)
      

  7.   

    Private Sub systemHelp_Click()
    Dim a As Long
    Dim b As String
    b = App.Path & "\GRAPH10.chm" '用变量b记录与主程序同目录下的help.chm帮助文件
    MsgBox (b)
    Shell  b        '直接用shell
    End Sub
      

  8.   

    研究一下下面的文章,我就是按这里做的。
    [ 作者: 郑家伟   添加时间: 2001-10-25 8:05:46 ]
     来源:中国计算机报CHM文件是微软公司开发的新一代基于HTML的帮助文件格式,它一问世就以其易用性和新颖的界面赢得了广大编程一族的喜爱,目前大多数软件都用它来制作应用程序的帮助文件。关于Html Help Workshop的用法已有文章介绍,在这里笔者着重讲述在实际编程中如何调用CHM文件,从而建立起应用程序的帮助系统,本文以VisualBasic 6.0为语言平台。声明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”等均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。至此,应用程序的帮助系统就建立起来了,当然,要把帮助系统做得更完美一点,还有更多的工作要做。
      

  9.   

    to  yefanqiu(叶帆) :
    直接用shell时,出现“文件未找到”错误,不知哪儿错了?