You said you were okay with getting the process ID.
You then need to use OpenProcess to get a handle to the process.
Once you have the handle, you can then use ReadProcessMemory to read chunks of the other processes memory space.
However, you need to know the address you are reading from. If the area you request isn't actually committed memory then the function will fail.
PS. The declare for ReadProcessMemory should look something like
public declare unicode function ReadProcessMemory lib "kernel32" alias "ReadProcessMemory"(hProcess as IntPtr,lpBaseAddress as IntPtr,byref lpBuffer as byte(),dwSize as integer,byref lpNumberOfBytesRead as integer) as boolean
That declare assumes that the process doing the reading and the process being read are both either 32 bit or 64 bit, not one of each. TBH, I don't know how / if it would work with different bit-nesses.