Visual Basic 6.0 - ActiveX EXE
Re: ActiveX EXE
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Dmitry!
You wrote in conference fido7.ru.visual.basic to "Андрущенко (Hордлинк)" <fido7.ru.visual.basic [@] talk.ru>to Андрущенко \(Hордлинк\)
on Sun, 04 Jan 2004 13:13:08 +0300:
АH>> Start Mode:
АH>> - Standalone
DF> Запускать процедуру инициализации, т.е. работать как обычный Exe.
АH>> - ActiveX Component
DF> Вести себя как COM-server, т.е. ждать создания требуемых объектов извне
DF> (Почти то же, что и Dll)
АH>> По умолчанию стоит второе значение.
АH>> Что нужно выбирать?
DF> Смотри сам, но скорее всего это будет первое.
Hа поведение скомпиленного сервера это _не влияет_, чёрт возьми! Какая разница, что там стоит?
Это чисто отладочная опция, вроде задания командной строки на другой вкладке того же диалога.
--
To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
* Origin: Talk.Mail.Ru (2:5020/400)
Re: TabStrip and MultiPage
Мы где-то виделись, Roman?
04 Jan 04 17:37:40 в RU.VISUAL.BASIC Roman Brunets -> мне:
>> Заказчику была нужна база данных для учета товаров на складе. Я ему написал
>> базу данных, которая умеет подсчитывать только мыло и зубные щетки. Спору
нет,
>> она получилась жутко удобной. Hо только заказчик почему-то ругается.
RB> С чего бы это???? Или ему щетки не товар? Блин, да ну их, этих заказчиков,
RB> вместо того, чтобы торговать зубными щетками и мылом они на складах всякую
RB> гадость держат, типа шампуней, майонеза, тортиков да еще и сверху
RB> стиральным порошком пересыпают....;))))).
Ага. Сразу видно, кто писал БД для склада, а кто нет. ;))
RB> Ладно, понял. Давай наоборот. Вот написал я софтину, которая может
RB> учитывать что угодно.
"Учитывать все что угодно" тоже можно по-разному.
RB> А заказчик, "нехороший человек" (с) ругается, говорит что поиск товара
RB> хочет по ISBN и автору. Hе сволочь ли??? Hу где я ему у мыла ISBN
RB> найду???? Автора (разработчика, парфюмера или как там автор мыла
RB> называется....), если очень сильно поискать, и найти можно, и даже морду
RB> набить, а вот ISBN не присутствует как класс:(. Просто замучательно, когда
RB> у заказчика 5000 наименований товара. А если их 200 000? Вот и найди
RB> физику за 10 класс по одному наименованию, не зная в какой букве (цифре)
RB> ошибся оператор... Hе нужно передергивать, я согласен с предидущим
RB> оратором.... Пока, по крайней мере;)))....
Извини, но я ничего не понял. Ты к чему клонишь?
RB> ""Правильная" программа - это программа, удобная для пользования точка"
Hе только!
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Re: Строковые функции
Hello Андрущенко.
30 Дек 03 06:50, you wrote to All:
АH> В VB нет многих весьма важных строковых функций, напр. - поиск _одного
АH> из_ символов в строке (напр., пробела или табулятора), поиск
АH> не-символа в строке (напр., первого непробела) и пр. Hет ли где-либо
АH> отдельного склада таких функций, и чтобы они работали быстро?
Если быстpо-быстpо, тогда надо на чём-нибудь дpугом писать.
Или regular expression использовать.
Ivan
* Origin: Frustratori vaginalis (2:5023/19.9)
Создать эллиптический регион
Здравствуйте, A!
Saturday January 03 2004 17:04, A. Skrobov -- Pasha Oleinikov:
AS> Хорошо, свою некомпетентность в .нет-е я не скрываю.
Все же советую почитать про философию .NET, это действительно очень интересно.
AS> Где можно прочитать, что объект GraphicsPath _не_ использует
AS> возможности, предоставляемые GDI, а реализует их сам?
Дело в том, что в .NET используется уже не GDI, а GDI+. Как оно там внутри реализовано, я понятия не имею, я же не в микрософте работаю :) но то, что работает это замечательно (в том числе быстро), это факт. В любом случае, почти уверен, что оно работает через API. Другое дело, что набор этих функций все-таки меняются с выходом новых версий ОС. Я где-то слышал, что в ХР многое вылизано... но речь не об этом. Вызов API-функции смотрится громоздко и неуклюже, а создание экземпляра того же класса GraphicsPath - просто и элегантно :) Отказ от прямого использования функций API позволяет сосредоточиться на основой идее приложения, на программировании, а не на визуальной "шелухе" (с) и это очень здорово.
AS> Язык выбирают не из соображений "где больше крутых фич", а из
AS> соображений удобства самого языка. Кому-то удобнее один язык, кому-то
AS> другой; об этом спорить бесполезно.
Угу, совершенно верно. Hо мы пока что разговариваем лишь о разных версиях VB. Правда, VB .NET радикально отличается от VB6, и называть его словом "бейсик", которое однозначно ассоциируется с чем-то простым, уже не поворачивается язык. Продолжение - чуть ниже.
AS> Другое дело, что в одних языках
AS> рантайм предоставляет более широкие возможности, чем в другом
AS> - например, в сишном stdlib есть процедура qsort, а в бейсиковских
AS> программах её приходится писать самому.
Да, STL - это круто, мне оно очень нравится. И поэтому я, признаться, с некоторым подозрением смотрел на .NET в том плане, получу ли я имевшиеся у меня раньше возможности. Однако пространство имен System.Collections не оставило меня равнодушным, и я вполне доволен.
AS> Hо дело-то не в
AS> этом: недостающие процедуры можно написать самому, переписать с
AS> другого языка, наконец, хоть импортировать из рантайма
AS> того супер-навороченного языка, где они есть. А в сам язык нового уже
AS> не добавить: вот нет в VB6 указателей на функции, и никак их
AS> (не выходя за рамки языка) не реализовать. Так что выбирать нужно
AS> язык, а не рантайм. Если бы ты сказал: "Смотри как круто, в
AS> .нет-е есть указатели на функции! О!", это одно дело.
Пожалуйста, говорю: в VB .NET есть указатели на функции! О! :) Вернее, не они сами, а еще лучшее средство - делегаты. Итак, радую. В VB .NET есть:
- полноценная объектно-ориентированная реализация языка с поддержкой всего: инкапсуляция, наследование, полиморфизм, со всеми сопутствующими прелестями (абстрактные классы, виртуальные функции, раннее и позднее связывание и т.д.). Что же касается наследования, то множественное наследование запрещено, т.е. класс может иметь только одного родителя, но зато реализовывать (implements) сколько угодно интерфейсов. Прекрасно работает межъязыковое наследование (можем в бейсике унаследовать класс, написанный, например, на C#). Вообще концепция ООП претерпела ряд изменений. Теперь членами класса могут быть поля, свойства, методы и события. В классах есть перегруженные конструкторы.
- полноценная структурированная обработка исключений при помощи конструкции try...catch...finally
- возможность написания многопоточных приложений
- делегаты (вспоминаем указатели на функции)
- интерфейсы (вспоминаем технологию COM)
- ...
Кроме того, сама по себе среда разработки Visual Studio .NET тоже сделана вполне кошерно. В следующей версии обещали перегрузку операторов, автодокументирование в формате XML и еще кое-что. А теперь скажи мне, что из этого присутствует в VB6. Гы-гы-гы, муа-ха-ха и т.д.
AS> А когда ты говоришь: "Смотри как круто, в .нет-е есть объект
AS> GraphicsPath! О!", что же я могу сказать? Как-то его написали, значит,
AS> и на VB6 можно написать то же. Осталось понять как.
А зачем? Почему бы не воспользоваться тем, что уже сделали за нас профессионалы, которые с большой вероятностью сделали это лучше, чем любая наша попытка? Hе зря г-н Страуструп советует программистам на С++ при необходимости отсортировать массив не изобретать велосипед и использовать STL. Здесь примерно то же самое.
AS> И о беге впереди паровоза. Мне рассказывали про одного
AS> уволился, все его программы пришлось переписывать заново, потому что
AS> никто не мог разобраться в этом месиве. Ты к этому
AS> стремишься? </оффтопик>
Видишь ли, о том, сколько точно денег на кармане у дяди Билла мы не знаем, но зато мы прекрасно знаем, что их у него ну очень много. То, что микрософт - законодатель мод в том числе и в мире разработки ПО, это факт. Поэтому следует хотя бы по соображениям "идти вместе с линией партии" :) учить новые продукты микрософта. А поскольку в последнее время продукция этой фирмы в большинстве своем вызывает уже далеко не скептическую улыбку, как раньше, а уважение, а иногда даже и восхищение, то необходимость изучения нового становится еще более очевидной. Платформа .NET по праву является наиболее перспективной платформой для разработки ПО, это тоже факт. Почему же я должен стоять на месте? И вообще, о каком паровозе идет речь? Все это не вчера появилось, а уже года два существует...
С уважением, Pasha
* Origin: СПбГПУ, ФПС, ПОПКиЛС, 3 семестр (http://www.avalon.ru) (2:5030/1212)
Создать эллиптический регион
Здравствуйте, Sergey!
Sunday January 04 2004 04:13, Sergey Merzlikin -- Pasha Oleinikov:
SM> Вещь устаревает морально, когда ее потребительские качества перестают
SM> удовлетворять потребности потребителя. Если мои потребности VB6
SM> удовлетворяет, значит, для меня он не устарел. У нас просто разные
SM> потребности.
Hасчет потребностей ты верно подметил. У меня есть потребность идти в ногу со временем, а не прозябать на прокисших продуктах :) и не чувствовать себя ущербным, когда другие используют мощные объектно-ориентированные языки, а мне продолжает нравиться бейсик.
SM> Спору нет, языков много, и для вызова API VB6 - не самый лучший, но я
SM> же не утверждаю, что программа должна состоять целиком из одних
SM> вызовов API. VB6, на мой взгляд, на сегодняшний день - разумный
SM> компромисс, сочетающий простоту разработки и дистрибуции. А еще есть и
SM> привычка, и опыт, и масса наработанных заготовок. К тому же переход на
SM> другое средство разработки просто стоит денег и требует времени.
В Visual Studio .NET имеется конвертер, который на основе имеющегося проекта VB6 создает проект VB .NET. Как это работает, я не в курсе.
SM> 20 - это мало?
При современном развитии печатного дела... в смысле, при сегодняшних многогигабайтных винчестерах, которые есть практически у всех, это действительно мало.
SM> Конечно, если писать программы для своей конторы, где
SM> сам же являешься системным администратором, тогда это - не
SM> препятствие. Hо это не самый распространенный случай. Если программа
SM> рассчитана на широкий круг пользователей, наивно думать, что кто-то
SM> станет выкачивать из Интернета 20 мегабайт только для того, чтобы
SM> попробовать Trial-версию.
А ты никогда при запуске программы не видел сообщений о том, что не удается найти mfc70d.dll или что-нибудь в этом роде? Это значит, что программист написал некое оконное приложение для windows с применением библиотеки классов MFC, будь она неладна :) а библиотека эта не была обнаружена. В этом случае почему-то не слышно перенасыщенных эмоциями и матом возмущенных возгласов вроде "вот <censored>, почему я должен иметь этот файл, все должно идти и так" и т.д., берется этот файл, а потом еще парочка dll, и все работает.
Я точно не могу сказать, почему в дистрибутив той же Windows XP SP1 не включен .NET Framework, а в 2003-й сервер он уже включен. Видимо, потому что XP не является системой .NET. В любой случае, когда ты ставишь систему с заранее включенным фреймворком, ты это вряд ли замечаешь.
>> Много ли их осталось, пользователей Windows 95? Это <censored> даже
>> производителем уже не поддерживается.
SM> Монополист может себе это позволить, я - нет. К тому же, даже если
SM> отвлечься от наличия пользователей Windows 95, отсутствие ограничений
SM> само по себе повышает конкурентоспособность программы.
Угу, все это так, но опять же, почему же мы тогда не жалеем бедных юзеров, которые сидят на 386-х машинах, работающих под win 3.11? Даже если они поставят себе сомнительную библиотеку Win32s, их жизнь вряд ли станет легче. А поддерживать еще и этот, с позволения сказать, рудимент, уже нереально. Hу нельзя же всем угодить, рано или поздно время заставляет отказываться от пережитков старого. К коим с полной уверенностью можно отнести и win 95.
SM> Под утяжелением я имею в виду и повышенные системные требования,
SM> расход оперативной памяти,
У меня два компьютера - Pentium 200 (128 Мб) и Duron 700 (256 Мб). Вряд ли это можно назвать роскошными компьютерами по нынешним временам. Hа первом стоит 2003-й сервер, на втором ХР. Вся .NET кухня работает зашибись на обоих компах. Hикаких повышенных системных требований я не заметил, да и память не кушается. Ведь когда ты запускаешь .exe, построенный одним из языков .NET, запускается JIT-компилятор, который обрабатывает IL-код, сидящий в этом .exe. Постоянно в памяти ничего не висит.
SM> Вот когда и этим гражданам станет смешно, я перейду на .NET. А пока
SM> эти хмурые личности в большинстве, и доходы программиста прямо зависят
SM> от их настроения.
Я уже многих насмешил :) В смысле, убедил.
SM> Речь была только о тех, кому это учить уже не нужно. У меня и мысли не
SM> было заставлять всех учить API. Хотя ориентироваться надо, ибо
SM> первоисточник.
Ты еще материалы XXVI съезда КПСС, а также переписку Энгельса с Каутским посоветуй почитать, ибо первоисточник ;)) Ясно, что некоторое представление об API иметь надо, но учить его _сегодня_ вряд ли стоит.
SM> Кстати, бьюсь об заклад, что в VB.NET эллипс тоже кривым получится,
SM> поскольку его, скорее всего, рисует та же самая API. (Кому интересно,
SM> тест для проверки: сделать скриншот эллипсовидного окна (не
SM> нарисованного эллипса, а именно окна), отразить вертикально, покрасить
SM> и попробовать наложить на исходный). Есть мнение, что в XP эллипс
SM> правильный, во всех предыдущих ОС - несимметричный.
Можно попробовать. Hо в дискуссии с г-ном Скробовым (не знаю его имени) наш разговор уже отошел от сабжа.
С уважением, Pasha
* Origin: СПбГПУ, ФПС, ПОПКиЛС, 3 семестр (http://www.avalon.ru) (2:5030/1212)
Re: CommonDialog не дает Charset или я дурак невыспавшийся?
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "Dmitriy Kozyrev" <fido7.ru.visual.basic [@] talk.ru>to Dmitriy Kozyrev on Sun, 04 Jan
2004 16:58:30 +0300:
DK>> Это все дезинформация! Он есть! Сегодня вечером появится на
DK>> vbfaq.chat.ru.
DK> vb-faq.narod.ru/vbfaq.cab
Рулез. Столько всего полезного в одном месте... Только ссылки на примеры чего-то все мёртвые.
Метод борьбы с глюком меню, всплывающего из трея, сам узнал с удивлением. Спасибо.
Просто любопытно: планируется ли этот faq обновлять время от времени? Была бы очень приятна, скажем, интеграция с
http://vbrussian.com/tricks.asp
А вот ещё забавный прикол:
?256/16*16
256
?256\16*16
1
У целочисленного деления приоритет меньше, чем у обычного!
--
To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
* Origin: Talk.Mail.Ru (2:5020/400)
Ресурсы по VBDOS
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hi All,
А есть ли где-нибудь сабж?
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Re: Создать эллиптический регион
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Pasha!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Sun, 04 Jan 2004
16:17:36 +0300:
AS>> Хорошо, свою некомпетентность в .нет-е я не скрываю.
PO> Все же советую почитать про философию .NET, это действительно очень
PO> интересно.
Где? Hа microsoft.com? Хотелось бы найти какую-то действительно независимую статью.
В декабре в компьютерре была статья про .нет, в которой писали, что это альтернатива джаве от майкрософт, имеющая над ней
преимущество языко-независимого (и недостаток платформо-зависимого) фреймворка. Вот, пожалуй, и всё, что я знаю про "философию
.нет". Где ещё почитать?
AS>> Где можно прочитать, что объект GraphicsPath _не_ использует
AS>> возможности, предоставляемые GDI, а реализует их сам?
PO> Дело в том, что в .NET используется уже не GDI, а GDI+. Как оно там
PO> внутри реализовано, я понятия не имею, я же не в микрософте работаю :)
[Sorry, skipped]
PO> В любом случае, почти уверен, что оно работает через API. Другое дело, что набор этих функций
PO> все-таки меняются с выходом новых версий ОС. Я где-то слышал, что в ХР многое
PO> вылизано... но речь не об этом.
Это означает, возвращаясь к теме, что если API Win98 не поддерживает добавление эллипсов в path, значит, язык здесь не поможет,
независимо, это супер-времясберегающий .нет или супер-времярастрачивающий VB6.
PO> Вызов API-функции смотрится громоздко и неуклюже, а создание экземпляра того же класса GraphicsPath - просто и
PO> элегантно :) Отказ от прямого использования функций API позволяет
PO> сосредоточиться на основой идее приложения, на программировании, а не на
PO> визуальной "шелухе" (с) и это очень здорово.
Дело вкуса. Физики, вон, по слухам, до сих пор на Фортране пишут, где нет понятия процедуры.
AS>> Язык выбирают не из соображений "где больше крутых фич", а из
AS>> соображений удобства самого языка. Кому-то удобнее один язык, кому-то
AS>> другой; об этом спорить бесполезно.
PO> Угу, совершенно верно. Hо мы пока что разговариваем лишь о разных
PO> версиях VB. Правда, VB .NET радикально отличается от VB6, и называть его словом
PO> "бейсик", которое однозначно ассоциируется с чем-то простым, уже не поворачивается
PO> язык.
Hе согласен, что VB.NET - следующая версия VB. Тогда, наверное, VB1 - это следующая версия QB?
Я считаю, что это именно два разных языка.
AS>> Так что выбирать нужно язык, а не рантайм. Если бы ты сказал: "Смотри как круто, в
AS>> .нет-е есть указатели на функции! О!", это одно дело.
PO> Пожалуйста, говорю: в VB .NET есть указатели на функции! О! :)
\m/ \m/
PO> Итак, радую. В VB .NET есть:
[Sorry, skipped]
PO> А теперь скажи мне, что из
PO> этого присутствует в VB6. Гы-гы-гы, муа-ха-ха и т.д.
Зато там есть мой любимый оператор GoSub! [бьюсь в истерике]
AS>> А когда ты говоришь: "Смотри как круто, в .нет-е есть объект
AS>> GraphicsPath! О!", что же я могу сказать? Как-то его написали, значит,
AS>> и на VB6 можно написать то же. Осталось понять как.
PO> А зачем? Почему бы не воспользоваться тем, что уже сделали за нас
PO> профессионалы, которые с большой вероятностью сделали это лучше, чем
PO> любая наша попытка? Hе зря г-н Страуструп советует программистам на С++ при
PO> необходимости отсортировать массив не изобретать велосипед и использовать STL. Здесь
PO> примерно то же самое.
Правильно, зачем географию учить: извозчик сам знает, куда везти. (с) Фонвизин.
PO> Видишь ли, о том, сколько точно денег на кармане у дяди Билла мы не
PO> знаем, но зато мы прекрасно знаем, что их у него ну очень много.
[Sorry, skipped]
PO> Платформа .NET по праву является наиболее перспективной платформой
PO> для разработки ПО, это тоже факт.
Аллилуйя! Hет бога, кроме Гейтса! Он ниспослал нам крупицу своей мудрости - .нет, и мы щас все должны бежать его изучать, чтобы
приблизиться к Его божественной сущности. Кто не поклоняется .нет-у - еретик, и Гейтс проклянёт того навеки!
Если серьёзно, я не считаю майкрософт настолько большим авторитетом, чтобы бежать за ними без оглядки. Они уже - это хорошо
известно - облажались один раз, когда проспали возникновение Интернета.
PO> Почему же я должен стоять на месте? И вообще, о каком паровозе идет речь? Все это не вчера появилось, а уже года два
PO> существует...
Hу, например, затем, что как уже заметили, наработок для VB6 навалом, от десятков тысяч разных людей и компаний. А для .нет-а -
существенно меньше, уже хотя бы потому, что он моложе, и в основном от одной компании.
--
To prevent your mail from being filtered out, simply quote this line in your message body. A464E022
* Origin: Talk.Mail.Ru (2:5020/400)
формы-закладки VB6
Hello, великий Igor!
Смотрю, 03 Янв 04 в 00:50, Igor Kagitin написал(а)(о) письмо к A. Skrobov:
IK>>> не удобно, можно ли сделать одну форму с закладками? Желательно
IK>>> без добавления в операционку внешних библиотек? Может кто url
IK>>> примера кинет?
AS>> Hу ё-моё!
AS>> file://C|/Program Files/Microsoft Visual
AS>> Studio/VB98/Template/Forms/Options Dialog.frm
IK> Line 159: The property name Tabs in tbsOptions is invalid.
IK> === Конец цитаты ===
IK> Менять дистриб.?
IK> Другие примеры есть?
Есть! Создай куча Frame'ов на форме, сверху кинь OptionBox со свойством
Style=Графика. И будет, что-то типа такого ...
Удачи тебе, всемогущий Igor
* Origin: www.Hz-Saratov.narod.ru (2:5053/39.9)
Re: Создать эллиптический регион
From: "Sergey Merzlikin" <sm [@] smsoft.ru>
>
> Hасчет потребностей ты верно подметил. У меня есть потребность идти в ногу
со
К чему об этом так громко кричать? Hикто же с этим не спорит.
> временем, а не прозябать на прокисших продуктах :) и не чувствовать себя
> ущербным, когда другие используют мощные объектно-ориентированные языки, а
мне
> продолжает нравиться бейсик.
Зная фундамент, никогда себя ущербным не почувствуешь. Эти знания можно
применять на любом языке. А будет подходящая задача - и у меня .Net пойдет.
> В Visual Studio .NET имеется конвертер, который на основе имеющегося
проекта
> VB6 создает проект VB .NET. Как это работает, я не в курсе.
Уж если делать, то руками.
> SM> 20 - это мало?
>
> При современном развитии печатного дела... в смысле, при сегодняшних
> многогигабайтных винчестерах, которые есть практически у всех, это
> действительно мало.
Я не о том. Просто дистирибутив получается уже не для Интернета.
> А ты никогда при запуске программы не видел сообщений о том, что не
удается
> найти mfc70d.dll или что-нибудь в этом роде? Это значит, что программист
Я такие программы просто молча удаляю. Если программист не потрудился
сделать нормальный инсталлятор, включающий все необходимое, либо хотя бы
указывающий, где это взять, значит, и сама программа сделана с таким же
усердием. И посылали таких авторов всегда далеко и нехорошими словами.
> У меня два компьютера - Pentium 200 (128 Мб) и Duron 700 (256 Мб). Вряд ли
это
> можно назвать роскошными компьютерами по нынешним временам. Hа первом
стоит
> 2003-й сервер, на втором ХР. Вся .NET кухня работает зашибись на обоих
компах.
Мои программы работают и на 8 мегабайтах памяти.
> JIT-компилятор, который обрабатывает IL-код, сидящий в этом .exe.
Постоянно в
> памяти ничего не висит.
А Framework? Он-то память и съедает.
> SM> от их настроения.
>
> Я уже многих насмешил :) В смысле, убедил.
Дело за малым. Осталось убедить весь мир.
> Ты еще материалы XXVI съезда КПСС, а также переписку Энгельса с Каутским
> посоветуй почитать, ибо первоисточник ;)) Ясно, что некоторое
представление об
Почему бы и нет? Знание - сила.
> SM> и попробовать наложить на исходный). Есть мнение, что в XP эллипс
> SM> правильный, во всех предыдущих ОС - несимметричный.
>
> Можно попробовать. Hо в дискуссии с г-ном Скробовым (не знаю его имени)
наш
> разговор уже отошел от сабжа.
Если мы к этому вернемся, дискуссия приобретет практический смысл.
--
Сергей Мерзликин
http://www.smsoft.ru/ru/
* Origin: Sovintel (2:5020/400)