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

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

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

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Как обнаружить процесс

SB>>> Сдается мне, у тебя VB5. Там ИМХО AddressOf еще не придумали.
RY>> #%$ [@] %!!! Каждому, кто мнит себя экспертом - на досуге считать
RY>> различия между VB5 и VB6, уже их всех по сто раз пережевывали.
RY>> Есть в VB5 AddressOf
SB> Зачем же так эмоционально? :( Hаписал же - ИМХО. Могу я, #%$ [@] %,
SB> ошибться, или нет?
Да замонали уже все, вообще... могу я чужую ошибку исправить? ж)


* Origin: 1134.moveax.ru (2:5045/44.13)


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

AS> Dim i As Long, b As Long
AS> Open "somefile.dat" For Binary As 1
AS> For i = 1 To LOF(1) - 2
AS> Get #1, i, b
AS> If (b And &HFFFFFF) = &HC7FF34 Then
AS> b = (b And &HFF000000) Or &HFFEEDD
AS> Put #1, i, b
AS> End If
AS> Next
AS> Close 1
"Самоуверенный. Просто зверюга" ;)

А о нетмейле ты не подозревал? ;) Я, например, ответил в нетмейле. :)


* Origin: 1134.moveax.ru (2:5045/44.13)


Help! VBS - "Лишний" час в TimeReceived (MAPI.Session)

Привет, All!

Обрабатываю входящие письма на внешнем (по ЛАH) почтовом сервере
(M$Exchange) средствами VBScript под w2k:

===8<--- здесь начало a.txt ===8<---
' подключимся к почтовому серверу
WScript.Echo "? Connecting to '" & strMailHost & "':'" & strMailUser &
"'..."
Set objSession = WScript.CreateObject("MAPI.Session")
objSession.Logon "","",False,,,,strMailHost & vbLf & strMailUser
Set objInboxFolder = objSession.Inbox
Set objInMessagesCollection = objInboxFolder.Messages
' выясним кол-во писем в секции "ВХОДЯЩИЕ" почтового ящика
intMsgNum = objInMessagesCollection.Count
If intMsgNum > 0 Then
' обрабатываеться только ОДHО письмо
WScript.Echo "? Processing (get+del) ONE message"
Set objOneMsg = objInMessagesCollection.GetFirst
strSenderAddress = objOneMsg.Sender.Address
strSubj = objOneMsg.Subject
> strTimS = objOneMsg.TimeSent
> strTimR = objOneMsg.TimeReceived
strName = objOneMsg.Sender.Name & " <" & strSenderAddress & ">"
===8<--- а здесь конец a.txt ===8<---

Ага... Всё прекрасно работает... Вот только _ДатаВремя_ писем, (полученное
через "TimeSent" и "TimeReceived") _отличается_ от *реального* (больше) на
_один_ час. Приходится грубо вычитать...

В MSDN (CDO 1.2.1 Objects, Properties, and Methods) ничего не нашёл...

Где копать?

/\/.\/.\/. С уважением, Влад.

* Origin: Я уже никогда... (2:5020/1641.9)


Help! VBS - "Лишний" час в TimeReceived (MAPI.Session)

Привет, All!

По поводу сообщения для тебя: "Help! VBS - "Лишний" час в TimeReceived
(MAPI.Session)"...
{ Вс, 05 дек 2004, 21:40; Vladislav Nosov (2:5020/1641.9) -> All }

Хотелось бы добавить...

VN> Обрабатываю входящие письма на внешнем (по ЛАH) почтовом сервере
VN> (M$Exchange) средствами VBScript под w2k:

[ ... skiped by NVV ]

Да, забыл указать. Очень серьёзная контора. Всё настроено по самое "не
балуйся" (админами;). В _M$OutLook_ ДатаВремя письма показывается
_правильно_...

%Subj% _Где_ копать?

/\/.\/.\/. С уважением, Влад.

* Origin: Я уже никогда... (2:5020/1641.9)


Re: Поиск

From: "Dmitry Viazowkin"

Hi Dmitry!

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

А как работает ВБшная StrPtr, если с ее помощью обычно удается передать
анси-строку? ;) Тогда уж передавать через VarPtr...


--
With best regards
Dmitry Viazowkin


* Origin: Me? Organized??? (2:5020/400)


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

From: Alexander Asyabrik

Привет, A. Skrobov

Вы, было дело, писали 5 декабря 2004 г., 13:05:

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

AS> For i = 1 To LOF(1) - 2
AS> Get #1, i, b
AS> If (b And &HFFFFFF) = &HC7FF34 Then
AS> b = (b And &HFF000000) Or &HFFEEDD
AS> Put #1, i, b
AS> End If
AS> Next

Более, imho, универсальная и наглядная альтернатива:

Dim s$, Hex1$, Hex2$
Hex1 = Chr(&H34) & Chr(&HFF) & Chr(&HC7) ' = # 34 FF C7 #
Hex2 = Chr(&HDD) & Chr(&HEE) & Chr(&HFF) ' = # DD EE FF #
Open "c:\test.dat" For Binary As 1
s = Space(LOF(1))
Get 1, , s
s = Replace(s, Hex1, Hex2)
Put 1, 1, s
Close 1


Естественно, эта метода плохо подходит для замены в большом файле (ибо
его содержимое в память надо грузить). Для уменьшения (почти вдвое)
использования памяти можно грузить в байтовый массив.

В VB5 можно использовать ту же InStr(B) для поиска позиций искомых
HEX-строк и писать заменяющие их строки непосредственно в файл.


--
С уважением, Alexander
4:43:23 PM



* Origin: Talk.Mail.Ru (2:5020/400)


Re: Поиск

From: Alexander Asyabrik

Привет, A. Skrobov

Вы, было дело, писали 5 декабря 2004 г., 12:23:

AS>>> б) в два раза медленнее InStr.
AA>> ... а у меня так разница и поболе твоего получилась (более 3-х).
AS> Это на какой винде - Win98? ;-)

Да. Вот такие получились результаты (комп слабый у меня):

4,96 A
9,89 W
2,80 InStr


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

Сам не понимаю... Вот цифры при длине строки всего в 1000 байт

140,87 A
351,33 W
33,07 InStr

InStr рулит конкретно :) Хотя, наверное, могут быть и какие-то
особенности тестирования _в IDE_, не стал я это перепроверять в
компилированном коде (ждать долго:).




--
С уважением, Alexander
5:29:50 PM



* Origin: Talk.Mail.Ru (2:5020/400)


Re: Поиск

Hello, Dmitry!
You wrote to "Dmitriy Kozyrev" Kozyrev [@] p148.f11.n5023.z2.fidonet.org>to Dmitriy Kozyrev on 05 Dec 04
19:07:47:

??>> А смысл? Все равно wide-версия принимает строки через StrPtr, а для
??>> ansi переконвертирования избежать сложно.
DV> А как работает ВБшная StrPtr,
Hикак вообще не работает. VarPtr, StrPtr и ObjPtr - это одна и та же
функция, просто объявленная по-разному в TLB. Функция состоит из двух
инструкций mov eax, [esp+4]; ret 4.
Hи о какой работе здесь речи не идёт ;-)

DV> если с ее помощью обычно удается передать анси-строку? ;)
Имхо ты заблуждаешься. Если не сложно, кинь пример.

DV> Тогда уж передавать через VarPtr...
VarPtr для строк возвращает адрес DWORD-участка, где хранится StrPtr. Т.е.
функциональность у них совершенно одинаковая.
* Origin: Luke Luck likes lakes. Luke's duck likes lakes. (2:5080/1003.16)


Re: Help! VBS - "Лишний" час в TimeReceived (MAPI.Session)

Hello, Vladislav!
You wrote to to All on 05 Dec 04 21:40:38:

VN> Ага... Всё прекрасно работает... Вот только _ДатаВремя_ писем,
VN> (полученное через "TimeSent" и "TimeReceived") _отличается_ от
VN> *реального* (больше) на _один_ час. Приходится грубо вычитать...
VN> В MSDN (CDO 1.2.1 Objects, Properties, and Methods) ничего не
VN> нашёл...
VN> Где копать?
Похоже на траблы с летним/зимним временем... Посмотри, что там с часовыми
поясами и всем таким.

(Дизклеймер: я с Exchange-ом никогда не работал, и это просто предположение,
взятое с потолка.)
* Origin: "Oh, no!" said the cat. (2:5080/1003.16)


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

Пpивет Dmitriy,
05 декабpя 04 ты писал(а) по поводу *Поиск (и не только). *
RD>> Решил попользовать API. Только не пинайте ( :) ), был сильно удивлён
RD>> скоpостью, пpи использовании вместо Len(.Text) функции API
RD>> GetWindowTextLength (в написании могу ошибаться).
DK> Дело, похоже, не в Len, а в том, что текст, возвpащаемый свойством .Text,
DK> является pезультатом пpеобpазования RTF -> Text, пpоизводимого пpи каждом
DK> вызове этого свойства. Отсюда и тоpмоза.
Ясно. Тепеpь буду знать, что с RTB, во избежание тоpмозов лучше pаботать чеpез сообщения.

Всех благ тебе, Dmitriy.
ICQ 177792013 FmMB200016700
*Hа уши давит* - тишина...
* Origin: r-demidow.front.ru/FBR/index.htm (2:5015/112.35)



Назад Содержание Вперед