Тема: AutoHotkey: Сохранение веб-страницы в формат mht одной клавишей
Скрипт предназначен для работы в браузерах Internet Explorer, Opera, Avant Browser. При нажатии клавиши F2 скрипт совершает за пользователя действия по вызову диалога сохранения, выбору формата mht, изменению имени сохраняемого файла в случае, если имя совпадает с уже имеющимися (добавляет или увеличивает номер).
Файл сохраняется в папку по умолчанию. Изменить эту папку можно, нажав комбинацию Ctrl-F2.
Работа скрипта проверялась в IE 6.0 (WinXP SP1), Opera 9.02, Avant Browser 8.02 и 11.0
В Опере при изменении папки по умолчанию скрипт вызывает диалог настроек, посылая в окно комбинацию Ctrl-F12. Если вы в Опере переназначили это сочетание на какое-нибудь другое действие, учтите этот факт. Также учтите, что навигация в окне настроек к нужной вкладке осуществляется имитацией щелчков мыши в определённых точках (по координатам), так что этот процесс зависит от геометрии этого окошка в конкретной версии Оперы.
В IE и Аванте при изменении папки сохранения считывается/изменяется параметр Save Directory в разделе реестра HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main .
;--------------------- Internet Explorer --------------------
#ifWinActive, ahk_class IEFrame
F2:: SaveAsMHT("Сохранение веб-страницы", 2, 0, 1)
^F2:: ChooseFolder("IE")
;--------------------------- Opera --------------------------
#ifWinActive, ahk_class OpWindow
F2:: SaveAsMHT("Сохранить как", 3, 4)
^F2:: ChooseFolder("Op")
;------------------------ Avant Browser ----------------------
#ifWinActive, ahk_class TfrmAvantBrowser
F2:: SaveAsMHT("Сохранение веб-страницы", 2)
^F2:: ChooseFolder("AB")
#ifWinActive, ahk_class TfrmAvantBrowser.UnicodeClass
F2:: SaveAsMHT("Сохранение веб-страницы", 2)
^F2:: ChooseFolder("AB")
;-------------------------------------------------------------
#ifWinActive
;--------------------------- Функции -------------------------
SaveAsMHT(DlgTitle, MHT_line, TrimCount=0, IE=0)
{
if IE
Send, {Alt}{Down 5}{Enter}
else
Send, ^{vk53} ; Ctrl-S
WinWait, %DlgTitle%,, 3
if ErrorLevel
Exit
Control, Choose, %MHT_line%, ComboBox3
Loop 30
{
Sleep, 100
ControlGet, Files, List,, SysListView321
if Files
Break
}
ControlGetText, FileName, Edit1
StringTrimRight, BaseName, FileName, %TrimCount%
Loop
{
if not InStr(Files, FileName)
Break
else
{
FileName:=BaseName . "_" . A_Index+1 . ".mht"
}
}
ControlSetText, Edit1, %FileName%
Sleep, 100
ControlSend, Button2, {Enter}
}
ChooseFolder(BrowserName)
{
if(BrowserName="IE" || BrowserName="AB")
{
RegRead, SaveDir, HKCU, Software\Microsoft\Internet Explorer\Main
, Save Directory
FileSelectFolder, SaveDir, *%SaveDir%, 3
, Выбор папки сохранения по умолчанию`n (выделена текущая папка)
if ErrorLevel
Return
RegWrite, REG_SZ, HKCU, Software\Microsoft\Internet Explorer\Main
, Save Directory, %SaveDir%
}
else if(BrowserName="Op")
{
Send, ^{F12} ; Ctrl-F12
WinWait, Настройки,, 3
if ErrorLevel
Return
CoordMode, Mouse, Relative
Click, 260, 55
Click, 50, 190
Click, 456, 366, 0
}
}