Отличный рантайм, по мне. Есть куча всего. Меня устраивает, а кому не нравится - так ведь и не заставляют же. Пускай хоть на батч файлах пишет, там рантайм вообще нулевой )))
Posted: Sun Mar 18, 2012 2:12 pm
by Instructor
Благодаря инициативности DV, рациональные предложения по изменению внешних вызов плагина, были реализованы
Posted: Sun Mar 18, 2012 2:17 pm
by Instructor
Добавлено: параметр во внешний вызов с кодом 3, для получения состояния запуска приложения (Log::Output). Добавлено: внешние вызовы с кодом 4 и 5 для установки/добавления текста в панель вывода (Log::Output).
Added: parameter in external call with code 3 to get execution state (Log::Output). Added: external calls with code 4 and 5 to set/add text in the output panel (Log::Output).
Что-то здесь не так...
Если у меня в Log::Output запущен cmd.exe, то как только я вызываю Call("Log::Output", 5, "* 123 *"), тут же пропадает поле ввода и кнопки Ввод и Стоп, лишая возможности набрать "exit" для завершения cmd.exe.
А Call("Log::Output", 3) иногда возвращает ненулевой PROCESSHANDLE, но нулевой PLUGINTHREAD.
Posted: Sun Mar 18, 2012 6:24 pm
by Instructor
DV
Как ведет себя версия 2.0?
Posted: Sun Mar 18, 2012 6:44 pm
by DV
Instructor wrote:Как ведет себя версия 2.0?
Первое (кнопки) починилось, второе (PLUGINTHREAD) - нет. Вот этот кусок мне не нравится:
if (IsExtCallParamValid(pd->lParam, 2))
lpdwExecState=(DWORD *)GetExtCallParam(pd->lParam, 2);
if (IsExtCallParamValid(pd->lParam, 3))
lphExecThread=(HANDLE *)GetExtCallParam(pd->lParam, 3); if (IsExtCallParamValid(pd->lParam, 4))
lphExecThread=(HANDLE *)GetExtCallParam(pd->lParam, 4);
И похоже, что параметр APPEND в "Log::Output",5 игнорируется.
Кстати, а зачем разделение на "Log::Output",4 и "Log::Output",5 ?
Вот обновлённый проверочный скрипт для всего этого дела:
Как-то странно это. Разве тип строки скрипта не определяется системой? (ANSI в 9x, Unicode в 2000 и выше)
Posted: Mon Mar 19, 2012 11:08 am
by FeyFre
Т.е. получается, что для вывода строк из скрипта по сути нужно использовать что-то вроде
Во-первых, в формуле должно быть _SIZE (_TSTR это "A" или"W" ) .
Во-вторых, забыл в формуле -1: 4 + _TSIZE = 5 или 6 (_TSIZE == 1 или 2)
В-третьих, из скрипта можно всегда использовать Юникод вариант, ибо WSH реализован на COM который только Юникод. Разве что передашь аргументом указатель на нативную память(выделенные и заполненных через MemAlloc, MemCopy), что будет очень редким исключением.
Posted: Mon Mar 19, 2012 1:18 pm
by DV
(_TSTR это "A" или"W" )
Неправда.
_TSTR
_____
Константа, определяющая тип строки. Используется для методов MemCopy и MemRead.
В-третьих, из скрипта можно всегда использовать Юникод вариант, ибо WSH реализован на COM который только Юникод.
Спасибо. Точно, всё время забываю, что в неюникодной системе есть что-то юникодное
Posted: Mon Mar 19, 2012 2:54 pm
by FeyFre
Неправда. Scripts-Rus.txt
Действительно то _TCHAR. Но как оказалось это не важно
Posted: Wed Mar 21, 2012 1:15 pm
by DV
Если клацнуть правой клавишей мыши по заголовку окна Log::Output, то появляется всплывающее меню, но команды "Очистить" и "Выделить все" не работают. Если же клацнуть над окном редактирования Log::Output, то во всплывающем меню все команды работают.
Posted: Thu Mar 22, 2012 6:12 am
by Instructor
Исправлено: контекстное меню на заголовке плагина (Log::Output).
Fixed: context menu on plugin caption (Log::Output).
В общем такая вот пакость(Log 2.2):
1. Открыл лог-файл.
2. Включил Log::Watch(Настройки: интервал обновления 1сек, "не перемещать курсор в конец файла". MDI).
Оно себе работает.
3. Занимаюсь своими делами дальше, в том числе и удаляю файл за которым наблюдает лог. При этом к активному наблюдению за логом я вернусь на много позже.
4. Доходят руки до лога(вновь запустил приложение пишущее лог) - переключаюсь на АР. Сюрприз: меня переключило на окно "Can't open file. Plugin will be stopped." в правом нижнем углу. Короче, этих окон там, мягко говоря, много - по окну на каждую секунду после удаления файла.
Надо как-то притормозить с выдачей этих окон, хватит и одного.