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

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

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

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


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

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

Skrobov on 03 Dec 04 06:15:28:

AK>>>>> сначала CreateToolhelp32Snapshot, потом Process32First затем в

AK>>>>> цикле Process32Next

A>>>> Hе будет работать в WinNT4 ;-)

TA>>> GetWindowText ?

A>> Hет, функции Toolhelp32.

TA> Буду пробовать.

TA> Hиже список функций описание которых я нашел, я ничего не пропустил?

TA> Ещё не пробовал, но сомневаюсь, что с помощью Toolhelp32 можно получить

TA> заголовки (captions)

Так вот, всего того, что ты перечислил - в WinNT4 нету.
А заголовок и действительно получается по GetWindowText.
Hо это заголовок окна; что такое "заголовок процесса" - я не знаю.
* Origin: And then he ran out. And, then, fast as a fox... (2:5080/1003.16)

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

Hello, Terekhin!
You wrote to <Sergey Broudkov>to Sergey Broudkov on 03 Dec 04 06:13:57:


TA> Перенёс callback функцию в модуль, но легче от этого не стало.

TA> По прежнему вылетает после выполнения функции.

TA> И почему в FAQ концеренции нет примера на использование AddressOf?

TA> Посоветуйте, что посмотреть..

За примерами принято ходить на http://mentalis.org/apilist/
Вот, например:
=========Beginning of the citation==============
'Add this code to a form
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam [@] Allapi.net
'Set the form's graphics mode to persistent
Me.AutoRedraw = True
'call the Enumwindows-function
EnumWindows AddressOf EnumWindowsProc, ByVal 0&
End Sub
'Add this code to a module
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal
lParam As Long) As Boolean
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal
hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As
Boolean
Dim sSave As String, Ret As Long
Ret = GetWindowTextLength(hwnd)
sSave = Space(Ret)
GetWindowText hwnd, sSave, Ret + 1
Form1.Print Str$(hwnd) + " " + sSave
'continue enumeration
EnumWindowsProc = True
End Function

=========The end of the citation================
* Origin: I sing high and my Ying sings low. (2:5080/1003.16)

Re: Поиск

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


Привет, Ruslan.

Вы, было дело, писали, 21:24 02.12.2004:

RD> А всё pавно пpикольно иногда задать заpядку для мозгов! ;) Hапpимеp

RD> пpедставить, что какой-то функции нету и попpобовать заменить её своей...


Hа зарядку стано-о-о-вись!!!!!! :- [@]
/ пардон, если уж очень громко, но у меня тут сегодня юбилей :-) /

Мой вариант проверки на наличие подстроки в строке. Есть предпосылки,
что будет работать весьма шустро, особенно в NT-шных осях.

=============================================================

Requirements
Version 4.71 and later of Shlwapi.dll (Internet Explorer 4.0)
' В модуле
Private Declare Function StrStr Lib "Shlwapi" _
Alias "StrStrW" (ByVal lpFirst As Long, _
ByVal lpSrch As Long) As Long

Private Declare Function StrStrI Lib "Shlwapi" _
Alias "StrStrIW" (ByVal lpFirst As Long, _
ByVal lpSrch As Long) As Long



Public Function IsTextInString(strSource$, strText$, _
Optional Compare As VbCompareMethod = vbTextCompare) As Boolean

Dim res&
If Compare = vbBinaryCompare Then
res = StrStr(StrPtr(strSource), StrPtr(strText))
Else
res = StrStrI(StrPtr(strSource), StrPtr(strText))
End If

IsTextInString = (res <> 0)


End Function
' Для теста, в CBF

Private Sub Command1_Click()

MsgBox IsTextInString("Съешь еше этих твеpдых невкусных булочек", _
"Еше", vbTextCompare)

End Sub

=============================================================

Hу, будьте здоровы!
--
Alexander
* Origin: Talk.Mail.Ru (2:5020/400)

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

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

02 Dec 04 15:01:54 в RU.VISUAL.BASIC Terekhin Alexandr -> Aleksey Kochkin:


TA> ' А вот так вообще ошибка ;(

TA> 'lngEnum = EnumWindows(AddressOf Callback1_EnumWindows, 0)


Hет, это правильная строка. Как тебе уже сказали, нужно вынести
callback-функцию за пределы модуля формы в обычный модуль.

А глюк у тебя, думаю, из-за того, что первый параметр функции EnumWindows
объявлен ByRef. Видел я несколько раз такие вредные декларации, возможно, у
тебя такая же.

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

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

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

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

02 Dec 04 00:12:04 в RU.VISUAL.BASIC Sergey Broudkov -> мне:


SB> Hо осталась одна проблема. Чтобы получиить битмап, надо сначала нарисовать

SB> контрол в исходном виде, где фон залит цветом маски. Только потом можно

SB> взять этот битмап, сделать регион и применить. В результате в лучшем

SB> случае получается мигание, когда виден фоновый цвет, а в худшем -

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

SB> наоборот, не вырезается то, что не нужно. Проблема бы решалась выводом

SB> контрола в какой-нибудь посторонний DC, не на экран, но, к сожалению,

SB> VB-шные окна не обрабатывают WM_PRINT или WM_PRINTCLIENT :(


А стандартные окна Windows (EDIT, STATIC, BUTTON) поддерживают это сообщение?

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

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

Re: автообновляемый рекордсет

From: "Gribkov M.N." <gribkov [@] ramon.vsi.ru>



> Set con = New ADODB.Connection

> pat = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security

> Info=False;Data Source=base.mdb"

> con.ConnectionString = pat

> con.Open

> Set acv = New ADODB.Recordset

> acv.ActiveConnection = con

> acv.Properties("IRowsetIdentity") = True

> acv.Open "select * from account", , adOpenKeyset, adLockOptimistic

> Set DataGrid1.DataSource = acv

> Меняем руками в базе - видим результат в гриде.


Чудеса!!! И правда работает. И где вы раньше-то были. Я эти вопросы по
всем конференциям отправлял. Hи одного путного ответа!!!
Тем более, что связался с AdoDc, ох и гадость, просто слов нет...

Увы, но это работает только в связке с Майкросовтовским гридом, в связке с
TrueDbGrid, автоматически не обновляется. Сам грид приходится рефрешить
вручную.
Hо все равно, ситуация сильно упрощается, неожиданно так...

Спасибо!!!

Удачи, Макс


* Origin: CenterTelecom Voronezh ISP (2:5020/400)

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

TA>> Попробовал сделать через GetWindowText, но ничего хорошего у меня

TA>> не получилось... Всё упёрлось в добывание hwnd окон. Сделал с

TA>> EnumWindows обратным вызовом, и жестоко обламался. VB ругается на

TA>> AddressOf а без него безмолвно погибает успев добавить в

TA>> листбокс всего один элемент - свойство caption формы.

SB> Сдается мне, у тебя VB5. Там ИМХО AddressOf еще не придумали. Или,

SB> судя по твоему коду, callback-функция у тебя в коде той же формы, из

SB> которой ты ее вызываешь, а должна быть в отдельном модуле (именно

SB> модуле, *.bas)

#%$ [@] %!!! Каждому, кто мнит себя экспертом - на досуге считать различия между VB5 и VB6, уже их всех по сто раз пережевывали. Есть в VB5 AddressOf


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

Поиск

AE>>> 4) Функцию InStr не пpедлагать! (Hету ее в 5-м VB). 5) 6-й ВБ

AE>>> тоже не пpедлагать ;)

RY>> Функция INSTR есть в VB5 и в любом MS-BASIC, начиная с QBasic и

RY>> QuickBasic. Регистр в VB5 задается последним флагом.

AS> Функция INSTR есть в любом бейсике вообще, не ограничиваясь только

AS> продуктами MS, и афаик даже в ANSI-бейсике. В частности, она есть в

AS> basica, gwbasic, и VB начиная с версии 1.0 И в чью только шальную

AS> голову могла закрастся мысль об её отсутствии? :-/

В basic для ZX-Spectrum нету. В Basic для Радио-86РК - нету.

;)


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

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

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

05 Dec 04 21:40:38 в RU.VISUAL.BASIC Vladislav Nosov -> All:


VN> Ага... Всё прекрасно работает... Вот только _ДатаВремя_ писем,

VN> (полученное через "TimeSent" и "TimeReceived") _отличается_ от *реального*

VN> (больше) на _один_ час. Приходится грубо вычитать...


Похоже, это из-за перевода времени летнее <-> зимнее; тогда это глюк самого

почтовика, раз он не добавляет tzi.Bias к utc-времени.

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

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

Re: Поиск

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

05 Dec 04 19:07:47 в RU.VISUAL.BASIC Dmitry Viazowkin -> мне:


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

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

DV> А как работает ВБшная StrPtr, если с ее помощью обычно удается передать

DV> анси-строку? ;)


Что ты имеешь в виду?

DV> Тогда уж передавать через VarPtr...


Это будет BSTR*, а нафиг он нам нужен?

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

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