Потому, что GetCurrentProcess возвращает THandle, а GetCurrentProcessId возвращает PID - разные вещи, поэтому и функции разные

чтобы получить THandle процесса надо использовать OpenProcess:
Код:
var H:THandle;
H := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false,ProcessId);
...
CloseHandle(H);
Короче - в исходнике всё есть: