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

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

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

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


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

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" <vde [@] ufanet.ru>


Hi Dmitry!

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

> переконвертирования избежать сложно.


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


--
With best regards
Dmitry Viazowkin


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

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

From: Alexander Asyabrik <belmis [@] mail.belpak.by>


Привет, 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 <belmis [@] mail.belpak.by>


Привет, 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 <All>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: http://www.r-demidow.front.ru/FBR/index.htm (2:5015/112.35)