Page 1 of 1

Активировать окно FileZilla при сохранении на FTP

Posted: Tue Nov 01, 2016 6:01 pm
by Sticher78
Приветствую сокельпадчиков 8)

Вопрос следующий.

AkelPad стоит как редактор по умолчанию в настройках FileZilla для всяких html, php, xml-файлов.

После открытия файла, изменения и сохранении - нужно каждый раз переключаться на окно FileZilla, чтобы подтвердить сохранение на FTP-сервер.

А оно может быть в этот момент закрыто другими окнами.

В принципе - небольшие временные затраты и фигня-вопрос, всего-то навести мышку на окно в панели задач и активировать.

Но когда этим занимаешься постоянно - запаривает и, как говорится, секунды складываются в минуты, а те в часы.

Кто подскажет - как, при вышеуказанных действиях, активировать автоматически окно FileZilla?

Именно когда открываешь файл с FTP на редактирование и сохраняешь, и FileZilla запущена.

Posted: Tue Nov 01, 2016 6:26 pm
by Instructor
Код вызова для Hotkeys, ContextMenu или Toolbar плагина:

Code: Select all

Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105 /*IDM_FILE_SAVE*/); hWnd=AkelPad.SystemFunction().Call("user32::FindWindow" + _TCHAR, "wxWindowClassNR", "FileZilla"); AkelPad.SystemFunction().Call("user32::SetForegroundWindow", hWnd);` )

Posted: Tue Nov 01, 2016 6:39 pm
by Sticher78
Вставил в меню вкладок.

Win7 x64, Akelpad x32 v.4.9.8, FileZilla x64 v.3.22.1, EvalCmd версии 1.2, все плагины присутствуют.

Вставил вот так :

Code: Select all

"Save on FTP" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4105 /*IDM_FILE_SAVE*/); hWnd=AkelPad.SystemFunction().Call("user32::FindWindow" + _TCHAR, "wxWindowClassNR", "FileZilla"); AkelPad.SystemFunction().Call("user32::SetForegroundWindow", hWnd);` ) Icon("%a\AkelFiles\Icons\FZ.ico")
Не работает :cry:
Отрабатывает только сохранение файла, окно FileZilla не активируется.

Posted: Thu Nov 03, 2016 10:51 am
by Sticher78
Не срабатывает, мб, потому что у FileZilla в этот момент вылазит диалоговое окно сохранения?

Хотя скриптик из 3 строк вызывает его окно:

Code: Select all

var WshShell;

var WshShell = new ActiveXObject("WScript.Shell");

WshShell.AppActivate ("FileZilla");
я его обозвал ActivateFZ.js и положил в "%a\AkelFiles\Plugs\Scripts\ActivateFZ.js".

Мб, его как-то прикрутить к сохранению?

Posted: Thu Nov 03, 2016 10:29 pm
by Sticher78
В общем, сам спросил - сам и ответил.

Добавил в начало скриптика вызов внутренней команды сохранения и получил, то что хотел:

Code: Select all

AkelPad.Command(4105); 

var WshShell;
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.AppActivate ("FileZilla");
Скрипт обозвал, как мне надо и на кнопку на тулбаре повесил его вызов.

Instructor, я хз, почему не работает твой код, но спс за пинок в правильном направлении.

Глядишь - кому пригодится данный код.

Posted: Mon Dec 25, 2017 8:12 pm
by Evgenyatam
строку var wshSell; можно убрать.

Posted: Thu Aug 09, 2018 8:18 am
by Eskander88
подскажите пожалуйста, какой инструкцией в скрипте можно проверить, что файл не изменялся?

скажем, если делается горячая клавиша на скрипт, и при нажатии сочетания нужно чтобы фокус не перебрасывался на окно другой программы в тех случаях, когда на вкладке файла не горит звёздочка (т.е файл не отличается от сохранённого)

Posted: Thu Aug 09, 2018 3:33 pm
by opk44
Eskander88
Анализируется не "звездочка" (в зависимости от установок ShowModify её может и не быть), а то, что вызывает её появление - AEM_GETMODIFY.
См. примеры использования в скриптах UndoAll.js, UndoAllNoScroll.js, undoRedoAll.js, winMergeTabs.js

Posted: Fri Aug 10, 2018 5:28 am
by Eskander88
Спасибо! Из UndoAll.js собрал рабочий фрагмент

Code: Select all

var  hWndEdit=AkelPad.GetEditWnd();
if   (AkelPad.SendMessage(hWndEdit, 3086 /*AEM_GETMODIFY*/, 0, 0))
     {WScript.Echo("ЕСЛИ ФАЙЛ ИЗМЕНЁН"); /*ИЛИ ИНОЙ КОД */ }
else {WScript.Echo("ЕСЛИ ФАЙЛ ПРЕЖНИЙ"); /*ИЛИ ИНОЙ КОД */ }

команда в js-скрипте, чтобы закрыть AkelPad

Posted: Sun Mar 31, 2019 9:17 am
by Eskander88
подскажите, какую можно использовать инструкцию в js-скрипте AP, чтобы закрыть AkelPad со всеми вкладками. Пытаюсь сделать скрипт с опцией перезапуска или закрытия AP в зависимости от условия, вот застрял..

Posted: Sun Mar 31, 2019 2:56 pm
by opk44
Eskander88
1. для закрытия:

Code: Select all

AkelPad.Command(4109);
2. для перезапуска, посмотрите "restart.js" ((c) Infocatcher 2014). Но там используется сторонний софт:
// Dependencies:
// Sessions plugin
// NirCmd utility - http://www.nirsoft.net/utils/nircmd.html

Posted: Sun Mar 31, 2019 5:27 pm
by yozhic
opk44 wrote:Но там используется сторонний софт:
Без стороннего софта у KDJ.

Posted: Sat Apr 27, 2019 2:20 pm
by Eskander88
Спасибо