I'm trying to inject a thread to another process, which let the process load an external dll.
Here's the code I found on the internet, and it works.
    HANDLE hThread  = CreateRemoteThread (hProcess, NULL, 0,
            (LPTHREAD_START_ROUTINE) GetProcAddress(
                GetModuleHandle(L"kernel32"), "LoadLibraryA"), 
                  lpMemory, 0, NULL);
    if (hThread == INVALID_HANDLE_VALUE)
    {
            return false;
    }
But from my understandings, the address returned by GetProcAddress lives in the memory space of the current process, not the targeted one. 
So why does it work?
Tested on Windows 7