Lo he solucionado así:
Código PHP:
bool THiloDebugger::AtachProcessByNameWindow(char *wName,int &Error)
{
HWND HParent;
DWORD ProcessId;
DWORD ThreadId;
int retval=false;
HParent=FindWindow(NULL,wName);
if(HParent){
ThreadId=GetWindowThreadProcessId(HParent,&ProcessId);
if(ThreadId){
if(DebugActiveProcess(ProcessId)){
pi.dwThreadId=ThreadId;
pi.hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, ProcessId);
pi.hThread = OpenThread( THREAD_QUERY_INFORMATION | THREAD_TERMINATE, FALSE, ThreadId);
pi.dwProcessId=ProcessId;
retval=true;
Error=0;
}else{
Error=-1;
}
}else{
Error=-2;
}
}else{
Error=-3;
}
return retval;
}
Con esto ya obtengo el Handle del proceso atacheado y el del thread y aparentemente funciona todo ok. ¿está bien la solución?