Handle [Résolu]

Signaler
Messages postés
162
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009
-
jnmchl
Messages postés
67
Date d'inscription
dimanche 16 octobre 2005
Statut
Membre
Dernière intervention
13 novembre 2009
-
Bonjours,
je voudrai savoir comment connaitre le handle de n'importe quel control se trouvant sous le curdeur de la souris, meme si il est en dehors de l'aplication
merci

6 réponses

Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Holala... pfff...

Tout simplement :

var
  P: TPoint;
  Handle: THandle;
begin
  GetCursorPos(P);
  Handle := WindowFromPoint(P);
  Label1.caption := IntToStr(Handle);
end;

La chaleur, c'est sûr...
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
27
un petit exemple :

function GetClassNameEnh(const p : TPoint): string;
var
  Handle   : Hwnd;
  ClassName: PChar;
begin
  Handle := WindowFromPoint(P);
  getmem(ClassName, 40);
  windows.GetClassName(Handle, ClassName, 40);
  Result := ClassName;
  Freemem(ClassName);
end;




GetCursorPos(P);
Label1.caption := GetClasseNameEnh(P);
Messages postés
1173
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
10 septembre 2011
3
Salut,

si je peux me permettre f0xi : il faut remplacer
Label1.caption := GetClasseNameEnh(P); // "e" en trop à Class par
Label1.caption : = GetClassNameEnh (P); auquel cas ça ne marche pas puisque delphi ne saura pas qu'il faut appeler cette fontion (logique puisque le nom de la fonction est mal écrit)

@+
 Matt

<hr size ="2" width="100%" />La paresse est la mère du génie...
Messages postés
1715
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
2 décembre 2019
3
Je dirais même plus...

function GetHandle(const p : TPoint): string;
var
  Handle   : Hwnd;
  ClassName: PChar;
begin
  Handle := WindowFromPoint(P);
  getmem(ClassName, 40);
  windows.GetClassName(Handle, ClassName, 40);
  Result := IntToStr(Handle);
  Freemem(ClassName);
end;



procedure TForm1.Timer1Timer(Sender: TObject);
var P: TPoint;
begin
  GetCursorPos(P);
  Label1.caption : = GetHandle(P);
end;


Ca fait deux fois que tu le postes ce code, f0xi... tu as un peu de mal à le placer, on dirait ?  lol
Messages postés
162
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
14 avril 2009

Merci bcp a tous !
Messages postés
67
Date d'inscription
dimanche 16 octobre 2005
Statut
Membre
Dernière intervention
13 novembre 2009
1
oui ou encore en une ligne :

Label1.Caption:=IntToStr(WindowFromPoint(Mouse.CursorPos));

Question supplémentaire :
Et si le contrôle sous la souris est grisé (enable=false) ?

Jean-Michel