Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница:

 

  Вопрос: Чтение памяти и вывод значений Добавлено: 05.06.03 13:55  

Автор вопроса:  Jen

Такая вот беда: Надо получит значение дробного числа из одной проги. Знаю даже в какой области памяти, но не могу т.к. не знаю как искать числовые зна чения. Если кто видит чего не хватает этому коду ., Просьба помочь... ОЧЕНЬ Нужно.

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAcess As Long, ByVal bInheritHandle As Long, _
 ByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAdress As Any, _
 ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddess As Any, _
 ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWriten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const PROCESS_ALL_ACCESS = &HF0000 Or &H100000 Or &HFFF
 
Private Sub Command1_Click()
Dim aBlock As Long
Dim hWnd As Long ' удерживает управление, переданной функцией Find Window.
Dim pID As Long ' используется для хранения идентификатора процесса.
Dim pHandle As Long ' держит управление процессом.
Dim Memo As String * 20
hWnd = FindWindow(vbNullString, "Имя_Программы")
If (hWnd = 0) Then
MsgBox "Приложение не найдено", vbCritical, "Досадная Ошибка"
Exit Sub
End If
GetWindowThreadProcessId hWnd, pID
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pID)
If (pHandle = 0) Then
MsgBox "Не могу открыть процесс", vbQuestion, "Процесс"
Exit Sub
End If
For aBlock = 30300000 To 30800000 Step 4 'значение содержиться в этом промежутке
ReadProcessMemory pHandle, aBlock, Memo, 4, 0&    'т.к. Memo as string выводится текст(символы)
'а если Memo as single(что мне и нужно 4 байта с точкой) , то Memo=0.
If Asc(Mid(Memo, 1, 1)) = 0 Then GoTo er: ' Отсейваем, если 1 байт копируемой области равен 0 значит ищем дальше
Debug.Print Memo & "<<->>" & aBlock
er:
Next
CloseHandle hProcess
End Sub

' Что с этим проектом?

Ответить

  Ответы Всего ответов: 0  

Нет ответов

Страница:

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам