cs_lo4
Messages postés33Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention 7 mai 2007
-
11 juin 2005 à 19:31
cs_lo4
Messages postés33Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention 7 mai 2007
-
12 juin 2005 à 11:18
Bonjour,
J'ai fait un petit programme pour remplacer le gestionaire de tâches de xp mais j'ai un problème avec l'api GetWindowRect.
Voici le code que j'ai mit :
<StructLayout(LayoutKind.Sequential)> Public Structure RECT
Public Top As Int32
Public Left_renommé As Int32
Public Bottom As Int32
Public Right_renommé As Int32
End Structure
<HR>
Public
Declare
Function GetWindowRect
Lib
"user32"
Alias
"GetWindowRect" (
ByVal hwnd
As Int32,
ByVal lpRect
As RECT)
As Int32
<HR>
Dim taille As New RECT
GetWindowRect(handle, taille)
Dim PosX As Long = taille.Left_renommé
Dim PosY As Long = taille.Top
Dim DimL As Long = taille.Right_renommé - taille.Left_renommé
Dim DimH As Long = taille.Bottom - taille.Top
txtX.Text = PosX
txtY.Text = PosY
txtH.Text = DimH
txtL.Text = DimL
Mon problème est que les valeurs PosX, PosY, DimH, DimL sont parfois négatives (quand la fenêtre est agrandie ou quand elle est réduite). J'aimerai avoir les vraies valeurs que la fenêtre soit agrandie ou réduite. Existe t-il une solution
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 11 juin 2005 à 20:53
salut,
et dans le .net, tu as essayé la serie des Me.desktoplocation et desktopbound ?.... (il doit y en avoir plusieurs dont un qui tient compte de la barre de tache).
Bonne prog, [mailto:liquide_vaisselle_76@hotmail.fr liquide_vaisselle_76@hotmail.fr]
liquide (Membre "Liquide-Fundation" -- tout ce qui peut etre bu est interdit -- les alcolo sont mals , moi le 1er&n
cs_lo4
Messages postés33Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention 7 mai 2007 11 juin 2005 à 22:44
Salut
Je me suis mal expliqué : je voulais faire ca pour n'importe quelle fenêtre ouverte. Je refais un gestionnaire de tâches et je voulais obtenir les positions de n'importe quelle fenêtre ouverte.
Les Me.desktoplocation et Me.desktopBounds ne permettent de le faire que pour la fenêtre active de mon programme et non pas pour n'importe quelle fenêtre ouverte.
Merci quand même, ca m'aura appris quelque chose de plus aujourd'hui .
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 juin 2005 à 23:56
Tu es bien certain du "ByVal" pour le param RECT de GetWindowRect ???
Me semble bizzare vu que la fonction attend l'adresse de la structure pour la remplir.
cs_lo4
Messages postés33Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention 7 mai 2007 12 juin 2005 à 00:06
Effectivement, ce n'est pas Byval. Avec Byval, j'avais 0 pour chaque valeur mais là, ce n'est pas étonnant. En fait, je me suis rendu compte de cette erreur avant d'envoyer le message et j'ai oublié de la corriger.
Mais mon problème est que les valeurs sont parfois négatives (lorsque la fenêtre est réduite ou agrandit).
Est-il possible d'avoir les renseignements sur la taille et la position bien que la fenêtre (choisit dans la liste des fenêtres ouvertes dans mon programme) soit réduite ou agrandit ?
J'avais essayé avec l'api GetWindowPlacement mais je n'avais pas tout les renseignements (il me manquait la position suivant l'axe X qui restait fixée à -1 et la hauteur de la fenêtre qui restait fixée elle à 117 ou quelque chose comme ca)
lo4
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lo4
Messages postés33Date d'inscriptionvendredi 1 février 2002StatutMembreDernière intervention 7 mai 2007 12 juin 2005 à 10:11
Bonjour,
L'ordre des données n'y a rien changé. J'ai toujours des valeurs négatives sur la position pour les fenêtre réduites ou agandit. Pour les fenêtres agrandit, je peux comprendre les valeurs négatives comme -4, c'est la bordure de la fenêtre qui n'apparait pas quand la fenêtre est agrandit. Mais les valeurs de -32000 pour les fenêtres réduites, ca m'embête un peu surtout qu'avec l'api Getwindowplacement, hormis les valeurs fausses qui étaient fixes (la valeur sur l'axe X qui restait fixée à -1 et la hauteur à 117), les autres valeurs, je les avait parfaitement quelque soit l'état de la fenêtre.
Ce que je vais faire, c'est que je vais tester mon programme sur un autre pc voir si ca bug aussi ou si je vais être obligé de reformater encore une fois .
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 12 juin 2005 à 10:23
les négatifs c'est normal,
le -4 pour le .Top et le .Left ça correspond à la bordure de la fenêtre, elle est extérieure à l'écran en cas de Maximized.
pour le Minimized tu trouveras jamais d'autres positions que -32000,
c'est la façon pour Windows de dire que la fenêtre est cachée et ne
fait plus partie du bureau.
les tailles Width et Height de la fenêtre se calculent toujours normalement même avec les valeurs négatives.
ce qui donne par exemple pour un écran 1024x768 une taille Maxi de
1032x776 ou 1032x746 ça dépend de la position de la barre des tâches,
et pour le Mini c'est toujours 160x31.
l'ordre des données est bien sûr important, parce que tu as confondu le
Top avec le Left, et le Right avec le Bottom donc tes mesures Width et
Height étaient inversées.