Такая вот беда: Надо получит значение дробного числа из одной проги. Знаю даже в какой области памяти, но не могу т.к. не знаю как искать числовые зна чения. Если кто видит чего не хватает этому коду ., Просьба помочь... ОЧЕНЬ Нужно. 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 ' Что с этим проектом?
Ответить
|