Bonjour,
Comment accéder à un tform de son application juste avec le handle....
Merciii
Bonjour,
Comment accéder à un tform de son application juste avec le handle....
Merciii
remixtech,
Est-ce que cela repond à ta question ?
http://<br /> http://delphi.develop...santsapi<br />
Non non je voudrais avoir accé à cette form et les composants dessus ...
Merci quand même ...
Je ne comprend pas trop pourquoi tu désires faire cela. Il existe d'autres méthodes pour accéder à un TForm ?Envoyé par remixtech
Excuse ma question qui doit te paraître stupide mais Pourquoi ? et dans quel contexte est-ce que cela peut-être utile ?
Salut,
Je m'explique j'ai un Hook sur la principale
Je crée les secondaires (il peut y'en avoir plusieurs)
Mais le hook doit réagir différement selon les secondaires...
En faite je ne sais même pas comment avoir le handle de la secondaire
j'ai juste le Tpoint de la souris ....
Je sais c'est chaud ....
Si vous avez pas compris n'hésitez pas à me faire répéter merci ...
Voila le code de mon hook
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 function MouseProc(nCode: integer; wParam, lParam: longint): longint; stdcall; function GetClassNameEnh(Handle: Hwnd): string; var ClassName: PChar; Buffer: integer; begin Buffer := 40; getmem(ClassName, Buffer); windows.GetClassName(Handle, ClassName, Buffer); Result := ClassName; Freemem(ClassName); end; var P: TPoint; cursorPos: TPoint; control: TControl; nom: string; begin if (nCode < 0) then Result := CallNextHookEx(HookID, nCode, wParam, lParam) else if ((wParam = WM_RBUTTONDOWN) or (wParam = WM_RBUTTONUP) or (wParam = WM_LBUTTONDOWN)) then begin GetCursorPos(P); if (nom = 'weber') and (Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0) and ((wParam = WM_RBUTTONDOWN) or (wParam = WM_RBUTTONUP)) then begin JE CHERCHE à savoir sur quelle tform est weber ( twebbrowser ) Et pouvoir faire tform.menupopup.popup(....); Result := HC_SKIP; end else Result := CallNextHookEx(HookID, nCode, wParam, lParam); if (Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0) and ((wParam = WM_RBUTTONDOWN) or (wParam = WM_RBUTTONUP)) then begin Result := HC_SKIP; end else if GetClassNameEnh(WindowFromPoint(P)) = 'TCoolBar' then begin Result := HC_SKIP; end else Result := CallNextHookEx(HookID, nCode, wParam, lParam); end else Result := CallNextHookEx(HookID, nCode, wParam, lParam); end;
Si tu as le handle de ta fenêtre, tu dois pouvoir parcourir toutes les fenêtres de l'application et comparer les handles
Oui c'est vraie, mais en faite j'ai pas le handle
J'ai juste un tpoint ...
Ca me désespere ...
Merci d'avance
Alors pourquoi dire que tu as le handle ?Envoyé par remixtech
En faite je l'avais au début, sur mon ancien hook, enfin je pensais l'avoir.
Mais le problème c'est que j'avais trop de hook. un par Tform dynamique créé et c'était un gros bordel...
Donc j'ai voulu centralisé sur un hook mais je n'arrive pas à trouver le handle du composant qui se trouve en dessous du pointeur enfin plutot la tform....
je suis désolé ...
En utilisant WindowFRomPoint(), tu peux récuperer le handle de la fenêtre ainsi que les composants graphiques qui la compose.
Plus d'infos.
PS: Je n'ai pas testé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var point: TPoint; hfenetre: HWND; ClassName : Array[0..255] of Char; begin getCursorPos(point); hfenetre := WindowFRomPoint(point); GetClassName(hfenetre,classname,SizeOf(ClassName)); showMessage('Handle de la fenêtre : '+intToStr(hfenetre)+#13+#10+'ClassName : '+Classname'); ... end;
Merci....
Beaucoup ca fonctionne
Merci encore c'est génial !!!
Hargh ca marche pas si bien que ca ...
Les handles sont différents ...
Je fais un showmessage(inttostr(handle));
A la création d'une fiche
et la fonction que tu m'as donné me donne un autre handle...
Je regarde ce que ca peut être...
Merci quand même.
c'est normal que le handle diffère si ta fiche est recréé, à chaque création un handle est attribué mais pas forcement le même, ta fiche aura le même pendant toute la durée de sa "vie" mais dès qu'elle est détruite et recréé elle en reprend un autre, pareil pour tous les composants qui la compose.
Non non
Je veux dire que le handle de la fiche et du webbrowser est différent du handle donné , le classname me donne _InternExplorerServer
Il faut que je vois comment je peux récupérer ca...
Si vous avez une idée
merci
Une petite idée :
Le parent du twebbrowser c'est Tform ? non
Y'a pas moyen de trouver le parent avec les api ?
Autre solution :
Le hook ne peut pas dire d'ou ca vient ?
Merciii
C'est bon
C'est juste que c'est le parent du parent du parent
c'est un controle compliqué
new := GetParent(hfenetre);
new := GetParent(new);
new := GetParent(new);
showmessage(inttostr(new));
Merci
En utilisant GetParent()Envoyé par remixtech
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 hParent := getParent(hFenetre);
Désolé on a du se répondre en même temps en tout cas merci beaucoup !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager