Page 14 of 74

Posted: Fri Feb 12, 2010 4:23 pm
by se7h
VladSh wrote:И о5 метод Call.
Scripts-Methods.txt wrote:Call AkelPad plugin.
Call(pFunction[, ...]);

Return Value
-1 //UD_FAILED Operation failed.
0 //UD_UNLOAD Plugin unloaded
Для отключения плагина Hotkeys использую строку:

Code: Select all

if (AkelPad.Call("Hotkeys::Main") == 0)
вместо отключения плагина вылетает диалог настроек Hotkeys.
Попробуй так:

Code: Select all

var nResult=AkelPad.Call("Hotkeys::Main");

if (nResult == 0)
VladSh wrote:Для вызова окошка плагина AutoComplete пишу:

Code: Select all

AkelPad.Call("AutoComplete::Main");
раньше окошко показывалось, теперь вылетает диалог настроек AutoComplete.

Что я делаю не так :?:
Изменено: теперь AutoComplete::Main выполняет функцию диалога.

Posted: Fri Feb 12, 2010 4:31 pm
by VladSh
Не помогло.

Да, я это читал. Имел ввиду: "и что теперь делать?" :)

Posted: Fri Feb 12, 2010 4:39 pm
by se7h
так всё работает (я добавил "1")

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.document");
var nResult=AkelPad.Call("Hotkeys::Main", 1);

Posted: Fri Feb 12, 2010 5:13 pm
by VladSh
Не, это только диалог перестал вылетать, а отключение плага Hotkeys не работает и вызов окошка AutoComplete также не работает.

Posted: Fri Feb 12, 2010 5:22 pm
by Instructor
VladSh
И о5 метод Call.
В релизе шла речь про системный Call он к вызову плагинов не относится, тем более AddParemeter не применим к вызову плагинов :)
...вызов окошка AutoComplete также не работает.

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.document");

if (AkelPad.IsPluginRunning("AutoComplete::Main"))
  AkelPad.Call("AutoComplete::Main::WithList");

Posted: Fri Feb 12, 2010 5:25 pm
by se7h

Code: Select all

if (AkelPad.Call("Hotkeys::Main") == 0)
не совсем пойму почему он должен закрываться такой строкой?

добавлено:
пока я писал это сообщение, Александр успел расставить все точки над "i" :lol:

Posted: Fri Feb 12, 2010 5:47 pm
by VladSh
se7h wrote:не совсем пойму почему он должен закрываться такой строкой?
Потому, что в окне плагинов одна кнопка "Вызвать", которая раньше работала циклически, т.е. Вкл/Выкл плагин, и я думал, что на этой кнопке и есть вызов Call, тем более в доке написано

Code: Select all

0  //UD_UNLOAD               Plugin unloaded
ну я и понял, что значит плагин выгружается.

Instructor wrote:VladSh
И о5 метод Call.
В релизе шла речь про системный Call он к вызову плагинов не относится, тем более AddParemeter не применим к вызову плагинов :)

Code: Select all

AkelPad.Call("AutoComplete::Main::WithList");
Спасибо! Половина проблемы решена :)
P.S. Я так и не понял, что за AddParemeter и как его использовать...

Posted: Mon Feb 22, 2010 10:18 am
by VladSh
Когда-то мы обсуждали такую весчь:
wrote:AkelPad.SendMessage(hMainWnd, 1178 /*AKD_WAITKEYBOARD*/, 0, 0);
В AKD_WAITKEYBOARD нет необходимости если SendKeys не используется.
Интересно, как сделать, чтобы нажатие клавиши игнорировалось?
Например, с помощью комбинации клавиш я запускаю проверку орфографии, так вот нужно, чтобы во время выполнения скрипта для определённого hEditWnd эта комбинация клавиш не работала бы. Это нужно, чтобы исключить повторный вызов скрипта по горячим клавишам, т.к. тогда возникают клины... Повторный вызов скрипта возможен, когда файл большой (долго инициализируется Вордина), а я, к примеру, не уверен, что дожал клавишу вызова скрипта :) (клавиатура старая и т.п...) и потому нажимаю ещё раз.
Возможно ли какое-то решение (может уже было, но я забыл)?

Posted: Fri Feb 26, 2010 8:42 am
by Instructor
Это нужно, чтобы исключить повторный вызов скрипта по горячим клавишам...
С тех пор, как были ликвидированы методы CreateMutex, OpenMutex, ReleaseMutex, Scripts плагин не дает запускать более одного скрипта одновременно.

Posted: Fri Feb 26, 2010 8:53 am
by Instructor
Добавлено: режимы регистрации Scripts.dll:
- Ручной - пользователь регистрирует и дерегестрирует самостоятельно (по умолчанию).
- Автоматический - если Scripts.dll не зарегестрирован, либо зарегестрирован по другому пути, то происходит регистрация/перерегистрация.
- Портативный - если Scripts.dll не зарегестрирован, либо зарегестрирован по другому пути, то происходит регистрация/перерегистрация. После завершения работы программы плагин дерегестрируется и возвращает регистрацию по другому пути (если была).
Добавлено: сохранение ширины колонок.

Added: Scripts.dll registration mode:
- Manual - a user registers and unregister manually (by default).
- Automatic - if Scripts.dll not registered or registered in another path, then it will be registered / re-registered.
- Portable - if Scripts.dll not registered or registered in another path, then it will be registered / re-registered. When program close, Scripts.dll unregistered and registration in the another path (if it was) returned.
Added: column width saving.


Scripts plugin v5.0

Posted: Fri Feb 26, 2010 9:04 am
by se7h
просто песня :)

Posted: Thu Jun 03, 2010 8:44 am
by VladSh
Instructor

SplitSwitch_alternative.js у меня работает корректно, т.е. отрабатывает всегда, в отличие от "штатного" варианта, который при переходе от 4-х окон к 2-м иногда вообще удалял всё разбиение и приходилось тыкать в менюшку по нескольку раз. Спасибо KDJ :!:
Предлагаю именно этот вариант разместить в дистрибутиве плагина под названием SplitSwitch.js.

Posted: Sat Jun 19, 2010 10:45 am
by Instructor
Изменено: ядро плагина переписано:
- Теперь не требуется регистрация плагина, т.к. он уже не является ActiveX элементом.
В связи с этим необходимо обновить скрипты убрав строчку из кода:
var AkelPad=new ActiveXObject("AkelPad.document");
Объект "AkelPad" при этом можно использовать как обычно.
- Теперь скорость запуска скриптов практически мгновенна (медленный только инициализирующий запуск), т.к. плагин обрабатывает скрипт самостоятельно (без WScript.exe).
- Теперь нет ограничения на символы при передаче параметров скрипту через внешний вызов.
- Теперь при использовании стилей для окон и кнопок диалоги выглядят соответствующе, т.к. плагин работает из под процесса AkelPad'а.
- Более удобная отладка. При ошибке в скрипте можно сразу перейти на место ошибки.
Изменено: код 2 теперь присвоен новому вызову, позволяющему вызвать скрипт и ожидать его завершения. Прежний же вызов, открывающий скрипт на редактирование, теперь имеет код 3.
Добавлено: русская помощь по методам плагина.
Добавлено: скрипт ShowMenu.js, который позволяет показывать пользовательское меню.

Modified: rewritten the plugin core:
- Now isn't required to register the plugin, because it is no longer ActiveX component.
In this connection, you must update the scripts by removing the line of code:
var AkelPad=new ActiveXObject("AkelPad.document");
Object "AkelPad" can be used as usual.
- Now script start time is almost instant (slow only initial execution), because plugin handles the script itself (without WScript.exe).
- Now there is no limit on the characters when passing parameters via an external call.
- When you use styles for windows and buttons, dialogs appear styled, since plugin works in the process of AkelPad.
- More convenient debugging. When an error in the script appear you can go directly to the place of the error.
Modified: code of 2 is now assigned to the new call that execute script and wait for its completion. Previous call that opens the script for editing, now has a code 3.
Added: Russian help on plugins methods.
Added: script ShowMenu.js, which allows you to display custom menu.


Scripts plugin v6.0

Posted: Sat Jun 19, 2010 4:36 pm
by se7h
- Теперь не требуется регистрация плагина, т.к. он уже не является ActiveX элементом.
очень мудрый ход

Posted: Sat Jun 19, 2010 4:48 pm
by Infocatcher
Instructor wrote: В связи с этим необходимо обновить скрипты убрав строчку из кода:
var AkelPad=new ActiveXObject("AkelPad.document");
Объект "AkelPad" при этом можно использовать как обычно.

Code: Select all

var origActiveXObject = ActiveXObject;
ActiveXObject = function(name) {
	if(name == "AkelPad.document")
		return AkelPad;
	return origActiveXObject.apply(this, arguments);
};
Ммм?

То есть разумно реализовать нечто вроде «изнутри». Если это возможно, конечно. И если никаких других проблем с обратной совместимостью нет.