Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Поиск по CHM-файлам. Открытие CHM на нужном слове. (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Wed Jan 21, 2004 3:14 am ()
   Post subject: Поиск по CHM-файлам. Открытие CHM на нужном слове.
Reply with quote

Приложенный архив содержит дистрибутив модуля Win32::Chm::Search, который умеет:
  1. Выделять из указанного CHM-файла все ключевые слова, которые в нем определены (показываются на вкладке Указатель просмотрщика помощи).
  2. Искать среди этих ключевых слов заданное (передается слово и имена файлов).
  3. Запускать стандартный просмотрщик помощи Windows, открывая его на странице указанного ключевого слова.
Первая и последняя функции реализуются через два EXE-файла (также находятся в архиве):
  1. chmview.exe — консольный «архиватор» формата CHM (только чтение) — применяется, в частности, в одном из плагинов Far-а.
  2. ChmKw.exe (2 КБ) — моя собственная разработка, предназначенная для открытия файла помощи на нужном ключевом слове (к сожалению, ни одна из стандартных утилит этого не умеет, так что пришлось писать свою).
Обе утилиты выдают Usage при запуске без параметров.


chm.zip
 Description:
Win32::Chm::Search — враппер для чтения CHM-файлов и поиска по ним.

Download
 Filename:  chm.zip
 Filesize:  46.55 KB
 Downloaded:  1428 Time(s)

Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 23
   поощрить/наказать


PostPosted: Thu Jan 22, 2004 6:49 am (спустя 1 день 3 часа 35 минут)
   Post subject:
Reply with quote

Что-то не работает... :(

Кстати, по-моему в модуле Search.pm, есть опечатка
Code (perl): скопировать код в буфер обмена
    my $exe = dirname(__FIlE__)."\\".$view;
из-за которой имя файла вычитывается не верно.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Thu Jan 22, 2004 7:43 pm (спустя 12 часов 53 минуты)
   Post subject:
Reply with quote

Макcим Зоpин wrote:
Что-то не работает
Как именно «не работает»? Приложенный пример-то работает хотя бы? Просто нажмите в нем Enter.
Макcим Зоpин wrote:
__FIlE__
Спасибо, действительно опечатка. Но он просто из текущей директории тогда берет файл, насколько я понимаю.

Исправленный архив прикладываю.


chm.zip
 Description:
Исправленная версия Win32::Chm::Search.pm

Download
 Filename:  chm.zip
 Filesize:  46.56 KB
 Downloaded:  1144 Time(s)

Back to top
View user's profile Send private message Send e-mail
Enilatiar
Участник форума



Joined: 09 Jun 2003
Posts: 690
Карма: 23
   поощрить/наказать


PostPosted: Fri Jan 23, 2004 12:12 pm (спустя 16 часов 28 минут)
   Post subject:
Reply with quote

WinXP pro. Распакован весь архив "как есть".
Quote:
C:\temp>test_chm.pl
Using test file test_chm.chm
Keyword to find ["change" by default - press Enter]:
'chmview.exe' is not recognized as an internal or external command,
operable program or batch file.
Exiting subroutine via next at Win32/Chm/Search.pm line 16, <STDIN> line 1.
Search results: $VAR1 = [];
Если файл chmview.exe выложить туда, где лежить test_chm.pl, то тестовый пример срабатывает. Хотя я не понял по какому принципу выбраны топики. В частности, не понимаю почему постоянно дописывается что-то типа "... used in Chat".
Решил найти какое-нибудь редкое слово. Выбрал visible, получил
Quote:
C:\temp>test_chm.pl
Using test file test_chm.chm
Keyword to find ["change" by default - press Enter]: visible
Search results: $VAR1 = [];
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Sat Jan 24, 2004 3:08 am (спустя 14 часов 55 минут)
   Post subject:
Reply with quote

Это потому, что в CHM-файлах можно быстро искать (не распаковывая) только по ключевым словам, а ключевые слова составляются заранее (может, автоматически) и отображаются в соответствующей закладке. Так что если ключевых слов мало — извиняйте, ту ничего не поделаешь.

Насчет дополнения: это он перебирает все ключевые слова и те, которые совпали с посиковым выражением (это может быть подстрока), возвращает.

Насчет глюка: спасибо. У меня просто chmview.exe сидел еще и в PATH, так что я никак не мог отладить код. Прикладываю исправленную версию — на этот раз полностью рабочую, будем надеяться.


chm.zip
 Description:
Окончательная версия модуля Win32::Chm::Search.

Download
 Filename:  chm.zip
 Filesize:  46.56 KB
 Downloaded:  1274 Time(s)

Back to top
View user's profile Send private message Send e-mail
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6836
Карма: 131
   поощрить/наказать


PostPosted: Sun Jun 13, 2004 2:27 pm (спустя 4 месяца 20 дней 11 часов 18 минут)
   Post subject:
Reply with quote

После долгих мучений, выяснилось, что распаковать CHM-файл в определенную директорию можно так:
Code (Windows BAT file): скопировать код в буфер обмена
hh.exe -decompile folder file.chm
Открыть CHM-файл на нужной странице можно так:
Code (Windows BAT file): скопировать код в буфер обмена
hh.exe mk:@MSITStore:test_chm.chm::/html_file_in_chm.htm
То есть, система такая: распаковываем CHM-файл с помощью первой команды (кстати сказать, она распаковывает не все файлы из CHM-«архива», а только самые необходимые: все HTML, CSS, IMG и несколько структурных файлов [вроде бы всего 2-3 файла]). Затем ищем в них и потом используем вторую команду для открытия CHM-файла на нужной странице.

Внимание. «hh.exe» — стандартная утилита в Windows. Приведенный выше код работал у меня и под XP и под Me. Но только под Win. Ищется подобная утилита, которая работает в *nix.
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9994
   поощрить/наказать


PostPosted: Sun Feb 12, 2012 7:46 pm (спустя 7 лет 7 месяцев 29 дней 5 часов 19 минут)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «мусор, не относящийся к теме»,
расположенную в форуме Мусоропровод (12 Февраля 2012, 20:46).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML