1

Тема: AHK: Получить текст из тегов «title» выбранного CHM-файла

Есть ли возможность извлечь такой текст без преобразования CHM-файла в HTML?

2

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Вот хорошее описание формата. За 10 минут парсер не напишешь, поэтому готового решения ждать не советую.

3

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Спасибо. А я было думал это через COM можно делать.

4

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

DD пишет:

Спасибо. А я было думал это через COM можно делать.

Если AHK позволяет работать с COM, то вероятно, можно. Но я могу лишь привести примеры на VBS/JS.

1 способ) Создать объект InternetExplorer.Application, загрузить в него страницу из CHM и прочесть свойство Document.title. Недостатком этого сплсоба является, что будет производится полный разбор кода требуемой страницы для его отображения в невидимом окне IE, в частности будут исполняться или запрашиваться на исполнение все скрипты и элементы ActiveX со страницы.

2 способ) Использовать объект XmlHttpRequest:

url="mk:@MSITStore:D:\script56.chm::/html/vtoriMicrosoftWindowsScriptTechnologies.htm"
Set req = CreateObject("Microsoft.XMLHTTP")
req.open "GET", url, False
req.send
WScript.Echo req.responseText

При этом, весьма вероятно, req.responseText будет в неправильной кодировке и понадобится его перекодировать, для чего, может быть, лучше использовать вместо него req.responseBody

5

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Однако ж, кроме АвтоХоткея еще много чего имеется!
Спасибо, добре!

6

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

На AHK:

URL := "mk:@MSITStore:" SubStr(A_AhkPath, 1, -3) "chm::/docs/AutoHotkey.htm"

req := ComObjCreate("Msxml2.XMLHTTP.6.0")
req.open("GET", URL, 0)
req.send
ResponseText := req.responseText
req := ""

MsgBox, % RegExReplace(ResponseText, "s).*?<title>(.*)?</title>.*", "$1")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Добре. Ей-Богу, добре!

8

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Пожелание по шестому посту наклюнулось: возможно ли обращаться к индексному HTML-файлу (основному), без явного указания его названия, как-то так:


URL := "mk:@MSITStore:" FilePath "::/*.*"

9

Re: AHK: Получить текст из тегов «title» выбранного CHM-файла

Если кодировка файла из URL — w1251, как можно перекодировать кириллический вывод в стандартный вид?


URL := "C:\WINDOWS\Help\Tours\htmlTour\connected_multiple.htm" ; ссылка для XP

req := ComObjCreate("Msxml2.XMLHTTP.6.0")
req.open("GET", URL, 0)
req.send
ResponseText := req.responseText
req := ""

MsgBox, % RegExReplace(ResponseText, "s).*?<title>(.*)?</title>.*", "$1")