teadrinker пишет:Можно, особенно если справку почитать.
А как? У меня получилось только через ReadProcessMemory:
PROCESS_VM_READ := 0x10
PROCESS_VM_OPERATION = 0x8
Process, Exist, notepad.exe
If(!ErrorLevel) {
MsgBox, Process not found.
}
PID := ErrorLevel
hProcess := DllCall("OpenProcess", "UInt", PROCESS_VM_READ | PROCESS_VM_OPERATION
, "Int", False
, "UInt", PID)
address := 0x007D31C9
bytes := 10
VarSetCapacity(buffer, 10)
DllCall("ReadProcessMemory", "Ptr", hProcess, "Ptr", address, "Ptr", &buffer, "Ptr", bytes, "Ptr", NULL)
msgbox % bufferToHex(buffer, 10)
bufferToHex(byRef buffer, sizeBytes)
{
loop % sizeBytes
s .= Format("{:02X} ", NumGet(&buffer + 0, A_Index - 1, "UChar"))
return rtrim(s, A_space)
}
Пробовал так:
vData := 0x007D31C9
vByte1 := NumGet(&vData + 0, "UChar")
MsgBox, % Format("{}", vByte1)
И у меня возвращает какие-то непонятные цифры. Не можете подсказать, как возвратить хотя-бы начальные два байта по указанному адресу через NumGet?
Malcev пишет:Вы бы почитали в справке, что делают эти методы, тогда бы и вопросы отпали.
А что там читать? Команда читает байты по адресу. Вроде - все.