Func _ReadWriteMemory()
$hWnd = WinGetHandle('[Title:Тестовая программа; Class:AutoIt v3 GUI]')
If $hWnd Then
$iPid = WinGetProcess($hWnd)
If $iPid Then
$iAddress = ControlGetText($hWnd, '', '[Class:Edit; Instance:1]')
If $iAddress > 0 Then
$iAddress = Int($iAddress);адрес памяти внешнего процесса
$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, 0, $iPid)
If $hProcess Then
Local $iRead, $iWrite, $t = DllStructCreate('WORD')
For $i = 1 To 10
If ProcessExists($iPid) Then
; Чтение значения памяти
_WinAPI_ReadProcessMemory($hProcess, $iAddress, DllStructGetPtr($t), 2, $iRead)
$iVal = DllStructGetData($t, 1)
$iVal += 5
; Запись значения в память
DllStructSetData($t, 1, $iVal)
_WinAPI_WriteProcessMemory($hProcess, $iAddress, DllStructGetPtr($t), 2, $iWrite)
Else
ExitLoop
EndIf
Sleep(1000)
Next
If ProcessExists($iPid) Then
_WinAPI_CloseHandle($hProcess); Открытый процесс необходимо закрывать
EndIf
Else
MsgBox(16+4096, 'Ошибка', 'Не удалось открыть память тестовой программы')
EndIf
Else
MsgBox(16+4096, 'Ошибка', 'Не найден адрес памяти тестовой программы')
EndIf
Else
MsgBox(16+4096, 'Ошибка', 'Не найден процесс тестовой программы')
EndIf
Else
MsgBox(16+4096, 'Ошибка', 'Не найдено окно тестовой программы')
EndIf
EndFunc