Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Gotha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 20.04.2006 (Чт) 10:55
- Откуда: Красногорск
-
Gotha » 03.05.2006 (Ср) 15:12
getCount сканит область памяти на определенное значение, но все это делается в цикле и постоянно юзается ф-ция чтения значений из памяти процесса, может это можно как-то оптимизировать? подскажите, а то меня хватило только на такой вариант
- Код: Выделить всё
Private Const MobHPAdress = &H54EA10
Public Declare Function Toolhelp32ReadProcessMemory Lib "kernel32.dll" (ByVal th32ProcessID As Long, ByRef lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal cbRead As Long, ByRef lpNumberOfBytesRead As Long) As Long
Function getMLong(ByVal addr As Long) As Long
Dim mp As Long
Toolhelp32ReadProcessMemory ByVal pid, ByVal addr, mp, 4, 0
getMLong = mp
End Function
Function getCount(ByVal myHP&) As Integer
Dim i&, Num&
For i = HPAdress To HPAdress + 66900 Step 168
Num = getMLong(i)
DoEvents
If Num <> 0 Then
getCount = getCount + 1
End If
Next i
End Function
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.
-
Viper
-
- Артефакт VBStreets
-
-
- Сообщения: 4394
- Зарегистрирован: 12.04.2005 (Вт) 17:50
- Откуда: Н.Новгород
-
Viper » 03.05.2006 (Ср) 15:19
а не проще сразу считать блок памяти в буфер и просматривать его на нужное значение?
Весь мир матрица, а мы в нем потоки байтов!
-
ANDLL
-
- Великий гастроном
-
-
- Сообщения: 3450
- Зарегистрирован: 29.06.2003 (Вс) 18:55
-
ANDLL » 03.05.2006 (Ср) 15:19
Октрывать процесс через OpenProcess т дальше юзать ReadProcessMemory, который, может так оказаться, быстрее твоей функции.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог
-
Gotha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 20.04.2006 (Чт) 10:55
- Откуда: Красногорск
-
Gotha » 03.05.2006 (Ср) 15:22
попробую оба варианта, спасибо. Только с вариантом !Viper! придется повозиться - сделать структуру чтобы читать определенные поля
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.
-
Viper
-
- Артефакт VBStreets
-
-
- Сообщения: 4394
- Зарегистрирован: 12.04.2005 (Вт) 17:50
- Откуда: Н.Новгород
-
Viper » 03.05.2006 (Ср) 15:31
записывай память в массив типа Long и читай значение по нужному индексу
З.Ы. Long и имелся ввиду
Последний раз редактировалось
Viper 03.05.2006 (Ср) 15:38, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!
-
Gotha
-
- Продвинутый пользователь
-
-
- Сообщения: 106
- Зарегистрирован: 20.04.2006 (Чт) 10:55
- Откуда: Красногорск
-
Gotha » 03.05.2006 (Ср) 15:35
просто у меня там тип лонг, да и степ через 168*4 байтов
Du stirbst. Besitz stirbt.
Die Sippen sterben.
Der einzig lebt - wir wissen es
Der Toten Tatenruhm.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot], SemrushBot и гости: 169