Створення CHM-файлів за допомогою Delphi, Різне, Програмування, статті

Останнім часом дуже популярним форматом довідкової документації та електронних книг став формат CHM. Це пов’язано із зручністю цього формату в порівнянні з форматом HLP, а також з “просуванням” цього формату самої MICROSOFT. У даній статті, я хочу розповісти, як створити файли довідки CHM за допомогою програм, написаних на Delphi, але без допомоги таких загальновідомих утиліт, як hhc.exe і hha.dll.


Спосіб перший: За допомогою компоненти TCHMFile


TCHMFile – це єдина VCL компонент для компіляції та декомпіляції декількох HTML документів в один CHM-файл.


Розберемо процес компіляції CHM документа на прикладі наступного коду:

procedure Compile;
var
  F: TChmFile;
begin
  F := TChmFile.Create(“c: est.chm”, omCreateWrite);
   with TChmHeader.Create do
   begin
    Toolbar := True;
    ToolbarCaptions :=True;
    Buttons := [cbHome, cbBack];
    Title := “Test”;
    Default file := “index.htm”;
    TocFile := “Table of Contents.hhc”;
    IndexFile := “Ind.hhk”;
    PaneVisible := True;
    PaneTocTab := True;
    PaneFavTab := True;
    PaneIndexTab := True;
    PaneTabPos := ctpTop;
    WndName:=”main”;
    PaneWidth:=200;
    Left:=100;
    Top:=100;
    Height:=500;
    Width:=800;
    Write(F);
    Free;
   end;
  F.AddFile(“index.htm”, “C: estindex.htm”);
  F.AddFile(“imagespic.jpg”, “C: estimagespic.jpg”);
  F.Free;
end.

Ця процедура створює CHM-файл, шлях якого “c: est.chm”, а його властивості встановлюються за допомогою TChmHeader:


Властивості головного вікна:


Далі йде процес запису файла на диск (власне створення файлу CHM) і додавання в довідкову систему всіх необхідних файлів (HTML документів, малюнків, що відносяться до цих документів та ін.)

Спосіб другий: За допомогою динамічної бібліотеки kkyyhhd.dll


kkyyhhd.dll була знайдена мною на просторах інтернету. Для компіляції довідки CHM Вам знадобиться файл проекту (HHP). Зазвичай цей формат виглядає так:

[OPTIONS]
Compatibility=1.1 or later
Compiled file = Справка.chm
Contents file=Table of Contents.hhc
Default window=main
Default topic=index.htm
Full-text search=Yes
Index file=Ind.hhk
Language = 0x419 Російський

[WINDOWS]
main = “Назва”, “Table of Contentc.hhc”, “Ind.hhk”, “index.htm”, “home.htm”,,,,, 132128,200,8198, [119,78,769,534], 0, 0,,,, 1,0

[FILES]
C: estindex.htm
C: esthome.htm
C: estlis1.htm


Щоб створити файл CHM необхідно виконати наступний код у Вашій програмі:

procedure AddLog(Memo: TMemo; SStr: PChar; Addn:bool=false);
begin
    Memo.Text := Memo.Text + SStr;
    if Addn then Memo.Text := Memo.Text + #13#10;
end;

procedure pLogString(pMsg: PChar); stdcall;
begin
    AddLog(Form1.Memo1,pMsg);
end;

function pProgress(pFile: PChar):bool; stdcall;
begin
    AddLog(Form1.Memo2,pFile,true);
    Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    Had: HWND;
    hhp:  function(pszHhpFile: PCHAR; pLogString: Pointer; pProgress: Pointer):bool;stdcall;
begin
    Had := LoadLibrary(“kkyyhhd.dll”);
    if Had <> 0  then
      begin
        @hhp := GetProcAddress(Had, “CompileHHP”);
        if @hhp <> nil then
hhp (PCHAR (“Шлях до файлу HHP”), @ pLogString, @ pProgress);
        FreeLibrary(Had);
   end;
end;


При цьому в папці з файлом проекту HHP з’явиться довідка CHM, а в самій програмі в TMemo Ви побачите детальний log, приблизно такий же як в програмі Microsoft HTML Help Workshop.


На цьому мабуть все. Сподіваюся ця стаття багатьом допоможе швидко створювати і використовувати документацію в форматі CHM.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*