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

Résolu
h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 - 14 sept. 2007 à 14:23
h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 - 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 -->

3 réponses

h60 Messages postés 46 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 5 février 2012 1
15 sept. 2007 à 09:02
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
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
14 sept. 2007 à 18:00
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
14 sept. 2007 à 19:04
Salut,

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

 
@+
Cirec

<hr size="2" />
0
Rejoignez-nous