Современные решения

для защиты Windows приложений

и восстановления исходного кода

Visual Basic 6.0 - Многоязыковая поддержка...


Re: Многоязыковая поддержка...

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


> Делаю многоязыкоую поддержку для своей программы и возник

вопрос: где и в каком виде
>

> Так вот вопрос состоит в следующем: какой формат файлов использовать, при

том, что,
> желательно, этот файл не должен быть читаемым при открытии в Блокноте.

Если использовать
> ActiveX DLL (а мне хотелось бы использовать именно какую-нить длл), то в

каком виде это
> можно организовать, т.к. с ActiveX Dll я не работал (разве что изменял

чужие под свои
> нужды немного, да и 5 минут назад написал одну, которая складывает два

числа и возвращает
> результат :((( )

>


Решил посмотреть на эту самую мощно рекламируемую в каждом письме "свою
программу", и вижу: в программном каталоге лежит ActiveX Dll MenuMaker.dll,
а на ней копирайт: Copyright№ 2003 М.Кнышов. Dll совсем не простая, и
написана довольно грамотно. Если это и есть та самая "измененная под свои
нужды" чужая Dll, мой совет - попросить у ее автора пару уроков: наверное,
не откажет, раз позволил сменить копирайт. А вообще это те азы, без знания
которых обычно за коммерческий софт не берутся.

Теперь по сути вопроса: наиболее распространенный способ решения задачи:
Resource-only Dll. Для каждого языка (или для нескольких сразу) создается по
одной Dll, не содержащей кода. Библиотека не обязательно должна быть
ActiveX, но VB6 других делать не умеет. Каждая из библиотек содержит набор
ресурсов на своем языке (языках). В основной программе в зависимости от
выбранного языка загружается та или иная Dll через API LoadLibrary
(Reference в проекте не требуется), и по мере необходимости загружаются
нужные ресурсы с помощью API LoadString или LoadImage. Переводчикам
предоставляется исходник ресурсного файла (.rc - файл). Hедостатком данного
метода является возможность локализации только статических ресурсов (строки,
рисунки), но не поведения программы (условного выполнения различных участков
кода). Последнее бывает иногда нужно (первое, что приходит на ум - склонение
единиц размерности: 1 час - 2 часа - 6 часов).
Я обычно использую другие 2 способа: Для простых программ выношу все, что
подлежит локализации, - текстовые константы и отдельные функции и процедуры,
в отдельный .bas - файл, разный для каждой языковой версии. При переводе на
очередной язык создается копия проекта, в нем заменяется модуль и, возможно,
некоторые картинки, и происходит компиляция отдельной языковой версии
программы. Переводчику предоставляется исходник .bas - файла. Для более
сложных программ я для каждого языка или группы языков создаю ActiveX Dll,
реализующую заранее определенный интерфейс (см. ключевое слово Implements),
методы и свойства интерфейса отдают локализованные строки, картинки или
выполняют какие-то другие действия. В основной программе в зависимости от
языка загружается та или иная Dll через CreateObject (Reference в проекте
требуется на любую из языковых версий), создается ссылка на интерфейс, и по
этой ссылке вызываются свойства и методы. Так можно изменять язык
динамически, в процессе работы программы. Переводчикам передается шаблонный
исходник проекта Dll. Как хранить строки и картинки в Dll, решают сами
авторы перевода - хоть в константах, хоть в ресурсах, хоть во внешних
файлах, лишь бы соблюдался интерфейс и не страдала производительность.

--
Сергей Мерзликин
http://www.smsoft.ru/ru/


* Origin: Sovintel (2:5020/400)

Re: интимная связь VB и C

Мы где-то виделись, Alexander?

20 Feb 04 09:01:39 в RU.VISUAL.BASIC Alexander Trishin -> Dmitry Sergunin:


>> PS а, коль ты так хоpошо Си знаешь, можно к тебе с несколькими

>> вопpосами нетмылом или e-mail что-ли дай ?

AT> Хедеры читать умеешь? Козырев вон тоже Си знает ;)


А я еще крестиком вышивать умею (с)

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)

Re: Упаковка в ZIP и CAB

Мы где-то виделись, Максим?

19 Feb 04 13:33:25 в RU.VISUAL.BASIC Максим Кнышов -> Dmitriy:


МК> Люди, больше никто никаких архиваторов не знает???


А нафига? Для галочки? Смысла не вижу. Rar, Cab и Zip лидируют с огромным
отрывом по всем параметрам - и распространенность (Rar и Zip перенесены
практически подо все платформы, а разархиватор для Cab есть в каждой винде), и
степень сжатия (хотя, с одной стороны, у зипа последнее сильно хромает, а с
другой, существуют новые архиваторы, обгоняющие даже Rar - например, PPMd и
основанный на нем PPMonstr).

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)

Re: Окошко About

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


В XP не работает совсем - Access Violation в неизвестном модуле по
адресу 00a3773d на первом вызове CallWindowProc.
В 2K работает, но не меняет копирайт, в ME работает полностью.

Hе проще ли было просто вызвать ShellAbout, а потом найти это окно и
подправить некоторые строки через WM_SETTEXT?

--
Сергей Мерзликин
http://www.smsoft.ru/ru/

>

> Я вот решил написать "на основе" стандартного виндового окошка About своё.

> Однако, поскольку выбранный мной метод использует "недокументированные"

> возможности Windows, я не уверен, что он будет работать на всех версиях.

> Он проверен и работает на версиях 4.10.2222 (98), 4.90.3000 (Me),

5.00.2195
> (2000)

> Если у кого-то есть другая версия винды (например, ХР), то пожалуйста,

> проверьте, работает ли там.

> Если кому-то понравится сам этот код - юзайте на здоровье.

>

>



* Origin: Sovintel (2:5020/400)

Re: Окошко About

From: "Dmitry Viazowkin" <vde [@] ufanet.ru>


Hi!

> Я вот решил написать "на основе" стандартного виндового окошка About своё.

> Однако, поскольку выбранный мной метод использует "недокументированные"

> возможности Windows, я не уверен, что он будет работать на всех версиях.

> Он проверен и работает на версиях 4.10.2222 (98), 4.90.3000 (Me), 5.00.2195

> (2000)

> Если у кого-то есть другая версия винды (например, ХР), то пожалуйста,

> проверьте, работает ли там.


XP Pro Sp1 + all HotFixes

The instruction at "0x00a3773d" refrenced memory at "0x00a3773d". The memory can
not be "read".


причем судя по трассе, валится при возврате из DialogProc

--
With best regards
Dmitry Viazowkin
* Origin: Me? Organized??? (2:5020/400)

Упаковка в ZIP и CAB

From: Максим Кнышов <knyshow [@] mail.dsip.net>


Привет Sergey!

SM> Спецификация формата лежит у них на сайте, там же исходники распаковщика,

SM> нет только алгоритма упаковки. По этому поводу там есть приписка о том, что

SM> алгоритм является частной собственностью, и даже его восстановление по

SM> опубликованной информации является запрещенным приемом.

SM> Также закрытые алгоритмы у ARJ, ACE, JAR и еще множества малоизвестных. Hо

SM> для ZIP, CAB, ARC, 7Z, BZ2, TAR алгоритмы открыты и имеется немало утилит и

SM> библиотек для работы с ними, причем часто совершенно бесплатных.

Вот теперь остается найти эти библиотеки и привязать их к проэкту на VB...
--
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•

Максим Кнышов [ knyshow#mail.dsip.net ] [ http://gbu.dvostok.com ]
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•

Последняя версия программы Golden BackUp ( http://gbu.dvostok.com ) - 0.0.188 Beta 9
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•






* Origin: КПКП "Транс Агентство" (2:5020/400)

Удаление мертвых участков кодов

From: Максим Кнышов <knyshow [@] mail.dsip.net>


Привет всем!

Ребята, повторю свой вопрос еще раз - подскажи тем или как можно удалить из большой
программы мертвые учаски кода, т.е. неиспользуемые нигде участки кода, декларации и т.п.
вещи. Желательно если 'jn программа, то нужна бесплатная или...


--
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•

Максим Кнышов [ knyshow#mail.dsip.net ] [ http://gbu.dvostok.com ]
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•

Последняя версия программы Golden BackUp ( http://gbu.dvostok.com ) - 0.0.188 Beta 9
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•





* Origin: КПКП "Транс Агентство" (2:5020/400)

Re: Правильное построение SQL- запроса

From: "Vasiliy Khorolich" <horvv [@] poltava.bank.gov.ua>



"Sergey Broudkov" <broudkov [@] PointLtd.com> сообщил/сообщила в новостях

следующее: news:000d01c3fa4a$781e6e50$0200a8c0 [@] PAS.local...
> Для SQL-запроса дата должна быть в американском формате, поэтому пиши:

>

> WHERE Kurs_City.Date ='" & Format$(S_Data, "yyyy\/mm\/dd") & "'"


Попробовал. Hе получается . Выдает:
Run-time error '3075'
Sintax error in string in query expression 'Kurs_City.Date = 2004/02/24 AND
ну и так далее...


* Origin: Demos online service (2:5020/400)

Re: Правильное построение SQL- запроса

From: "Vasiliy Khorolich" <horvv [@] poltava.bank.gov.ua>



"Dmitriy Kozyrev" <Dmitriy.Kozyrev [@] p148.f11.n5023.z2.fidonet.org>

сообщил/сообщила в новостях следующее:
news:2369785101 [@] p148.f11.n5023.z2.ftn...

> VK> SQLstr = " SELECT * FROM Kurs_City WHERE Kurs_City.Date ='" &

> VK> CDate(S_Data) & "'"

> VK> но этого ничего не дало, выдает ошибку во время выполнения...

>

> Попробуй вместо одинарных кавычек использовать символ #.


Где именно?
Я пробовал делать так:
S_Data = "#" + txtData.Text + "#" (перед этим было так :S_Data =
txtData.Text), это ничего не дало.
Пробовал делать так:

SQLstr = " SELECT * FROM Kurs_City WHERE Kurs_City.Date =#" &
CDate(S_Data) & "#
Это тоже ничего не дало...

Может есть еще варианты? Подскажите, пожалуйста.
Я понимаю, что проблема - в правильном написании формата даты в запросе,
т.к. при некоторых вариантах выдает Syntax Error, но КАК сделать - я уже и
представить не могу, вроде все варианты перепробовал...

С уважением
Василий Хоролич.
* Origin: Demos online service (2:5020/400)

Re: Окошко About

From: "A. Skrobov" <tyomitch [@] r66.ru>


Tue Feb 24 2004 03:53, Sergey Merzlikin wrote to A. Skrobov:

SM> From: "Sergey Merzlikin" <sm [@] smsoft.ru>

Вот на этот адрес я тебе отправил исправленную версию. Он настоящий?

SM> В XP не работает совсем - Access Violation в неизвестном модуле по

SM> адресу 00a3773d на первом вызове CallWindowProc.

Там зачем-то какие-то внутренние проверки стоят в ShellAboutW, непонятно что
делающие... В 98/Ме/2000, где я проверял, код ShellAboutW совпадал добайтно, и
я думал, что и в ХР он такой же.

SM> В 2K работает, но не меняет копирайт

Это фишка такая - если в диалоге есть несколько контролов с одним идом, то 9х
работает только с первым, а 2000 - ни с одним. Исправил.

SM> Hе проще ли было просто вызвать ShellAbout, а потом найти это окно и

SM> подправить некоторые строки через WM_SETTEXT?

Hе знаю; может, и проще, но ненамного. Hапример, как бы я искал это окно?

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)