Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
UnicodeRTFEdit - просьба потестить
toizyДата: Четверг, 20 Декабря 2007, 16:46 | Сообщение # 1
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Собсно, UnicodeRTFEdit - это многофункциональный текстовый редактор с полной поддержкой Юникода, для работы с текстовыми файлами и rtf. До сих пор это самый маленький плагин-редактор (45 кб), при том, что он достаточно большой, функций действительно много (ок 200). Главный упор был сделан именно на Юникод, поскольку ни один из известных мне плагинов такого рода нормально Юникод не поддерживал.
Основные характеристики:
- умеет работать с rtf и простыми текстами в форматах ansi, utf (8, 16LE, 16BE), читать и сохранять
- куча настроек поведения и вида, вплоть до наклеивания картинки в качестве фона для текста
- настройка и управление прокруткой текста
- большие возможности по контролю за вводом (upper\lower case, запрещение ввода опред. символов и т.д.)
- программное создание гиперссылок в тексте (и обработка щелчков на ссыылках)
- поддержка OLE (внедрение файлов в текст), правда, пока кривая и неполная
- программное нажатие любых клавиш в поле плагина, программный ввод любых символов и установка каретки
- получение информации почти о любых состояниях плагина
- программный поиск\замена (без использования стандартного диалога)
- моя авторская функция автотайпинга smile Ещё никто такую не придумал smile Смотрится очень красиво
- работа с буфером обмена, и много прочей удобной хрени

Это мой достаточно старый проект, уже заброшенный, но я решил его оживить. Я поработал над ним вчера и сегодня, попытался вспомнить, чё же я там понаписал smile Добавил панельку начальной настройки плагина, которая вызывается такой большой кнопкой в окошке свойств плагина, если кто не знал. Пока панелька служит для настройки имён сценариев, которые плагин вызывает на различных событиях. Но чё-та не нравицца она мне. Во-первых, добавляет лишние кило кода, а во-вторых, мне показалось, что плагин стал каким-то неустойчивым. И вот моя просьба - кому интересно, качайте и потестируйте на предмет глюков, вылетов и т.п. До совершенства далеко, и если вдруг какие-то обнаружатся проблемы именно с панелькой, снесём её на ... Ну и ваще ваши мнения, чё там надо добавить, и т.д. За паролем - в личку.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
toizyДата: Четверг, 20 Декабря 2007, 16:53 | Сообщение # 2
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
типа архив

Добавлено (20 Декабрь 2007, 16:53)
---------------------------------------------
ЗЫ блин. В архиве - дока, что очень рекомендуется к прочтению. Описаны, кажется, все функции плагина на данный момент, но может что-то я упустил. Там же пара картинок для фона и несколько текстовых файлов на тайском smile

Прикрепления: UnicodeRTFEdit.7z (148.4 Kb)


Жизнь оказалась не такой уж и забавной, как поначалу...
 
humanoidДата: Четверг, 20 Декабря 2007, 19:35 | Сообщение # 3
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Там хрен поймешь какой пароль... angry

Hi, from Moon!
 
toizyДата: Четверг, 20 Декабря 2007, 20:21 | Сообщение # 4
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (as-master)
Если хочешь чтоб твой плагин тестили,
нечего пароль на архив ставить!
Из прынцыпа не буду просить! smile

Ну может я не хочу давать его никому кроме своих, ну мож моё это дело. Ты сам подумай, что будет, ежели лажовая версия пойдёт по рукам. Удар по моему имиджу на...


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Четверг, 20 Декабря 2007, 20:47 | Сообщение # 5
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Посмотрю! Пароль на мыло вышли.
 
YURIYДата: Пятница, 21 Декабря 2007, 19:10 | Сообщение # 6
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
toizy, мне вышли, пожалуйста, в ЛС password.

Добавлено (21 Декабрь 2007, 19:10)
---------------------------------------------
Да, неплохо замахнулся smile Молодец!

Один косяк нашёл. Жми StartTyping, жди окончания вывода текста и жми TerminateTyping: выходит ошибка MMB...



Вечная память Андрею Сергееву!
 
as-masterДата: Пятница, 21 Декабря 2007, 19:33 | Сообщение # 7
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Замахнулся не то что неплохо, а вообще слишком круто!!!
А посему обсуждать сразу все функции, равно как и тестить
сразу весь плагин, неразумно. Давайте делать это по частям.

Вот пока сразу что не понял.
Для чего нужны функции GetFile Type и Hide Selection?
Из названия вроде-то понятно, но нажимаю их и ничего не
происходит.

Второе. Функция Load From File загружает текст из внешнего
файла. При повторном использовании функции другой файл
не загружается - в текстовом поле остается ранее загруженный.
И чё? Надо сначала первый файл закрыть? И как?...

Вот, отвечай сначала на эти вопросы.
Так потихоньку и расковыряем твой плагин, а сразу всё -
НИАСИЛИМ - СЛИШКАМ МНОГА ФУНКЦЫЙ


Да пребудет с вами ММВ!
 
toizyДата: Пятница, 21 Декабря 2007, 23:59 | Сообщение # 8
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (as-master)
Для чего нужны функции GetFile Type и Hide Selection?

А ридми почитать? Там всё описано, не густо, правда, но всё же. GetFileType пытается определить формат файла - RTF, UTF8, UTF16LE, UTF16BE или ANSI. Каждый файл из перечисленных (кроме ANSI, т.е. plain text) имеет свою "подпись". У rtf это {\rtf1\, у UTF - специальная группа из 4 байт, определяющая порядок следования байт. Но не важно. Главное, GetFileType определяет тип файла, чтобы ты мог как-то настроить свою прогу, или там ещё какие предварительные действия провести. HideSelection определяет, будет ли поле плагина скрывать выделение, если потеряет фокус ввода. Попробуй и так и так - увидишь разницу.

Quote (as-master)
чё? Надо сначала первый файл закрыть? И как?...

"Элементарно, Кваксон" smile Сперва Clear, потом LoadFromFile. Я так сделал, чтобы текст добавлялся к уже имеющемуся, а не заменял его. Иначе, когда тебе потребуется добавить текстовый файл к тому, что уже имеется, то придётся выполнять кучу манипуляций, абсолютно не нужных. Так надёжнее и экономичнее с точки зрения использования памяти. Проще всё всё время вызывать Clear.

Добавлено (21 Декабрь 2007, 23:50)
---------------------------------------------

Quote (Yuriy)
Жми StartTyping, жди окончания вывода текста и жми TerminateTyping: выходит ошибка MMB...

Ща гляну

Добавлено (21 Декабрь 2007, 23:54)
---------------------------------------------
Юра, ты прав smile Поправил.

Добавлено (21 Декабрь 2007, 23:59)
---------------------------------------------
Вообще я что хочу узнать - падает или нет, как часто падает, у кого, при каких обстоятельствах и т.д. Хочу отточить его до блеска, а уж потом писать нормальный хелп. Вот Алекс мне сейчас помог - выявил странное повеление плагина, причину которого предстоит выяснить.

А то ж задача была весьма специфичная, только в 498 ММВ перестала перекрывать некоторые сообщения плагина (очередной их багофикс), так я даже форму плагина в отдельный поток засунул, чтоб нормально работали курсорные клавиши. Именно поэтому я не мог вызывать сценарии в предыдущей версии, стало быть,, от такого плагина толку было ноль. Но теперь, в 498, это делается проще простого.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
as-masterДата: Суббота, 22 Декабря 2007, 00:36 | Сообщение # 9
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (toizy)
Вообще я что хочу узнать - падает или нет, как часто падает, у кого, при каких обстоятельствах и т.д.

У меня при выходе из проекта (не скомпиленного).









Да пребудет с вами ММВ!
 
Alex3AДата: Суббота, 22 Декабря 2007, 00:55 | Сообщение # 10
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Молодец!
Проделал большую работу, основа есть и неплохая!
Всю мелочь, доделаешь, это не проблема.
Посмотри на быбор версии ричедита, а может быть и поддержку оле,
на линолиуме вышибает сразу. Я проверял на нем, версии 1 и 3 катят.
Посмотри, есть ли весионнозависимые функции (АПИ), если их используешь.

На 2000 работает нормально.
Конечно, протестить все функции, сразу не получится, попробуем постепенно.

Сообщение отредактировал Alex3A - Суббота, 22 Декабря 2007, 00:58
 
toizyДата: Суббота, 22 Декабря 2007, 01:00 | Сообщение # 11
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
Посмотри на быбор версии ричедита

Уже догнал - в линолеуме версия вторая, см мыло


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Суббота, 22 Декабря 2007, 01:11 | Сообщение # 12
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Да нет, 1 и 3,
смотрел в свойствах, менял и запускал, если бы был 2 то в свойствах было бы видно.
Протестил, вылетает. Хрен его знает, может что то прикомпиливает не то.

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

Сообщение отредактировал Alex3A - Суббота, 22 Декабря 2007, 01:20
 
toizyДата: Суббота, 22 Декабря 2007, 09:38 | Сообщение # 13
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Блин, ладно. Подумаю послезавтра. Завтра важный день, а мне спать надо. Баю-бай smile

Добавлено (22 Декабрь 2007, 09:38)
---------------------------------------------
Пока жду клиента, ещё поспрашиваю.

Quote (as-master)
У меня при выходе из проекта (не скомпиленного).

Это всегда, или нет? Если нет, то после использования каких функций? Подробнее, плиз


Жизнь оказалась не такой уж и забавной, как поначалу...
 
as-masterДата: Суббота, 22 Декабря 2007, 11:03 | Сообщение # 14
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Да вроде пока не повторилось...

А вообще я думаю вот что.
Этот пример, с подробным описанием ВСЕХ функций, безусловно, нужен.
Но нужен и другой пример - для дураков, упрощенный и симпатичный.

Я себе представляю это так. Проект с внедренным каким-нибудь текстом,
и кнопочки, как в текстовом редакторе - но только всё самое необходимое!
Ни к чему неопытного юзера заморачивать - для опытного есть уже имеющийся
пример.

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


Да пребудет с вами ММВ!
 
Alex3AДата: Суббота, 22 Декабря 2007, 13:45 | Сообщение # 15
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Пока все по прежнему, попробуй переместить создание плагина, по таймеру.
А пока таймер не сработал, можно определить версии.
 
toizyДата: Воскресенье, 23 Декабря 2007, 09:52 | Сообщение # 16
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (as-master)
Да вроде пока не повторилось...

Уж не запускал ли ты StartTyping? Ясен пень, после него ошибка вывалицца. Но это уже поправлено.

Quote (Alex3A)
Пока все по прежнему, попробуй переместить создание плагина, по таймеру.
А пока таймер не сработал, можно определить версии.

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

Quote (as-master)
А вообще я думаю вот что.

Пральна думаешь. Я, собсно, так и хочу сделать. Вот только не прёт пока.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
as-masterДата: Воскресенье, 23 Декабря 2007, 15:34 | Сообщение # 17
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (toizy)
Вот только не прёт пока.

Буду ждать когда попрёт...

И кстати, твой плагин нужен мне УЖЕ СЕГОДНЯ!!!
А потому сразу вопрос: нет ли в нём функции (извини,
что не прочитал справочных файлов, а сразу спрашиваю)
передачи содержимого текстового окна в строковую переменную?
Это то, что мне ДЕЙСТВИТЕЛЬНО нужно.

Для чего - скажу попозже. Спать хочу, устал...


Да пребудет с вами ММВ!
 
toizyДата: Воскресенье, 23 Декабря 2007, 16:46 | Сообщение # 18
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (as-master)
передачи содержимого текстового окна в строковую переменную?

А ты сам-то как думаешь? smile
По хелпу - разделы "Редактирование" и "Строки".

Принять текст можно множеством вариантов - и все вместе, и выделенный фрагмент, и определённую строку, и слово под курсором. Текст может быть взят как в переменную, так и в буфер обмена, как в виде ANSI, так и в виде Unicode и RTF.

Правда, в случае передачи текста в переменную ММВ о Юникоде придётся забыть, ибо сама ММВ Юникод не держит. Зато я сейчас продумываю систему, которая всё-таки позволит передавать Юникод, используя строки ММВ. К примеру, символ из таблицы Юникода будет заменяться его шестнадцатеричным представлением.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Воскресенье, 23 Декабря 2007, 22:37 | Сообщение # 19
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
А как там вариант под лимониум поживает?
 
toizyДата: Воскресенье, 27 Января 2008, 18:24 | Сообщение # 20
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
Кое чего из результатов, я тебе высылал - обратная связь с плагинами.

Я так понял, это недокументированная функция, которую ты раскопал (здорово, кстати :)) Хотя в ММВ до сих пор багов полно. Например, в 498 наконец-то стали работать курсорные клавиши в мемо-контролах, зато перестал обрабатываться интер smile Сообщение доходит, но по каким-то удивительным причинам не производит действия. Приходится приделывать костыли.

Кстати, Алекс, ты не смотрел - я тебе там плагин высылал с докой? За неделю ещё много чего добавил, изменил создание плагина, вылизал (ещё не всё). Ну и справку сделал нормальную. могу заслать обновлённый вариант, если будешь тестить.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Воскресенье, 27 Января 2008, 23:46 | Сообщение # 21
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (toizy)
Кстати, Алекс, ты не смотрел - я тебе там плагин высылал с докой?

Вынужден тебя огорчить, глючит, возможно его нужно компилировать в лимониуме.
А на NT подобных виндах все путем, я тоже сталкивался с рядом непонятностей, на одной
винде работает по одному, а на другой по другому, это при том, что функцих версионно зависимых
не использовалось.
Quote (toizy)
Например, в 498 наконец-то стали работать курсорные клавиши в мемо-контролах

Надо посмотреть, тут дело не в билдере, мне так кажется, в принципе, плагин это чужой для ммб объект,
он только рисуется на окне проекта, дай ему другого парента, хоть рабочий стол. Но сообщения обрабатывает
форма и аплет плагина.
 
toizyДата: Понедельник, 28 Января 2008, 11:06 | Сообщение # 22
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
Но сообщения обрабатывает
форма и аплет плагина.

Ладно бы так smile Апплет как-то странно себя ведёт - у меня он пропускал аж 2 сообщения CHANGELANGREQUEST вместо одного smile Попробуй сделать так - создай memo обычным методом, родитель - апплет, потом SetParent'ом приклеиваешь memo к окну ММВ. Работает? А теперь дави интер. Он будет обрабатываться, но сноса строки не произойдёт. Чёрт знает, что это такое. Я уже делал на абсолютно пустом проекте - один хрен. Выход - ловить на KeyDown #13 и втыкать его в позицию каретки руками (что, кстати, работает совершенно правильно и не доставляет неудобств). В сотальном проблем с 498 не было замечено.
Quote (Alex3A)
Вынужден тебя огорчить, глючит,

Как именно? Так же как и было?
Quote (Alex3A)
на одной
винде работает по одному, а на другой по другому

Что именно и как?
Quote (Alex3A)
функцих версионно зависимых
не использовалось

На самом деле там много версионно-зависимых функций. Я сейчас читаю MSDN по richedit. Оказывается, существует очень много того, что фактически зависит от версии dll. Например, paraformat - в первой версии кое-что не работает. Или функция Zoom - работает только с ричем 3 версии. Теперь я понимаю, насколько полезно читать msdn! Оказалось, что рич имеет очень широкие возможности по оформлению текста, но об этом мало кто знает. Например, скрытый текст, защищённый текст, продвинутые текстовые эффекты, наподобие чеканки (правда, видны только в ворде, но самому отрисовать никогда не поздно) и ещё много чего. Правда, нет хорошей поддержки таблиц. А по большому счёту, рич всё равно остаётся компонентом для раскраски текста smile

Добавлено (28 Январь 2008, 11:06)
---------------------------------------------
Сообщения перенёс...


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Понедельник, 28 Января 2008, 21:54 | Сообщение # 23
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (toizy)
Как именно? Так же как и было?

Да, вылетает при старте, окно проекта рисуется, окна плагина нет.
Quote (toizy)
На самом деле там много версионно-зависимых функций.

Я не о риче, а так вообще, к примеру в лимониуме нормально работает, а в НТ подобных,
что то глючит, или выкидывает окна при закрытии. Кроме того у них рисовалка по разному работает,
и много иных, недокументированых отличий.
А вообще, конечно, НТшные обладают более умными вариантами функций.

Quote (toizy)
А по большому счёту, рич всё равно остаётся компонентом для раскраски текста

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

 
toizyДата: Вторник, 29 Января 2008, 10:59 | Сообщение # 24
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Ну я тебе отослал кое-что, посмотри. Сейчас придумываю проверку плеера на версию из самого плагина (если ниже 498, то не работать)

Добавлено (28 Январь 2008, 23:06)
---------------------------------------------
Кстати, Алекс, нет ли идей относительно того, как различить, из-под чего запустились? Т.е. версия плеера ранее 498 и 498

Добавлено (29 Январь 2008, 10:50)
---------------------------------------------

Quote (Alex3A)
стати, док тоже можно присобачивать, только он использует актив х

Вот потому и не хочу автоматизировать док. Эктивиксы добавляют слишком много кода smile А мой рич до сих пор весит в пределах 48 кило. Вчера вылизывал код, он сократился почти на килобайт. ближайшую неделю проведу за оптимизацией. А пока вопрос другой - как же всё-таки определить, какой плеер используется при проигрывании? это важно, поскольку в версиях раньше 498 плагин не будет правильно работать. Хотелось бы отследить это и сообщить пользователю (вместо того чтобы он наблюдал глюки). Поскольку Алекс главный тестирующий из нашего форума, то вопрос преимущественно к тебе. Но другие тоже могу присоединиться smile Что такого есть в 498, чего нет в 497 и ранних? Лично у меня есть такие варианты.

1. 498 умеет выполнять сценарии из строки, которую может передать плагин. Посылаем спец. сообщение, wParam содержит строку с командой, напр, ResizeWindow. в плагине подменяем оконную процедуру, где сечём, произошёл ли ресайз. Если произошёл, ММВ приняла сообщение и выполнила сценарий. Следовательно, ММВ 498 или старше. Проблема - не получается загасить сообщение в оконной процедуре (хз почему... не получаеццо!) следователльно, ресайз происходит, а это нехорошо. если же ресайзить по уже существующим размерам, то ресайз не выполняется (ммв умная там, где не надо sad )

2. Вариант, основанный на первом, и более безопасный - послать в ММВ сценарий, в котором отослать текстовую переменную определённого содержания самому себе или запустить свою же функцию. Всё просто и здорово, но главная проблема в том, чтобы узнать, как же называется плагин в проекте. Насколько я понимаю, это нерешаемая проблема sad

3. Опять же на основе первого варианта - ресайз или, там, рефрешь. Ловить всё это хуком, а не оконной процедурой. Недостатки - хук не есть хорошо, и кодить придётся много (не две строки).

4. Экзотика - прочитать файл и версию проекта из самого запущенного файла. Недостатков два - работать не будет, если не стэндэлон, и если запустили из ММВ. Ну и в добавок версия проекта ничего не говорит о проигрывателе, который это всё играет.

5. Самый просто и самый ненадёжный - проверка размера файла. Достаточно перепаковать файл или изменить поля версии, и такой файл не будет опознан.

6. Планы на ближайшую неделю - отладка новых плееров и поиск отличий от старых. Нет гарантий, что найдётся что-нибудь...

Всё, ступор. Неужели мои мозги высохли настолько, что так и не найдётся решения? cry

Добавлено (29 Январь 2008, 10:59)
---------------------------------------------
Кстати! Тут пришёл в голову ещё один перспективный вариант:

7. Поскольку 498 проверяет поле версии файла, то плеер импортирует api GetVerInfo или как её там. Если получить импорт, и найти там эту апи, то это значит, что плеер версии =>498. Недостаток - рантайм плеер, который используется для запуска под дизайнером, не имеет проверки версии, что означает неправильное определение из-под дизайнера...

Наверное, надо всё-таки уйти в отладку...


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Пятница, 01 Февраля 2008, 11:45 | Сообщение # 25
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
В НТ шных виндах, работает.
В лимониуме, уже не глючит при запуске, но и не активируеться,
окна плагина не видно, и в процессах его тоже нет, возможно
демка которую ты мне выслал не заточена под лимониум, какие надо
изменения, напиши.
Quote (toizy)
7. Поскольку 498 проверяет поле версии файла

Это самый лучший способ определения, все плееры и билдер имеют
в ресурсах версию, и с помощью апи ее не сложно получить, ведб тебе
известный хендл парента
Quote (toizy)
Опять же на основе первого варианта - ресайз или, там, рефрешь.

Чет я не понял про ресайзы
Quote (toizy)
плагине подменяем оконную процедуру,

Зачем так сложно!
Quote (toizy)
498 умеет выполнять сценарии из строки, которую может передать плагин.

С этим то же нет проблем, в ветке "Как изменить разрешение экрана "как положено"? [ 1 2 3 4 ] "
посмотри плагин caller, там это реализовано, передает любые команды из одного окна в другое,
а уж из плагина в проект совсем без проблем, используй обратный вызов плагина, считывай строку команд из плагина,
и выполняй в проекте. Преимущество последней версии в том что она может выполнить переданный скрипт непосредственно
а в предидущих версиях надо заранее иметь варианты скриптов в проекте.
 
toizyДата: Пятница, 01 Февраля 2008, 17:50 | Сообщение # 26
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
но и не активируеться,
окна плагина не видно, и в процессах его тоже нет

Так плагин процессом и не должен быть... Или как? Ты хочешь сказать, что самого проекта нет в процессах? Если так, что он просто вырубается после запуска.

Quote (Alex3A)
Чет я не понял про ресайзы

Я имел в виду передать проекту команду на ресайз или рефрешь, а потом ловить плагином в замещённой оконной процедуре это сообщение. Если прошло, проект принял команду (этот механизм есть в 498 и отсутствует в более ранних).

Quote (Alex3A)
Зачем так сложно!

Так она и так уже есть! Как по твоему я выгружаю плагин по закрытию программы? smile на WM_DESTROY, ловлю в оконной процедуре, там не сложно. Другое дело, что этот метод не совсем подходит.

Quote (Alex3A)
посмотри плагин caller, там это реализовано, передает любые команды из одного окна в другое,
а уж из плагина в проект совсем без проблем, используй обратный вызов плагина, считывай строку команд из плагина,
и выполняй в проекте. Преимущество последней версии в том что она может выполнить переданный скрипт непосредственно

Я не понял, что за caller, но я как раз об этом принципе и говорю. Именно так и хочу сделать... Хотел. Теперь, пожалуй, взвалю это всё на пользователя. Пусть на самом старте программы сообщает плагину имя объекта плагина, которое потом будет использоваться для построения сценария для посылки программе. Напр., будет передавать уникальную строку и запускать отдельную процедуру, которая будет анализировать, что там ей передали. Если совпало, значит, сообщение дошло, а это, в свою очередь, значит, что плеер версии не ниже 498. А как вызывать скрипты, я узнал самым первым делом smile А то ж передавать клавиши - слишком калично...

Кстати, народ (это я тем, кому интересно...)! Я нашёл баг ММВ в работе с плагинами. даже написал на оффоруме, но там молчат как партизаны. Этого бага не было в 497, он появился только в 498. Значит, так. Если, допустим, есть процедура с именем Test, то если мы выполним PluginRun("PlugIn","Test"), то она выполнится. Более того, если мы сделаем так: PluginSet("PlugIn","Test") (то есть передадит плагину числовую переменную), то процедура Test всё равно выполнится! Аналогично и PluginGet... Что за баг такой дураццкий?..


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Суббота, 02 Февраля 2008, 12:56 | Сообщение # 27
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (toizy)
Так плагин процессом и не должен быть... Или как?

Да не про процесы, окно плагина становиться дочерним по отношению к проекту, и его
можно просмотреть определенным софтом, так вот его там нет - то есть это окно не создалось.
До момента установки парента оно имеет родителем аплет, из которого создано.
Quote (toizy)
а потом ловить плагином в замещённой оконной процедуре это сообщение

Ну это если чешутся руки использовать новую фичу, что же можно.
Quote (toizy)
Как по твоему я выгружаю плагин по закрытию программы

Ну в любом СДК, любой версии есть процедура TMainForm.DestroyPlugin(var Msg: TMessage);
которая этим занимается.
Quote (toizy)
Я не понял, что за caller,

Ну так поинтересуйся, TCP сервер - клиент, на его базе можно строить чего хочешь, начиная от
полной связи между двумя проектами, кончая всевозможными "типа ай сик ю " браузерами и прочей сетевой
дребеденью.
 
toizyДата: Суббота, 02 Февраля 2008, 15:06 | Сообщение # 28
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Alex3A)
Ну в любом СДК, любой версии есть процедура TMainForm.DestroyPlugin(var Msg: TMessage);

Я так понял, что она не вызывается, если писать на VCL smile Кажется, ММВ просто прибивает плагин. SetParentWindow есть, а вот DestroyWindow нет. Ну во всяком случае, когда я писал на всл, дестрой не выполнялся почему-то. Как сейчас, сказать не могу. Мне кажется более надёжным всё-таки подменить оконную процедуру, тем более, что это даёт возможность контролировать всякие там accept files и прочее, что уже в изобилии реализовано в моём плагие. А кодинга - минимум, по сравнению с тем, что уже накодировано smile В общем, это не так важно.
Важнее другое - почему вылетает на линолеуме. Похое, придётся ставить его, и ещё 2000. Кстати, сейчас добавляю отладку с выводом в лог-файл и на экран (через условную компиляцию). Уже "отладил" несколько функций, о багах в которых и знать бы не знал. Так же логируется и создание рич. Осталось только потестировать всё это самому в других системах.

Насчёт коллера - вспомнил. Только я его не смотрел тогда. Сейчас гляну.


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Alex3AДата: Суббота, 02 Февраля 2008, 17:28 | Сообщение # 29
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (toizy)
, и ещё 2000.

Вот у него как раз нет проблем, я же тебе писал, в НТ подобных работает.
Quote (toizy)
когда я писал на всл, дестрой не выполнялся почему-то

Ну не знаю, у меня дестроилось, иначе были глюки. Да можешь проверить,
напиши шоумесадже.
 
  • Страница 1 из 1
  • 1
Поиск: