我用quick chm做了一个chmhelp.chm文件。在DELPHI中用以下语句已经实现了用户按下F1时就弹出帮助页面。
    if Key=VK_F1 then
      ShellExecute(handle,'open','CHM帮助/chmhelp.chm',Nil,Nil,SW_SHOWNORMAL);    而且,我已经做好了索引。打开帮助页面后可以正常使用索引。我在一个form中把helpkeyword属性设置为“更改口令”,把helpfile属性设置为“CHM帮助/chmhelp.chm”,把helptype属性设置为htkeyword.以实现用户在哪个页面按F1,打开的帮助就跳到哪一页上的时候,但运行时,按下F1后却提示:CHM帮助/chmhelp.chm不是windows帮助文件,或者该文件已被破坏。但是,仍然可以打开帮助文件,只是没有定位到相应位置。
    是不是设置helpkeyword的方法只适用于.hlp文件呢?那我该怎么实现定位呢
    

解决方案 »

  1.   

    HINSTANCE ShellExecute(    HWND hwnd, // handle to parent window
        LPCTSTR lpOperation, // pointer to string that specifies operation to perform
        LPCTSTR lpFile, // pointer to filename or folder name string
        LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters 
        LPCTSTR lpDirectory, // pointer to string that specifies default directory
        INT nShowCmd  // whether file is shown when opened
       );
      

  2.   

    我是说,你把你两个nil值换掉,应该可以吧。我也试试看,共同制作
      

  3.   

    to  CSDNBowlder(给点阳光就灿烂)
       我都试过了
       ShellExecute(handle,'open','CHM帮助/chmhelp.chm','更改口令','更改口令',SW_SHOWNORMAL);
       
      ShellExecute(handle,'open','CHM帮助/chmhelp.chm','更改口令', Nil,SW_SHOWNORMAL);  ShellExecute(handle,'open','CHM帮助/chmhelp.chm',Nil,'更改口令',SW_SHOWNORMAL);   可惜跳出的帮助页面仍然是显示第一条帮助主题,没有定位
       
       探索中
      

  4.   

    to jackystar(我)
        我给你发的消息收到没
      

  5.   

    我用你说的方法试了,可是按下F1后,连.chm帮助都不显示出来了,是什么原因呢?
       我知道你的方法是正确的,因为我在网上也看到过这个方法,只是当时少了个.pas文件没有   探索中。。
      

  6.   

    路径呀,和HTML的文件名最好是英文的 
    这只是建议,不影响大局
      

  7.   

    FORM.keypreview设置成TRUE 了吗?
      

  8.   

    哦,我知道了,我已经这样试了:
        HtmlHelp(handle,'d:\hong\程序\湖工项目\收费程序\收费珍藏版\CHM 帮助\chmhelp.chm::/CHM帮助\网页文件\更改口令.htm',
                HH_DISPLAY_TOPIC, nil);   编译也通过了,但是按F1,帮助窗口就是不出来
       
       思考中。
      

  9.   

    FORM.keypreview已经设置成TRUE了
    不过helpkeyword属性没有设置,应该不用了吧
      

  10.   


    帮助文件的目录结构如下
    D:\chm帮助\chmhelp.hhp 
    D:\chm帮助\chmhelp.hhk
    D:\chm帮助\chmhelp.hhc
    D:\chm帮助\网页文件\更改口令.htm这样生成的chmhelp.CHM才能用我给你的方法调用::/CHM帮助\网页文件\更改口令.htm'
      

  11.   

    我也试了用:
        HtmlHelp( handle, 'd:\hong\程序\湖工项目\收费程序\收费珍藏版\CHM 帮助\chmhelp.chm::/CHM帮助\网页文件\更改口令.htm',
                HH_DISPLAY_INDEX, DWORD_PTR(PChar('更改口令)));    结果一样,编译都通过了,运行时,按F1,没有反应
      

  12.   

    你把你的帮助文件CHMHELP.CHM发给我,我帮你调试看看
      

  13.   

    很不好意思,是我把CHM的文件名的绝对路径搞错了,掉了一个文件夹没写。耽误大家时间真不好意思。
       现在.chm文件可以打开了,但是打开后怎么又显示“该页无法显示”
       正在探索中
       
        谢谢  jackystar    我做的帮助文件跟你说的好象有点不一样。我的是这样的:
        ..\CHM帮助\chmhelp.chm
        ..\CHM帮助\chmhelp.qls
        ..\CHM帮助\网页文件\更改口令.htm
        ...
        
        是用QUICK CHM做的帮助    
        
      

  14.   

    if fileExists( 'd:\hong\程序\湖工项目\收费程序\收费珍藏版\CHM 帮助\chmhelp.chm') then 
        HtmlHelp( handle, 'd:\hong\程序\湖工项目\收费程序\收费珍藏版\CHM 帮助\chmhelp.chm::/CHM帮助\网页文件\更改口令.htm',
                HH_DISPLAY_INDEX, DWORD_PTR(PChar('更改口令)));
    else 
      showmessage('help file not exists');试试看
      

  15.   

    那是编译的帮助文件的问题
    也是路径不对的
    那::后这样写就可以了
    ::/网页文件\更改口令.htm'