请问如何在delphi中调用html help 做的帮助.chm文件?请给出代码?谢谢!

解决方案 »

  1.   

    HtmlHelp(Handle, PChar('my.chm'+'::/网页所在目录/网页文件名.htm'),1,0)'my.chm':chm文件名
    '::/网页所在目录/网页文件名.htm':网页被编译到chm文件时相对于工程文件的所在路径和该网页的文件名。
      

  2.   

    上面所写是在程序运行中直接跳转到相关的帮助页。这是声明:
      function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: Integer;
      dwData: DWORD): HWND; stdcall; external 'hhctrl.ocx' name 'HtmlHelpA';就OK了。
      

  3.   

    procedure TMainForm.AboutSystem;
    var
      PathHelpFile:string;
    begin
      PathHelpFile := 'hh.exe  D:\COSTING\costing.chm';
      if Winexec(Pchar(PathHelpFile), sw_normal) < 31 then
        DJShow(CON_NO_FIND_APP); //自定義未找到顯示對話框
    end;procedure TMainForm.btnHelpClick(Sender: TObject);
    begin
      AboutSystem;  //調用
    end;在工程單元
      Application.Initialize;
    加入代碼:
      Application.HelpFile := 'D:\COSTING\costing.chm';
                 //指定幫助文件位置
      

  4.   

    用函数winexec(路径,文件)!
      

  5.   

    抄来的,呵呵Delphi5并不支持HTML HELP帮助系统,它仍然使用WinHelp。笔者通过反复尝试,发现调用Windows系统目录System32下的HHCTRL.OCX,利用其中的HtmlHelpA函数接口可以自行实现HTML HELP帮助。 
    公共模块代码如下: 
    unit HTMLHELPCOMMON 
     
    interface 
    uses Windows; 
     
    type 
    DWORD_PTR = ^DWORD; 
     
    Function 
    HtmlHelp(hwndCaller:HWND;strFile:String; 
    uCommand:UINT; dwData:DWORD_PTR ):HWND; 
     
    procedure CloseHtmlHelp; 
     
    implementation 
    uses 
    SysUtils; 
    const 
    HHControlInstance:THandle=0; 
    dwCookie :DWORD = 0; 
    var 
    HtmlHelpA:function ( hwndCaller:HWND; pszFile:PChar ; 
    uCommand:UINT; dwData:DWORD_PTR ):HWND;stdcall; 
     
    function HtmlHelp(hwndCaller:HWND;strFile:String; 
    uCommand:UINT; dwData:DWORD_PTR ):HWND; 
    var 
    LFileName:String; 
    p:PChar; 
    begin 
    if HHControlInstance=0 then 
    begin 
    LFileName := StringOfChar( ' ', 256); 
    p := PChar( LFilename ); 
    GetSystemDirectory(p,255); 
    StrCat(p,'\HHCTRL.OCX'); 
    HHControlInstance := LoadLibrary( P ); 
    if HHControlInstance = 0 then 
    raise exception.Create('Help system not installed!'#13' HTMLHELP cannot displayed!'); 
    @HtmlHelpA := GetProcAddress( HHControlInstance, 'HtmlHelpA'); 
    if @HtmlHelpA = nil then 
    raise exception.Create('Function HTMLHELP cannot loaded!'); 
    HtmlHelpA( 0, nil,$001C , (@dwCookie)); 
    end; 
    result := HtmlHelpA( hwndCaller, PChar( strFile ), uCommand, dwData ); 
    end; 
     
    procedure CloseHtmlHelp; 
    begin 
    if HHControlInstance<>0 then 
    begin 
    HtmlHelpA( 0, nil, $001D, DWORD_PTR(dwCookie)); 
    FreeLibrary(HHControlInstance); 
    end; 
    end; 
     
    end. 
     
    两个函数分别初始化和释放调用接口。其它模块只须按约定调用即可。例如: 
    HtmlHelp( handle, htmlhelpfilename+'::/welcome.htm',$0000, nil); 
    显示htmlhelpfilename对应的帮助文件的welcome页面。 
    上下文敏感帮助需要借用Delphi对WinHelp的支持。当用户按 F1 键时,程序将自动触发OnHelp事件,截获它,编写自己的处理代码即可。 
    ... ... 
    Application.HelpFile := htmlhelpfilename; 
    tmpOnHelp := Application.OnHelp; 
    Application.OnHelp := AppHtmlHelp; 
    ... ... 
     
    function TForm1.AppHtmlHelp(Command: Word; Data: Longint; 
    var CallHelp: Boolean): Boolean; 
    var ret:integer;Hfile:string; 
    begin 
    if not CallHelp then exit; 
    AppPath := ExtractFilePath(Application.ExeName); 
    Hfile := AppPath + Application.HelpFile; 
    case Command of 
    HELP_FINDER, HELP_CONTENTS: 
    ret := HtmlHelp(handle, pchar(Hfile), $0001, nil); 
    HELP_QUIT: 
    ret := HtmlHelp(0, '', $0012, nil); 
    HELP_CONTEXT: 
    ret := HtmlHelp(handle, pchar(Hfile), $000f, DWORD_PTR(data)); 
    end; 
    result:=ret<>0; 
     
    CallHelp := False; 
    end; 
    这样,我们就有另一种方法调用帮助文件,与传统WinHelp调用方法一样: 
    application.helpcommand(HELP_FINDER, 0); 
    application.helpcommand(HELP_quit, 0); 
    ... ... 
    以上代码用Delphi5企业版开发,在大型应用中运行良好。抛砖引玉,与大家共享 
      

  6.   

    #define HH_HELP_CONTEXT         0x000F  //定义常量;HINSTANCE  hs;             //定义DLL实例变量
    hs = LoadLibrary("hhctrl.ocx");       //载八动态连接库
    HHelp = (Dll_HtmlHelp*)GetProcAddress(hs,"HtmlHelpA");  //对函数变量赋值HtmlHelpA()
    char * FileName = "WB.CHM"; //帮助文件名
    (*HHelp)(Application->Handle,FileName,HH_HELP_CONTEXT,1);调用帮助文件context为1
    (*HHelp)(Application->Handle,FileName,HH_CLOSE_ALL,NULL);//关闭帮助文件
      

  7.   

    这是使用CB写的。稍改就可以在DELPHI上运行。
      

  8.   

    你有email吗?我发一例子程序给你吧。
      

  9.   

    试一下:
    UNIN:ShellAPI
    function:ShellExecute(HWAND hwand,           //父窗体句柄 
                          LPCTSTR lpOperation,   //操作方式
                          LPCTSTR lpFile,        //指向的文件 
                          LPCTSTR liParameters,  //指向的文件的参数
                          LPCTSTR lpDirectory,   //指向的文件的目录
                          INT nShowCmd           //运行时打开方式
                          );
    Example:
      ShellExecute(handle,nil,pchar('Dfdd.exe'),nil,'G:\Program Files\Dfkc3000',sw_ShowNormal);  ShellExecute(handle,nil,pchar('telnet:bbs.tsinghua.edu.cn'),nil,nil,sw_ShowNormal);  ShellExecute(handle,nil,pchar('www.263.net'),nil,nil,sw_ShowNormal);    注意:一定要在use里面加上 ShellAPI