tengo un problema muy extraño usando la api WriteProcessMemory
Resulta que en mi programa uso esa api un montón de veces sin problema de ningún tipo, pero ahora por alguna extraña razón y con un offset determinado lee pero no escribe.
Código:
Declare Function WriteProcessSingle Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any,
ByRef lpBuffer As Single, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Boolean
dim datos as single
ret = ReadProcessMemory(handle, offset, datos, 4, written)
datos = datos * 2 / 0,0025683
ret = WriteProcessMemorySingle(handle, offset, datos, 4, written)
Debug.Print ret, written
resutado del debug: false, 0 No ha escrito los datos.
No entiendo el por qué de este problema.
comentaros que he intentado usar el getlasterror de esta manera:
Código:
buffer = Space(200)
Debug.Print FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, GetLastError, SUBLANG_DEFAULT, buffer, 200, 0&)
y el resultado ha sido '.46', no sé si sería posible obtener algún string respecto a ese lasterror.....
Deciros que el handle es correcto, etc etc. Si he cometido un error pues estoy ciego y no lo veo. No obstante el proceso lo he abierto de esta forma:
Código:
CreateProcess vbNullString, app.path & "\test.exe " & Command & commandline, _
ByVal 0&, ByVal 0&, 1&, CREATE_SUSPENDED, ByVal 0&, revolt, sInfo, pInfo
también comentarios que he intentado abrir el proceso de esta forma, con el mismo resultado de no poder escribir en ese offset:
Código:
OpenProcess(PROCESS_ALL_ACCESS, False, pid)
Ayuda !