Je sous sous Delphi 6 Personal Edition, et Windows 10 toutes mises à jour installées.
Je me suis heurté au problème suivant:
comment savoir si une de mes applications Delphi, dont je connais le handle de la form principale (comment, ce n'est pas le sujet ici) est actuellement en état normal, minimisé ou maximisé ?
Pour l'état maximisé, l'API IsZoomed fonctionne bien. par contre, l'API IsIconic ne marche pas avec ma version de Delphi, car il retourne toujours FALSE, même si l'application a été minimisée.
J'ai fini par trouver une astuce qui semble marcher dans tous les cas. J'aimerais bien que vous puissiez me dire si ma réflexion est bonne ou si j'ai manqué quelque chose.
Voici la fonction quue j'ai créée pour tester cela (fonction intégrée dans une DLL):
La fonction retourne:
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 function GetCurrentWindowState(hnd: HWND): integer; stdcall; export; var rct: TRect; xhnd: HWND; begin result := -1; try GetWindowRect(hnd,rct); xhnd := WindowFromPoint(rct.TopLeft); result := 0; if IsIconic(hnd) then result := 1; // <==== retourne toujours FALSE ! if xhnd<>hnd then result := 1; // <==== ici, mon test semble fonctionner... if IsZoomed(hnd) then result := 2; except end; end; exports GetCurrentWindowState;
-1 si le handle est invalide
0 si la fenêtre et en état normal
1 si la fenêtre est minimisée
2 si la fenêtre est maximisée
MEerci d'avance pour votre jugement !
Partager