Приветствую Вас Прохожий | Получать RSS-новости | Главная | Регистрация | Вход |
Меню сайта

Форма входа

Категория каталога
Разное [78]

Новое на сайте
Новые файлы


Случайные программы


Новые статьи

Потенциальные угрозы при...
Правила написания и стру...
Как грамотно установить ...
Что делать если Windows ...
Реобас своими руками

Последние новости

«Спорту» осталось недолг...
Eutelsat W7. 36E Радуга-...
Astra 1H. 19.2E
Профилактика на спутнике...
Радуга-Интернет на Eutel...

Облако тегов


Друзья сайта
Дискуссионный клуб
Шаблоны для uCoz, скрипты для uCoz  Желтые страницы по спутниковому и кабельному ТВ


Для проживающих в городе Иваново:

Ремонт и настройка вашего компьютера
Установка программ
Защита. Удаление вирусов

Оцифровка видео и аудио материалов с возможностью компьютерного монтажа

Создание небольших сайтов, персональных страничек

Монтаж и настройка спутникового Интернета
и телевидения...

и прочие компьютерные услуги...

По всем вопросам обращаться по тел. 89605108897


Счетчики
Были сегодня:



Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Разное » Разное

Создание 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:\test.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:\test\index.htm');
  F.AddFile('images\pic.jpg', 'C:\test\images\pic.jpg');
  F.Free;
end. 

Эта процедура создаёт CHM-файл, путь которого "c:\test.chm", а его свойства устанавливаются с помощью TChmHeader: 
Toolbar - параметр, с помощью которого в CHM-файле показывается панель управления; 
ToolbarCaptions - параметр, указывающий, что необходимо отображать подписи к кнопкам; 
Buttons - здесь указываются кнопки, которые будут отображаться на панели управления. Возможные варианты кнопок: cbExpand (Скрыть), cbBack (Назад), cbForward (Далее), cbStop (Остановить), cbRefresh (Обновить), cbHome (Домашняя страница), cbZoom (Размер), cbOptions (Параметры), cbPrint (Печать), cbJump1 (Первая пользовательская кнопка), cbJump2 (Вторая пользовательская кнопка); 
Title - название справочной системы, которое будет отображаться в заголовке главного окна; 
Default file - имя страницы по умолчанию, которая открывается сразу после загрузки файла; 
TocFile - имя файла Содержания справочной системы; 
IndexFile - имя файла Индекса справочной системы; 
PaneVisible - параметр, указывающий отображать панели; 
PaneTocTab - параметр, указывающий на создание панели "Содержание"; 
PaneFavTab - параметр, указывающий на создание панели "Избранное"; 
PaneIndexTab - параметр, указывающий на создание панели "Указатель"; 
PaneTabPos - местоположение вкладок на панели навигации. Возможные варианты: ctpTop (Сверху), ctpLeft (Слева), ctpBottom (Снизу); 

Свойства главного окна: 
WndName - название окна, в котором откроется справка во время просмотра. Желательно задавать значение "main"; 
PaneWidth - ширина навигационной панели в пикселях (по умолчанию это значение равно 250); 
Left - положение главного окна справки слева, указывается в пикселях; 
Top - положение главного окна справки сверху, указывается в пикселях; 
Height - высота главного окна справки, указывается в пикселях; 
Width - ширина главного окна справки, указывается в пикселях; 

Далее идёт процесс записи файла на диск (собственно создание файла 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:\test\index.htm 
C:\test\home.htm
C:\test\lis1.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.
Категория: Разное | Добавил: Himik (06.05.2009)
Просмотров: 1583 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2024