Page 2 of 2

Posted: Mon Mar 07, 2016 2:33 pm
by Skif_off
Eskander88 wrote:Скажем, что бы работал что-то вроде:

Code: Select all

Exec(`cmd.exe /k echo `+AkelPad.GetSelText())
Где +AkelPad.GetSelText() - возвращает фрагмент выделенный в тексте.

Code: Select all

Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Exec("cmd.exe /k echo " + AkelPad.GetSelText());`)

Posted: Sun Apr 10, 2016 6:32 pm
by Eskander88
У меня такой вариант:

Code: Select all

Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Exec('cmd.exe /k '+AkelPad.GetSelText())`)
чтобы не было проблем, если попадутся (") кавычки.

Заинтересовал вариант, когда можно отправлять команды в несколько строк. Самый близко-обозримый способ реализации:
1. Получить значение выделенного фрагмента (с этим понятно)
2. Создать файл.
3. Записать фрагмент.
4. Сохранить в зарезервированную директорию.
5. Передать через Script::Main уже готовый bat-файл из зарезервированной директории (с этим понятно)

Подскажите, какие API можно использовать для реализации данных шагов.
А вообще есть ли готовое решение?

Posted: Sun Apr 10, 2016 7:48 pm
by KDJ
Eskander88
Script.js:

Code: Select all

var sFile = "C:\\MySelText.cmd";
AkelPad.SaveFile(0, sFile, -1, -1, 0x2 /*SD_SELECTION*/);
AkelPad.Exec('cmd.exe /k "' + sFile + '"');
or using EvalCmd.js:

Code: Select all

"" Call("Scripts::Main", 1, "EvalCmd.js", `var sFile = "C:\\MySelText.cmd"; AkelPad.SaveFile(0, sFile, -1, -1, 0x2 /*SD_SELECTION*/); AkelPad.Exec('cmd.exe /k "' + sFile + '"');`)