Handle

Résolu
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009 - 16 juin 2006 à 13:50
jnmchl Messages postés 63 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 13 novembre 2009 - 1 avril 2008 à 21:42
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

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
16 juin 2006 à 18:39
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...
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
16 juin 2006 à 15:19
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);
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
16 juin 2006 à 15:49
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...
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
16 juin 2006 à 17:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
18 juin 2006 à 19:56
Merci bcp a tous !
0
jnmchl Messages postés 63 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 13 novembre 2009 1
1 avril 2008 à 21:42
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
0
Rejoignez-nous