1

Тема: AHK: Печать документа через AkelPad

Существует необходимость открытия и печати документов через AkelPad(потому что он без проблем определяет всякие экзотические кодировки). Документов много, поэтому хотелось бы автоматизировать процесс. Я смог сделать открытие документа и печать через

Send ^P

и далее нажатие на кнопку "Печать". Но проблема в том, что нужно блокировать клавиатуру на время работы скрипта, а хотелось бы чтобы для пользователя этот процесс оставался практически незамеченным.

2

Re: AHK: Печать документа через AkelPad

А AkelPad умеет принимать входные параметры? Блокнот, например, умеет:

  • open NOTEPAD.EXE %1

  • print NOTEPAD.EXE /p %1

  • printto notepad.exe /pt "%1" "%2" "%3" "%4"

3

Re: AHK: Печать документа через AkelPad

Параметров у него дофига.

+ открыть спойлер

Параметры командной строки

AkelPad.exe [параметры] "file1.ext" [параметры] "file2.ext" [параметры] ...
/x
- не использовать режим совместимости с MS Notepad при обработке параметров командной строки.
/p
- напечатать следующий файл и закрыть его.
/C+
- молча создавать новый файл, если он не существует.
/C-
- не создавать новый файл, если он не существует.
/C
- спрашивать о создании нового файла, если он не существует (по умолчанию).
/B+
- молча открывать файл, если он бинарный.
/B-
- не открывать файл, если он бинарный.
/B
- спрашивать об открытии файла, если он бинарный (по умолчанию).
/L+
- молча сохранить файл, даже если потеряются символы в указанной кодировке.
/L-
- не сохранять файл, если потеряются символы в указанной кодировке.
/L
- спрашивать о сохранении файла, если потеряются символы в указанной кодировке (по умолчанию).
/Z
- игнорировать следующий параметр командной строки.
/NewInstance
- форсировать создание нового экземпляра программы.
/MainClass("MyAkelPad4")
- задать имя класса для нового экземпляра программы. При этом имя может содержать переменную %d, которая заменяется на идентификатор процесса.
/Reassoc
- переустановить ранее назначенные ассоциации типов файлов.
/Deassoc
- снять ранее назначенные ассоциации типов файлов.
/Quit
- закончить обработку параметров командной строки и выйти из программы.
/End
- закончить обработку параметров командной строки.

Методы:
/Show(СтильГлавногоОкна)
СтильГлавногоОкна
0 скрытое окно.
1 окно как есть (по умолчанию).
2 свернутое окно.
3 развернутое окно.
6 свернутое, не активное окно.
9 не развернутое окно.
/Show(2)
метод отображает главное окно в свернутом режиме.
/OpenFile("файл"[, Кодировка][, СигнатураBOM])
"файл"
Файл для открытия.
Кодировка
Кодировка открытия. Если -1 либо не указана, она будет определена автоматически.
СигнатураBOM
Сигнатура BOM файла. Если -1 либо не указана, она будет определена автоматически.
/OpenFile("C:\File.txt", 65001, -1)
метод открывает файл в кодировке UTF-8.
/SaveFile("файл"[, Кодировка][, СигнатураBOM])
"файл"
Сохранение текущего документа в указанный файл.
Кодировка
Кодировка сохранения. Если -1 либо не указана, будет использована текущая кодировка.
СигнатураBOM
Сигнатура BOM файла. 1 - присутствует, 0 - отсутствует, -1 либо не указана - используется текущий BOM.
/SaveFile("C:\File.txt", 65001, 0)
метод сохраняет файл в кодировке UTF-8 без BOM.
/Command(ВнутренняяКоманда[, Параметр])
/Command(4162)
метод вызывает внутреннюю команду под номером 4162.
/Call("Плагин::Функция"[, дополнительные параметры])
/Call("Scripts::Main")
метод вызывает плагин Scripts и функцию Main.
/Exec("командная строка"[, "рабочая директория"][, Ожидать][, СтильОкна])
"командная строка"
Командная строка.
"рабочая директория"
Рабочая директория. По умолчанию "".
Ожидать
Ожидать завершения программы. 1 - ожидать, 0 - не ожидать (по умолчанию).
СтильОкна
См. описание СтильГлавногоОкна метода /Show(). Замечание: программы могут игнорировать данный параметр.
/Exec("notepad.exe")
метод вызывает блокнот.
/Exec(`notepad.exe`)
метод вызывает блокнот.
/Exec('notepad.exe')
метод вызывает блокнот.
/Exec('%windir%\notepad.exe')
метод вызывает блокнот.
/Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d")
метод передает активный файл для открытия по ассоциации Windows.
/Font("Шрифт", Начертание, Размер)
"Шрифт"
Имя шрифта, например, "Courier". Не изменяется, если "".
Начертание (одно из следующих):
0 игнорировать.
1 обычный шрифт.
2 жирный шрифт.
3 курсивный шрифт.
4 жирный курсивный шрифт.
Размер
Размер шрифта. Не изменяется, если 0.
/Font("Courier", 4, 10)
метод устанавливает жирный курсив Courier шрифт размером 10 pt.
/Recode(ПерекодироватьИз, ПерекодироватьВ)
ПерекодироватьИз
Кодировка источник. Если -1, она будет определена автоматически.
ПерекодироватьВ
Кодировка приемник. Если -1, она будет определена автоматически.
/Recode(1251, 866)
метод перекодирует текст из кодировки 1251 в 866.
/Insert("текст"[, Esc-последовательности])
"текст"
Вставляемый текст.
Esc-последовательности:
0 - "текст" не содержит Esc-последовательностей (по умолчанию).
1 - "текст" содержит Esc-последовательности. Набор последовательностей аналогичен диалогу поиска/замены в программе, а также:
"\s" - заменяется на выделенный в окне редактирования текст;
"\|" - указывает на положение каретки после вставки текста.
/Insert("Некая строка")
метод заменяет выделение на указанный текст.
/Insert("<B>\s</B>", 1)
метод добавляет к выделению текст по краям.
/Insert("\[0031 0032 0033]", 1)
метод заменяет выделение на "123".
/If("выражение", "ЕслиИстина", "ЕслиЛожь")
"выражение"
Выражение может содержать:
- математические операции:
+, -, *, /, %, &, |, ^.
- логические операции:
>, <, ==, !=, >=, <=, &&, ||, x?y:z.
- комментарии:
/*комментарий*/
- методы:
SendMain(nMessage, wParam, lParam)
nMessage
Сообщение, которое посылается главному окну программы.
wParam
Дополнительная информация.
lParam
Дополнительная информация.
SendEdit(nMessage, wParam, lParam)
nMessage
Сообщение, которое посылается текущему окну редактирования.
wParam
Дополнительная информация.
lParam
Дополнительная информация.
Call("Плагин::Функция"[, дополнительные параметры])
- Если вызывается плагин, то код выхода передаётся через специальный параметр &nResult. &nResult должен находится на месте, где синтаксис внешнего вызова требует указатель на число.
/If(`Call("Coder::CodeFold", 1, &nResult)`, `/Call("Coder::CodeFold", 1)`, ``)
Закрыть окно CodeFold, если открыто.
- Если вызывается скрипт, то необходимо использовать внешние вызовы 2 или 4, а также передавать код выхода из скрипта через AkelPad.ScriptExitCode.
/If(`Call("Scripts::Main", 4, "EvalCmd.js", 'if (AkelPad.GetEditFile(0)) AkelPad.ScriptExitCode(1);')`, ``, `/Quit`)
Выйти, если текущий документ не имеет имени.
- Возможно вызывать метод Scripts плагина напрямую.
/If(`AkelPad.Constants._X64 == 1`, `/Quit`, ``)
Выйти, если программа имеет битность x64.
"ЕслиИстина"
Командная строка, если результат выражения - истина (не равен нулю).
"ЕслиЛожь"
Командная строка, если результат выражения - ложь (равен нулю).
/If(`SendMain(1222 /*AKD_GETMAININFO*/, 5 /*MI_SAVESETTINGS*/, 0) == 2 /*SS_INI*/`, `/OpenFile("%a\AkelPad.ini")`, ``)
метод открывает AkelPad.ini, если настройки сохраняются в ini файл.
/Var(Флаги)
Флаги использования переменных для методов следующих далее по командной строке. Задается суммой членов:
0 не разворачивать переменные.
1 разворачивать системные переменные (например, %windir%).
2 разворачивать переменные программы %f,%d,%a. Если флаг задан, то символ % указывается как %%.
По умолчанию: 1+2=3.
/Var(0) /OpenFile("1%a%2.txt")
открыть файл "1%a%2.txt".
Переменные в методах:
Обычное использование   Пакетные файлы (bat,cmd)
%f - активный файл
%d - директория активного файла
%a - директория AkelPad'а
%% - символ %
%системная переменная%
%%f - активный файл
%%d - директория активного файла
%%a - директория AkelPad'а
%%%% - символ %
%системная переменная%
^& - символ &

4 (изменено: ser-bilichenko, 2017-11-02 00:21:08)

Re: AHK: Печать документа через AkelPad

Спасибо огромное за помощь, но я не понял как эти все параметры мне помогут напечатать документ.

5 (изменено: YMP, 2017-11-02 08:30:43)

Re: AHK: Печать документа через AkelPad

Ну, по идее, надо вызвать AkelPad с соответствующим параметром. Это /p, как я понял. Файл откроется, напечатается и закроется. Файл тоже указать, конечно.

Вызвать программу из АНК можно командой Run.