Как открыть файл в формате HLP
Потребовалось открыть файл в древнем формате HLP. Оказавается сейчас его ничего не открывает, даже операционная система Виндоуз, под которую он когда-то и был создан.
Возможно существует какой-то быстрый и приятный путь читать такие файлы, но мне на него выйти не удалось. Гуглёжка принесла не первой свежести утилиту winhelpcgi, которая просто так не скомпилировалась, пришлось разбираться и патчить:
diff --ignore-blank-lines --minimal -urd a/winhelpcgi/dib2png.c b/winhelpcgi/dib2png.c
--- winhelpcgi-1.0/winhelpcgi/dib2png.c 2004-06-15 11:38:40.000000000 +0400
+++ winhelpcgi-1.0-patched/winhelpcgi/dib2png.c 2018-11-03 13:59:03.405031382 +0300
@@ -85,7 +85,7 @@
/* Set error handling. REQUIRED if you aren't supplying your own
* error hadnling functions in the png_create_write_struct() call.
*/
- if (setjmp(png_ptr->jmpbuf))
+ if (setjmp(png_jmpbuf(png_ptr)))
{
/* If we get here, we had a problem writing the file */
png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
@@ -93,7 +93,7 @@
}
/* Set the I/O callback function to transfer directly to memory */
- png_set_write_fn(png_ptr, (voidp) sbout, user_write_data, NULL);
+ png_set_write_fn(png_ptr, (png_voidp) sbout, user_write_data, NULL);
/* Get access to the windows DIB data */
lpbmi = (LPBITMAPINFOHEADER) GlobalLock(hDIB);
Утилита с грехом пополам преобразовала файл в нечитаемый ХТМЛ, который пришлось перекодировать:
/usr/local/bin/winhelpcgi.cgi --tar HELP.HLP |
php -r 'echo mb_convert_encoding(strtr(stream_get_contents(STDIN), ["\0"=>""]),
"CP1252", "HTML-ENTITIES");' > help.html
После этого читать можно, но если кто-нибудь подскажет более удобоваримый способ преобразования, буду благодарен.
Поставить ещё более старую Виндоуз в виртуальную машину не будет проще?
Её где-то взять ещё надо. Всё вышеописанное у меня минут 15—20 заняло.
Вот тут вроде виртуалка с XP всё ещё есть: https://www.microsoft.com/en-us/download/details.aspx?id=11575
Спасибо за ссылку, но этот способ дольше :)
Если разговор про открытие *.hlp по Windows 10 — то есть всякие bat-файлы, типо этого http://blackstrip.ru/phpBB2/viewtopic.php?t=629
Они ставят winhlp32.exe и файлы открываются штатным способом по даблклику
Ага, спасибо! У меня Винды нет, но мало ли, знать полезно.