Comment récupérer les handles des fenêtres d'un processus ? [Résolu]

h60 46 Messages postés dimanche 20 décembre 2009Date d'inscription 5 février 2012 Dernière intervention - 14 sept. 2007 à 14:23 - Dernière réponse : h60 46 Messages postés dimanche 20 décembre 2009Date d'inscription 5 février 2012 Dernière intervention
- 15 sept. 2007 à 09:02
Bonjour à tous

J'ai bêtement fais un copier coller du code que j'ai trouvé dans la rubrique
Comment récupérer les handles des fenêtres d'un processus ?
http://www.developpez.com/delphi/faq...dlefenetreproc

mais ce code ne compile pas

type
  PFindWindowsStruct = ^TFindWindowsStruct;
  TFindWindowsStruct =
record

    ProcessID: DWORD;
    HandleList: TList;
 
end
;

function
EnumWindowsProc(hwnd: HWND; lParam: LPARAM):
boolean
;
stdcall
;
var

  dwProcessId: DWORD;
begin

 
if
lParam <>
0
then

 
begin

    GetWindowThreadProcessId(hwnd, dwProcessId);
   
with
PFindWindowsStruct(lParam)^
do

     
if
dwProcessID = ProcessID
then

        HandleList.Add(
Pointer
(hwnd));
    result:=
true
;
 
end

 
else

    result:=
false
;
end
;

procedure
FindProcessWindows(ProcessID:
Integer
; Handles: TList);
var

  findWindowsStruct: TFindWindowsStruct;
begin

  findWindowsStruct.ProcessID:= ProcessID;
  findWindowsStruct.HandleList:= Handles;
  EnumWindows(@EnumWindowsProc,
Integer
(@findWindowsStruct));
end
;

Dans la fonction :
EnumWindows(@EnumWindowsProc, Integer(@findWindowsStruct));

j'ai le message : "Variable requise". N'étant pas un spécialiste je ne comprends pas ce message.

J'utilise Delphi 6 sous Windows XP SP2

Si vous avez une autre solution je ne suis pas contre bien que celle-ci me paraisse intéressante.

Pouvez-vous m'aider?

Merci de votre réponse.

<!-- / message -->
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
h60 46 Messages postés dimanche 20 décembre 2009Date d'inscription 5 février 2012 Dernière intervention - 15 sept. 2007 à 09:02
3
Merci
Merci à tous ceux qui ce sont interessés à mon problème

J'ai trouvé ma solution il fallait que j'écrive

EnumWindows(@TForm1.EnumWindowsProc, Integer(@findWindowsStruct));

à la prochaine

Merci h60 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de h60
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 14 sept. 2007 à 18:00
0
Merci
Bj H60,
Tu trouveras l'aide  de la fonction EnumWindows dans le SDK, fournie avec delphi!
il faut que tu vérifie que tes variables sont compatibles avec les paramètres passés dans la fonction.
C'est ce que je ferai en premier!...
bon code
Jean_jean
Commenter la réponse de cs_Jean_Jean
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 14 sept. 2007 à 19:04
0
Merci
Salut,

j'ai testé ce code et il fonctionne très bien sous Delphi7 et Turbo-Delphi ???

 
@+
Cirec

<hr size="2" />
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.