Récupérer tous les handles d'une application choisie
	
	
		Bonjour à tous,
Je liste tous les processus actifs dans une liste (de la même manière que le gestionnaire des taches).
Ensuite, à partir du ProcessID de l'application choisie, j'aimerais récuperer tous les handles de ce processus (un handle correspond à un composant de l'application choisie, je me trompe ?), pour me permettre de sélectionner un champs texte de cette application et faire un coller.
Je le fait de cette manière:
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   | tabHandles: array [0..100] of integer; // Un HWND est un integer...
procedure TfrmMain.ListerHandles(pid: Cardinal);
var
  handles: TList;
  i: Integer;
  findWindowsStruct: TFindWindowsStruct;
begin
  handles:= TList.Create;
  Try
    findWindowsStruct.ProcessID:= pid; // GetCurrentProcessID
    findWindowsStruct.HandleList:= handles;
    EnumWindows(@EnumWindowsProc, Integer(@findWindowsStruct));
    cbThreads.Clear;
    for i:= 0 to handles.Count - 1 do begin
      cbThreads.Items.Add('Handle: '+IntToStr(Integer(handles[i])));
      tabHandles[i] := Integer(handles[i]);
    end;
    cbThreads.ItemIndex := 0;
  Finally
    handles.Free;
  end;
end; | 
 Mais quand je teste les handles reçus avec un 
	Code:
	
PostMessage(tabHandles[cbThreads.ItemIndex]),WM_PASTE,0,0); // Simulation du coller
 Rien ne se passe.
Par exemple, Si je fait: 
	Code:
	
1 2
   | myHandle := GetTopwindow(GetforegroundWindow); // Ca marche mais que pour notePad 
PostMessage(myHandle,WM_PASTE,0,0);  | 
 Et que le focus est sur le notepad par exemple, handle est égal à 263014. 
Mais si j'utilise la méthode de listage pour le notepad, il ne me retourne qu'un enregistrement qui est différent de celui de la solution ci-dessus (459614). 
Comment faire ?