Спасибо!Instructor wrote:Исправлено: ошибка при закрытии программы с открытым немодальным диалогом (Win7).

Добавлено: дублирующий метод WScript.Arguments.Count для WScript.Arguments.Length.
Code: Select all
//WScript.Arguments object
[uuid(DBE547D2-2917-4945-A73E-5E583C3F2EB8), helpstring("IWArguments object"), object]
interface IWArguments : IDispatch
{
//"Retrive argument by index."
[id(DISPID_VALUE), propget] HRESULT Item(int nIndex, [out, retval] BSTR *wpItem);
//"Get number of arguments."
[id(1), propget] HRESULT Length([out, retval] int *nItems);
//"Get number of arguments."
[id(2), propget] HRESULT Count([out, retval] int *nItems);
};
Code: Select all
AkelPad.Library("library")
Специальный метод для подключения - здорово! Можно было бы назвать Use или Include (я смотрел, в некоторых редакторах он называется Include).FeyFre wrote:В основном скрипте делаем такой вызов:Code: Select all
AkelPad.Library("library")
Code: Select all
eval(AkelPad.ReadFile(AkelPad.GetAkelDir(5) + "\\MyScript.js"));
Code: Select all
AkelPad.Include(AkelPad.GetAkelDir(5) + "\\MyLibrary.dll") //dll, js, vbs и т.п...
Один-единственный модуль? А кто его будет поддерживать? И решать, какие функции добавить, а какие нет? Тогда уж делать полноценный LoadLibrary("..."), но тогда вопрос, как указать, что функция должна грузиться из такой-то длл-ки. Надо будет делать что-то вродеищем файл library.dll - бинарный платформозависимый модуль, написанный на любом удобном языке
Я высказал упрощенную идею. Детали уже все продуманы(точнее одолжены кое-где), ну например:Ну и возвращать методом True (нашёл и подключил) или False (не смог).
Желателен ещё необязательный Boolean-параметр "Выводить или не выводить сообщение об ошибке" (по умолчанию "выводить").
Code: Select all
var user32 = AkelPad.Library('user32');
user32.CreateWindowEx
Code: Select all
AkelPad.Library('gdi32');
gdi32.CreateWindowEx
Code: Select all
AkelPad.LibPath = "C:\\mydir1\\mydir2\\?.js;C:\\mydir1\\mydir2\\?.vbs;C:\\mydir1\\mydir2\\?.dll"
А кто поддерживать будет плагины, если автор окочурится через два дня?Один-единственный модуль? А кто его будет поддерживать?
В последней инстанции - автор. Думаю автор всё-таки выслушает пожелания пользователей. А если нет - ну дык я не предлагаю полное замещение AkelPad.SystemFunction, я предлагаю облегчить жизнь скриптописателям.(Здорово же Вам облегчает жизнь new ActiveXObject("Scripting.FileSystemObject") вместо oSys.Call("kernel32::FindFirstFile"+_TCHAR) )И решать, какие функции добавить, а какие нет?
Ну это решает только часть проблемы. Да и велосипедостроением попахивает(в смысле TypeLib)hLib = LoadLibrary("...");
ImportFunctions(hLib, "Func1; Func2; Func3");
1,2 идея понравилась, 3-я - нет (не нравится сам факт поиска и перебора путей где-то, если я хочу подключить 1 файл, который лежит по точно известному мне пути).FeyFre wrote:Я высказал упрощенную идею. Детали уже все продуманы(точнее одолжены кое-где)...
Вот я решил выдернуть оттуда хотя бы что-то хорошее и прикрутить в к хорошей программе.
Реально облегчает!FeyFre wrote:...я предлагаю облегчить жизнь скриптописателям.(Здорово же Вам облегчает жизнь new ActiveXObject("Scripting.FileSystemObject") вместо oSys.Call("kernel32::FindFirstFile"+_TCHAR) )
Ну то есть предполагается это тоже на Инструктора повесить? В таком случае легче в сам плагин функции встраивать.А кто поддерживать будет плагины, если автор окочурится через два дня?
А на мой взгляд, как раз вариант с одной единственной либой попахивает костылём. Тем более что после реализации подгрузки из захардкоденной либы до произвольных либ остается один шаг.Ну это решает только часть проблемы. Да и велосипедостроением попахивает