Instructor
Хочу поблагодарить за метод GetTextRange. С ним работа с текстом превратилась в почти чистую математику!
Почти потому, что ещё хотелось бы без проблем вставлять текст вне зависимости от того, включен SmartSel::NoSelEOL и т.п. или нет, т.е. без выделения текста методом SetSel. Для этого нужен BE-метод для записи текста в заданные границы, т.е. что-то типа
function TRACE(text)
{
text = "AKELPAD: "+text+"\n";
var buffer = AkelPad.MemAlloc(text.length*2+2);
if(buffer)
{
AkelPad.MemCopy(buffer, text, 1);
AkelPad.SystemFunction().Call("kernel32::OutputDebugStringW",buffer);
AkelPad.MemFree(buffer);
}
}
Posted: Wed Aug 04, 2010 4:09 pm
by Fr0sT
FeyFre ну и что с этим чудом враждебной техники делать? Где посмотреть то, что она выводит?
Да, во избежание неверных предположений: погуглил, в мсдн прочитал. Способов применять без посторонних утилит не нашел.
Posted: Wed Aug 04, 2010 4:45 pm
by FeyFre
Fr0sT
Спрашивали "отладочная консоль", вот я Вам и выдал как туда писать.
Смотреть можно так:
1. DBGVIEW - утилита от Sysinternals(Руссинович и Ко). Читает отладочную печать всей системы, в том числе и ядра. Финальные версии большинства приложений отладочной печати не делают, только в крайних случаях, так что не думаю что запутаетесь.
2. Любой отладчик пользовательского уровня. От NTSD до MSVS. Отображают отладочною печать тех процессов которые они отлаживают.
Без сторонней утилиты не получится ничего. Вы в отладке, а значит сухим из воды Вам не выйти. Если так нужно - организуйте логирование: в файл, в Eventlog, в Реестр. Но опять же, без сторонних утилит Вы не посмотрите ни в файл(да, файловый просмотрщик считается сторонней утилитой), ни EventLog, ни Реестр. Других способов отладки не существует(отладчики на современных процессорах сами себя отладить не могут, даже мертвый SOFTICE).
Моё дело предложить.
Posted: Wed Aug 04, 2010 5:17 pm
by Fr0sT
Спрашивали "отладочная консоль", вот я Вам и выдал как туда писать.
Вообще подразумевалось что-то вроде консоли ошибок у Оперы. Отдельное окно, куда складируются сообщения.
Смотреть можно так
1) можно попробовать
2) а что мне этим дебаггером отлаживать? Акель, плагин? Их ещё скомпилить для этого надо.
Если так нужно - организуйте логирование: в файл, в Eventlog, в Реестр
Вот я и пытался в файл складывать. Однако почему-то вполне стандартные методы выдают ошибку. Вот и приходится велосипеды с квадратными колесами изщобретать...
Posted: Wed Aug 04, 2010 6:27 pm
by FeyFre
Вообще подразумевалось что-то вроде консоли ошибок у Оперы. Отдельное окно, куда складируются сообщения.
Ну дык мы не на Опере что-бы сразу в то русло думать. Кроме того, то что Вы подразумевали может обеспечить только Инструктор, а раз обращения к Инструктору прямо не было, то логично было сделать вывод что Вы подразумевали что-то другое.
2) а что мне этим дебаггером отлаживать? Акель, плагин? Их ещё скомпилить для этого надо.
1. Отладчик может присосаться минимум к процессу Юзерспейс, либо к ядру. Так что имелось в виду "отладчик, присосись к процессу которые исполняет это скрип, т.е. к АкелПад".
2. Отладка не подразумевает собой автоматическое наличие:
1. Наличия исходников(можно обойтись картами, базами символов, прочим)
2. Специально скомпилированных файлов с отладочной информацией(можно отлаживать пошагово процессорный код)
3. Пошаговый проход и точки останова вообще(отладка не только для это существует, и наш случай тому подтверждение - только посмотреть отладочный вывод)
Я не знаю почему методы, которые Вы используете "сбоят", и почему во время отладки Вы боитесь запустить отладчик.
С той функцией, которую я написал, посмотреть отладочный вывод Вам особых хлопот не причинит.
Просто запустите Акел под отладчиком, например так(с командной строки):
, и работайте как работали. При каждом вызове функции в окне отладчика Вы увидите то что Вы ей скормили(+рамка которую Вы можете поменять самостоятельно). Так Вы можете натыкать вызова хоть каждую строчку.
Posted: Thu Aug 05, 2010 8:30 am
by VladSh
Instructor
После вызова справки с помощью LanguageHelp.js открывается процесс от AkelPad'а, который делает что-то нехорошее с прорисовкой окна редактирования... При выполнении скриптов не видно результата их выполнения, а затем, когда закрываешь справку, все изменения сразу же и отображаются.
Можно ли что-то с этим сделать? Т.к., получается, пока смотрю справку, то не могу работать в Акеле, а хотелось бы открыть справку и пусть она всё время висит, и продолжать работать с прогой.
Может добавить в Scripts-плагин метод Exec по аналогии с Exec ContextMenu-плагина?
Posted: Thu Aug 05, 2010 10:44 am
by Fr0sT
раз обращения к Инструктору прямо не было, то логично было сделать вывод что Вы подразумевали что-то другое.
Ну вообще фраза "Прошу реализовать" в теме плагина вроде как подразумевает, что это обращение к Инструктору...
Отладка 1/2/...
Пушка и воробьи, имхо.
Просто запустите Акел под отладчиком, например так(с командной строки):
На самом деле, в этом нужды нет, с утилитой Руссиновича всё хорошо видно.
Да и в итоге она сама тоже не понадобилась - волшебным образом вывод в файл заработал! Спасибо за интересный вариант функции, но теперь в таких сложностях нет нужды
Posted: Sat Aug 07, 2010 2:41 pm
by KDJ
Fr0sT wrote:KDJ
while current InputBox is a simple wrapper over WinAPI function, the thing what you want is a custom dialog window. You can create it in script, see Search script example.
Thank you very much for your advice. I use it in the script InsertText.js.
Posted: Tue Aug 10, 2010 10:18 am
by VladSh
Instructor
Сделайте пожалуйста окно скриптов немодальным, т.к. иногда очень неудобно работать...
Например, иногда надо открыть несколько скриптов сразу, но нажатии "Изменить" или "Выполнить", окно закрывается.
Также иногда было бы неплохо сделать изменения в скрипте без закрытия окна скриптов, а потом протестить вновь.
Или удобно было бы иметь возможность запускать последовательно несколько скриптов из окошка.
Posted: Tue Aug 10, 2010 3:06 pm
by se7h
VladSh wrote:Instructor
Сделайте пожалуйста окно скриптов немодальным, т.к. иногда очень неудобно работать...
Например, иногда надо открыть несколько скриптов сразу, но нажатии "Изменить" или "Выполнить", окно закрывается.
Также иногда было бы неплохо сделать изменения в скрипте без закрытия окна скриптов, а потом протестить вновь.
Или удобно было бы иметь возможность запускать последовательно несколько скриптов из окошка.
поддерживаю, может вообще убрать модальные окна в плагинах? разве есть моменты, когда без них не обойтись?
Posted: Thu Aug 12, 2010 7:48 pm
by FeyFre
Fr0sT wrote:Это-то понятно, коллбэк средствами JS никак не сэмулируешь.
Хоть и это утверждение с первого взгляда сомнений не вызывает, я даже с ним неявно согласился, но:
Хотелка: поддержка CALLBACK. Т.е. что-бы можно было со скрипта вызвать функции которые требуют указатели на CALLBACK функции(оконные/диалоговые процедуры, перечислители, фильтры, сравнения).
Я думал что это не возможно, пока не напоролся на готовую реализацию нативных вызовов в скриптовой функции(только это не на JS)
Posted: Fri Aug 13, 2010 6:25 am
by Fr0sT
FeyFre, ого! А кинь ссылку на эту реализацию, зело любопытно!
Posted: Fri Aug 13, 2010 7:07 am
by DV
FeyFre wrote:Я думал что это не возможно, пока не напоролся на готовую реализацию нативных вызовов в скриптовой функции
Да, к примеру, это умеет Gentee (http://gentee.com/). Причем исходники Gentee открыты - на тот случай, если кто захочет в них покопаться. Но это, конечно, не JScript
Posted: Fri Aug 13, 2010 7:22 am
by FeyFre
Fr0sT
Как я уже говорил - это реализация не для JS. C/Invoke. Есть биндинги для Lua, Java, Kite GTK-server.
Меня собственно интересовали биндинги на Lua, ну и оффсайт выдал мне сюда ссылку. Я вчера проанализировал код: час разбирался у чего и откуда растут тентакли, м чему и в какую дырку они входят, но потом стало всё очень даже ясно. Впечатлил список поддерживаемых ОСей, архитиктур и компиляторов(а также соглашений вызовов).