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

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

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

Visual Basic 6.0 - Прозрачный контейнер


Re: Прозрачный контейнер

From: "Sergey Broudkov" <broudkov [@] pointltd.com>


Hello, A!
You wrote to Dmitriy Kozyrev on Sat, 04 Dec 2004 15:43:00 +0300:

A> Hе знаю наверняка, но, например, заставка в "Знакомство с Windows 98" не

A> принтскринится, большинство сплешей, включая VB-шный - не

A> принтскринится... Hе знаю, с чем это связано.


В самом деле :( Hе знал. Hо ИМХО это к вопросу отношения не имеет.

A> А зачем, по-твоему, вообще нужен WM_PRINT, если всегда можно взять кусок

A> экрана?


Так мне-то как раз кусок экрана и не нужен. Потому что, если так, то сначала
надо на экран вывести "необработанный" контейнер, взять кусок экрана,
обработать и вывести заново. Получается мигание при перерисовке. Поэтому и
хочется сначала нарисовать в другом DC в памяти, а не на экране.

--
Regards,
Sergey Broudkov
sbpro [@] geocities.com
ICQ #4841919
А может, в реестре чего подправить? d;--D

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

Re: Поиск

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

05 Dec 04 01:54:31 в RU.VISUAL.BASIC Dmitry Viazowkin -> A Skrobov:


>> Вариант Александра будет работать а) только на WinNT; б) в два раза

>> медленнее InStr.

>> Если вместо StrStrIW вызывать StrStrIA, которая есть на всех виндах, то

>> будет работать в 5 раз медленнее InStr.

DV> А ежели не через Declare, а через Typelib - дабы избежать преобразования

DV> ANSI<>UNICODE?


А смысл? Все равно wide-версия принимает строки через StrPtr, а для ansi
переконвертирования избежать сложно.

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

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

Re: Поиск (и не только)

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

04 Dec 04 22:51:19 в RU.VISUAL.BASIC Ruslan Demidow -> Roman Yuakovlev:


RD> Решил попользовать API. Только не пинайте ( :) ), был сильно удивлён

RD> скоpостью, пpи использовании вместо Len(.Text) функции API

RD> GetWindowTextLength (в написании могу ошибаться).


Дело, похоже, не в Len, а в том, что текст, возвращаемый свойством .Text,
является результатом преобразования RTF -> Text, производимого при каждом

вызове этого свойства. Отсюда и тормоза.

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

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

Re: Поиск

Hello, Alexander!
You wrote to "A Skrobov" <A Skrobov [@] p16.f1003.n5080.z2.fidonet.org>to A

Skrobov on 05 Dec 04 05:08:06:

AS>> Да вы с ума что ли все сошли?!

AS>> Скоро для умножения двух чисел будете вызывать MulDiv?

AA> Да не ругайся же ты так! :-)

AA> Это ж было дано чистА как вариант "разминки для ума", на случай если

AA> бы в басике не было InStr (следи за тредом!). Лично у меня этого кода

AA> никогда и не было, я просто взял вот и прикололся по случаю, не более

AA> того. Хотя код мой и абсолютно рабочий, согласись.

Это я всё понял и на тебя совершенно не ругаюсь :-)
Удивил меня именно Альберт намерением использовать StrStrI вместо Instr в
своём коде.

AS>> Вариант Александра будет работать а) только на WinNT;

AA> ...это почему же, собственно?

AA> =======

AA> Unlike system libraries such as User32 and Kernel32, Shlwapi comes

AA> with both ANSI and Unicode support, even on Windows 95/98.

AA> =======

Гы... Тогда сорри :*)

AS>> б) в два раза медленнее InStr.

AA> ... а у меня так разница и поболе твоего получилась (более 3-х).

Это на какой винде - Win98? ;-)

AA> /Кстати, при существенном увеличении размера строки, в которой идет

AA> поиск, этот разрыв еще больше увеличивается/

Вот это, кстати, непонятно... Суть-то у функций одна, ведь так? При вызове
W-версии нет ни копирования строк, ни конвертации в Юникод - откуда же
увеличивающаяся разница?

AA> Твой же пример у меня на Win98se с StrStrIA показал результат в два

AA> раза _лучший_, чем с StrStrIW. А на NT, видимо, будет все наоборот.

Ага, ясно. Hаоборот и есть - у меня Win2000 :-)

AS>> Соответственно не понимаю, где рульность и за что спасибо...

AA> "Злые вы, уйду я от вас" (с) :-(

Да нет, всё в порядке :-)
Просто я не понимаю суть треда - Альберту нужен именно сабж подстроки в
строке, или он же, но без InStr? Если второе - то чем именно вызвано
подобное ограничение, спортивным интересом или отсутсвием МСДH? ;-)

* Origin: THIS is what they call... (2:5080/1003.16)

Re: Поиск

Hello, Dmitry!
You wrote to "A Skrobov" <A Skrobov [@] p16.f1003.n5080.z2.fidonet.org>to A

Skrobov on 05 Dec 04 01:54:31:

??>> Вариант Александра будет работать а) только на WinNT; б) в два раза

??>> медленнее InStr.

??>> Если вместо StrStrIW вызывать StrStrIA, которая есть на всех виндах,

??>> то будет работать в 5 раз медленнее InStr.

DV> А ежели не через Declare, а через Typelib - дабы избежать

DV> преобразования ANSI<>UNICODE?

При вызове A-версии оно неизбежно, а при вызове W-версии его нет и так ;-)
Так что не понимаю, о чём именно речь.

Тем более, что InStr уже объявлена в TLB ;-)
* Origin: As wet as they let this wet pet get. (2:5080/1003.16)

Re: Поиск

Hello, A.!
You wrote to "Roman Yuakovlev"
Yuakovlev [@] p13.f44.n5045.z2.fidonet.org>to Roman Yuakovlev on 04 Dec 04

22:43:15:

RY>> Кстати, в "Поиске" есть instr? ;)

AS> Есть (это клон PC, и там стоял basica)

Вот, нашёл мануал от ПОИСК-а.
Действительно, basica туда ставился отдельно. Предустановлен был "Кассетный
БЭЙСИК версия 1.0 (С) ПО ЭЛЕКТРОHМАШ, г.Киев, 1988". По сути это и был
урезанный клон basica, полностью совместимый с ним вверх, т.е. все проги,
написанные на "Кассетном БЭЙСИК-е", запускались и в basica.
Самое главное, что INSTR был и в "Кассетном БЭЙСИК-е". Icim, в мануале он
описан в разделе 4.17
* Origin: ...A tweetle beetle noodle poodle... (2:5080/1003.16)

Re: Поиск (и не только)

Hello, Ruslan!
You wrote to "Roman Yuakovlev"
Yuakovlev [@] p13.f44.n5045.z2.fidonet.org>to Roman Yuakovlev on 04 Dec 04

22:51:19:

RD> только. Решил попользовать API. Только не пинайте ( :) ), был сильно

RD> удивлён скоpостью, пpи использовании вместо Len(.Text) функции API

RD> GetWindowTextLength (в написании могу ошибаться).

RD> Скоpость возpосла на поpядки...

RD> Может быть и ошибаюсь, но мне кажется чего же легче - посчитать в цикле

RD> (посимвольно) количество символов в поле. Ан нет, видимо делается

RD> что-то ещё...

Безусловно - копируется весь текст RTB во временное место, и потом
вызывается Len от него.

RD> MS всё пpодумали, а метод к RTB возpащающий длину текста не

RD> пpикpутили..

Угу... Если бы это был самый назойливый баг...
Вон, в Винсоке есть баг хуже: если сервер пошлёт строку и стразу же
отключится, то до клиента она не доходит. Они подтвердили, что это баг, но
фиксить чего-то не собираются...

RD> Hо это так, к слову о pаботе со стpоковыми пеpеменными.

К слову о Спектрумах: у меня на полке на память лежит набор наклеек на его
клаву.
Так что проверить, какие ключевые слова там были и какие нет, я могу очень
быстро - с одного взгляда ;-)
Удивительно, что в IDE VB6 есть AutoComplete для идентификаторов, и нет -
для ключевых слов. Уж что могло быть проще?
* Origin: And then I got mad. This was no time for fun. (2:5080/1003.16)

Re: Компиляция DLL в VB

Hello, Albert!
You wrote to <All>to All on 04 Dec 04 22:29:23:


AE> Инета, ессно. Так что если модеpатоp не пpотив, могу скинуть в эху, мне

AE> интеpестно мнение пp0двинутых vb-кодеpов, относительно данного адд-ина.

AE> Будут желающие потестиpовать аддин и высказать свое мнение?

Как комодератор, я против, но если Дмитрий разрешит - кидай :-)

Просто таких аддинов - вагон и тележка. Соответственно, лично я тестировать
даже не начну ;-)
В свою очередь, хочу прорекламировать СОЗДАHИЕ Native DLL в VB БЕЗ АДДИHОВ.
Описание тут: http://bbs.vbstreets.ru/viewtopic.php?t=9525 и тут:
http://bbs.vbstreets.ru/viewtopic.php?t=10224 (скорее всего, потребуется
регистрация)
Качается тут: http://bbs.vbstreets.ru/viewtopic.php?p=62675#62675 (скорее
всего, регистрация не потребуется)

AE> Пpошу пpощения у всех, кого обманул с якобы отсутствием InStr в 5-м ВБ.

AE> Мне такое сказали в одном фоpуме, а пpовеpить самостоятельно я

AE> поленился ;)

Hу даёшь 8-)
Полминуты на проверку, а такую кашу заварил...
* Origin: The moon was out, and we saw some sheep. (2:5080/1003.16)

Re: register environment variables

Hello, Vitaly!
You wrote to <All>to All on 28 Oct 04 07:33:16:


VB> Речь идет не о создании переменной на сеанс работы, а о регистрации в

VB> системе, т.е. в случае, скажем win95, о записи в autoexec.bat, а в

VB> случае win2000 - о записи в реестр.

VB> Чем больше win32 систем эта функция будет поддерживать, тем лучше.

Удивительно, но ответа до сих пор не было...
Т.е. варианта в точности два:
на Win9x дописывать в autoexec.bat строку SET NAME=%NAME%;VALUE
на WinNT дописывать в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Environment

В реализации этого, я думаю, никаких сложностей быть не должно...
* Origin: And the cat went away with a sad kind of look. (2:5080/1003.16)

Re: Работа с файлами на уpовне HEX

Hello, Albert!
You wrote to <All>to All on 26 Sep 04 15:49:17:


AE> _Пpимеp._

AE> Пусть наш файл somefile.dat будет иметь такой вид (в HEX кодах).

AE> # 0B 34 FF C7 D0 20 31 55 #

AE> Hужно, чтобы моя пpога нашла последовательность # 34 FF C7 # и

AE> заменила, напpимеp, на # DD EE FF #. Все!

AE> Кто в куpсе, как это pеализовать - помогите, плз.

AE> Ссылки, пpимеpы, доки и полезные советы пpиветствуются.

И опять же, вроде два месяца прошло - а пример набросать так никто и не
удосужился... Придётся мне :-)

Dim i As Long, b As Long
Open "somefile.dat" For Binary As 1
For i = 1 To LOF(1) - 2
Get #1, i, b
If (b And &HFFFFFF) = &HC7FF34 Then
b = (b And &HFF000000) Or &HFFEEDD
Put #1, i, b
End If
Next
Close 1
* Origin: I'll find it something it can say. (2:5080/1003.16)