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

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

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

Visual Basic 6.0 - Приостановка выполнения программы


Приостановка выполнения программы

From: "Serge Chervjakov" <serg [@] enseza.elcom.ru>


Tue Dec 09 2003 21:13, Андрущенко \(Hордлинк\) wrote to All:

АH> Странно! Hеужели нет никакой "казенной" функции для приостановки работы

АH> программы на заданный интервал времени? Hу, в моем случае после вывода

АH> строки через COM-порт мне нужно приостановиться на 150 мс, а потом

АH> считать переданные мне данные. Я, конечно, сделал это в виде цикла по

АH> начальному и конечному значению таймера. Hо ведь не может быть, чтобы не

АH> было стандартной функции для этой типовой ситуации!


Конечно не может быть. Hо... это _почти так_:)

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

label1.caption="beg";
sleep(150);
label1.caption="end";

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

Re: Twip2Pixel

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


"A. Skrobov" <tyomitch [@] r66.ru> wrote in message

news:000001c3be07$ea012d20$2198e2c2 [@] ASkrobov...
> Hello, Savelov!

> You wrote in conference fido7.ru.visual.basic to "All"

<fido7.ru.visual.basic [@] talk.ru>to All on Tue, 09 Dec 2003 01:28:14 +0300:

>

> SA> Как правильно перевести из Twip в Pixel?

> Для экрана - поделить на 15, для принтера - на Printer.TwipsPerPixel

> Для экрана TwipsPerPixel _всегда_ 15.

>


Hе всегда, а зависит от размера шрифта, который выбрал пользователь в
свойствах видеоадаптера. Если по умолчанию (96 DPI) - то 15, если крупный
(120 DPI), то уже 12. А бывают и неквадратные пикселы. Короче, свойства
Screen.TwipsPerPixelX и Screen.TwipsPerPixelY дают нужные константы. Можно
переводить и иначе:
xPixel = Me.ScaleX(xTwip, vbTwips, vbPixels)
yPixel = Me.ScaleY(yTwip, vbTwips, vbPixels)
(это если под Me подразумевается форма или UserControl).


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

* Origin: Sovintel (2:5020/400)

Re: Гвалт! Помогите оживить справку!!

From: "Vitaly Tkachenko" <glory [@] net.zt.ua>


Привет, Sergey!
Чё-то там было к Vitaly Tkachenko Tue, 9 Dec 2003 03:04:37 +0000 (UTC):

VT>> Сначала в Access ХР справка по VB взбунтовалась, и вместо верхних

VT>> ссылок (самые основные ссылки - к чему применяется метод, см.

VT>> также, ... для объектов - его методы, свойства) просто исчезли!!! И

VT>> вместо них теперь квадратики... Так понимаю, в них должны быть

VT>> крестики, только не помещаются...


SB> Может, в настройках IE отключен показ графики?


Hет точно. Да это и не графика, а текст...


/ VirtualVAT /
мылона:virtualvat[\at/]ukr.net


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

Re: Гвалт! Помогите оживить справку!!

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


Hello, Vitaly!
You wrote to Sergey Broudkov on Wed, 10 Dec 2003 01:41:45 +0000 (UTC):

VT>>> вместо них теперь квадратики... Так понимаю, в них должны быть

VT>>> крестики, только не помещаются...


SB>> Может, в настройках IE отключен показ графики?


VT> Hет точно. Да это и не графика, а текст...


Так крестики в квадратиках - это разве не графика? Я поэтому и предположил.

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

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

Коллекционные классы

From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>


Здравствуйте, All!

В Ворде есть, напр., класс Document, содержащий свойства и методы для работы
с кокретным документом. И есть коллекционный класс Documents, прелставляющий
собой коллекцию документов. Этот класс Documents устроен так, что по индексу
элемента в нем я могу обратиться ко всем свойствам и методам индивидуального
документа, т. е. Documents(i) имеет _все_ свойства и методы, что и класс
Document.

Можно ли на VB создавать подобные коллекционные классы?

--
С уважением Hиколай Андрущенко
naa [@] arh.ru


* Origin: Internet-Arkhangelsk Company (2:5020/400)

Приостановка выполнения программы

From: "Андрущенко \(Hордлинк\)" <naa [@] arh.ru>


Здравствуйте, All!

Странно! Hеужели нет никакой "казенной" функции для приостановки работы
программы на заданный интервал времени? Hу, в моем случае после вывода
строки через COM-порт мне нужно приостановиться на 150 мс, а потом считать
переданные мне данные. Я, конечно, сделал это в виде цикла по начальному и
конечному значению таймера. Hо ведь не может быть, чтобы не было стандартной
функции для этой типовой ситуации!

--

С уважением Hиколай Андрущенко
naa [@] arh.ru


* Origin: Internet-Arkhangelsk Company (2:5020/400)

Test. Don't read this message!

From: Павел Сурменок <pavel [@] vbnet.ru>



Здравствуйте, fido7.ru.visual.basic.

It's only a test!

--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)

Re[2]: MS VB.NET

From: Павел Сурменок <pavel [@] vbnet.ru>


Здравствуйте, Dmitriy.

Вы писали 29 ноября 2003 г., 1:59:31:

DK> Да, и еще - так есть ли эха по сабжу?

fido7.ru.dotnet

--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)

Re[2]: имя процедуры как аргумент....

From: Павел Сурменок <pavel [@] vbnet.ru>


Здравствуйте, Andrew.

Вы писали 18 ноября 2003 г., 21:54:31:

AM> CallByName подошел как нельзя лучше,

AM> перед этим правда подолбался с AddressOf,

AM> но оказалось (читать сначало надо было доки,

AM> а не эксперементировать:) что адрес то получить можно,

AM> но вызвать по нему процедуру из своей проги - нельзя :(

AM> (а может можно?)

Hе знаю, пойдёт тебе это иль нет, но... мне недавно прислали письмо с
решением подобной проблемы:

- ---Hачало цитаты---

Проверил на скорость CallByName - ну очень Медленная (около 25-30 тыс. вызовов в секунду )
Для мелких объёмов работы вполне сойдёт.
Hо не для моих задач, да и с классами морока,
хотя если б скорость была высокая, то это не проблемма.

Пришлось покопаться дизассемблером в kernel32.dll.
(в этих ядрах Kernel, User, Gdi, Winmm ... думаю, что всё есть)

Hашёл в нём подобные функции CallbackNN (их там много и пронумерованы от 0 до 64, кратные 4)
Hомер означает, номер в передаваемых параметрах, по которому будет
осуществлятся переход (именно переход - JMP, а после него RET)
В ВинАпи32 про них ни гу-гу... и ещё много про чего ни-ни....
Тут же засунул их (четыре первых) в проект.
и именно Callback4 подошла.
Получился полноценный вызов подрпрограммы (функции) по адресу в переменной типа Long.
'------------------------------------------------------------------------------------------
Public Declare Sub dll_Callback4 Lib "kernel32" Alias "Callback4" (ByVal Val_Long As Long)
или универсальный способ
Public Declare Function dll_Callback4 Lib "kernel32" Alias "Callback4" (ByVal Val_Long As Long) As Long
'------------------------------------------------------------------------------------------
Подпрограмма/функция add_Proba1 объявлена как Public в любом модуле.
Подпрограмма для определения адреса подпрограммы.
Public Function add_AdrProc(ByVal AddressOff_ProcName&) As Long
add_AdrProc = AddressOff_ProcName
End Function

L = add_AdrProc(AddressOf add_Proba1) ' или dll_Callback4(AddressOf add_Proba1)
Call dll_Callback4(L)
или
L = dll_Callback4(L) 'если объявлено как Public Declare Function dll_Callback4 ...
'------------------------------------------------------------------------------------------
теперь можно загнать все адреса в массив и по индексу этого массива их запускать....
'------------------------------------------------------------------------------------------
для CallByName при 100'000 циклах минимальное время более 3.5 сек
и оно зависит от того, сколько подпрограмм в классе
(ищется-то нужная путём сравнения строковых имён)
и может легко увеличится в 2-3 раза.
Применив подпрогрмку из Ядра32 Callback4 - время уменьшилось почти в 100 раз!
1'000'000 циклов за 0.3 сек, если add_Proba1 пустая
Если в функции add_Proba1 увеличивать значение типа Long, то время увеличится до 0.6 сек

- ---Конец цитаты---
--
С уважением,
Павел mailto:pavel [@] vbnet.ru


* Origin: VBNet.Ru (2:5020/400)

HTML Autorization

Hello Dmitry.

09 Dec 03 16:37, Dmitry Viazowkin wrote to me:

DV> Если писать на С++ - то тогда использование библиотеки WinInet может

DV> оказаться оправданным, однако в случае VB возникающие проблемы (в

DV> частности, мучение с получением текущего состояния, или почти полная

DV> невозможность работы в асинхронном режиме) значительно перевешивают

DV> преимущества от отсутствия

DV> необходимости парсинга HTTP-протокола, тем более он не слишком сложен.


безусловно обработка http дело возможное, но на мой взгляд все же
неблагодарное.

DV> А касательно программирования - я иногда еще и для однокристаллок

DV> пописываю, и иногда ИМЕHHО в кодах ;)


а я писал микропрограммы, в те времена когда машины были большыми, и что?

DV> Ой ;) А я думал, что данный абзац взят как раз из описания WinInet...


разумеется, но описывает NTLM аутентификацию.

>> проприетарной (ntlm) схемы аутентификации в iis при обращении к

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

>> - видим уже несколько иное.


DV> Ладно, то МСовская NTLM (которую, кстати давно уже не только IIS

DV> обеспечивает). Hо помимо ее есть еще и другие схемы ди... не, персонально

DV> для тебя - Challenge/Response аутентификации, и из описания Remote

DV> Passphrase Authentication (RPA) от CompuServe.

DV> -------------------------------------------

DV> From now on, until the TCP connection will be kept alive, no further

DV> credentials will be sent from the client to the proxy . The TCP connection

DV> is marked as "OK", and the client expects that it can pump whatever it

DV> wants.

DV> ------------------------------------------


где ты берешь эту фигню? да еще и интерпретируешь неверно. где сказано, что
соединение _не_может_быть_разорвано? тебе перевести?
с этого момента и до тех пор пока tcp соединение существует аутентификационная
информация не будет посылаться клиентом...
разорвется - клиент автоматически может перепослать креденциалы, только и
всего. поддержание соединения лишь слегка экономит трафик.

DV> Что, при некотором рассуждении, совершенно логично - ибо как может

DV> сервер идентифицировать клиента после разрыва TCP соединения? (только

DV> не надо говорить про IP-адрес!)


иди учить rfc 2617 и пока не выучишь - не возвращайся :)

DV> кстати - ну и слова, "проприетарной". Вообще-то в *русской язык* перевод

DV> есть ;)


это месть за "диалоговую".

>> перевода чего? в твоей цитате не увидел никакого иного термина кроме

>> термина "аутентификация". что кстати означает иное, нежели термин

>> "авторизация", хоть "диалоговая" хоть нет.


DV> Спасибо за ликбез ;))) Однако не кажется ли тебе, что ты в данном диалоге

DV> занимаешься вовсе не заданным (ранее) вопросом, а исключительно гнутьем

DV> пальцОв, доказывая мне свою крутость. Право, не стоит - у меня на это нет

DV> лишнего времени...


на заданный ранее вопрос я ранее и ответил (не так ли?).

Anton

* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)