Connaître la taille réelle d'une fenêtre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Gavriel
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Connaître la taille réelle d'une fenêtre

#1

Message par Gavriel » ven. 06 sept. 2019 10:02

Comment connaître la taille réelle d'une fenêtre même ce qu'il y a après l'horizontal où le vertical j'ai essayé avec
$aClientSize = WinGetClientSize($hWnd)
mais ça n'a pas marché
ça m'a donné seulement la taille qui est visible à l'écran et pas ce qui se trouve après le défilement de la verticale ou l'horizontal


Merci de votre réponse mais cela ne répond pas à ma question ce que vous m'avez donné donne la position de la fenêtre Par rapport a l ecran moi je cherche à savoir l'intérieur de la fenêtre combien il y a de taille par exemple j'ai un très long texte sur une seul ligne dans un fichier texte donc forcément j'aurais besoin de déplacer la barre de défilement horizontal donc je voudrais savoir quelle est la taille de la fenêtre d'un bout à l'autre du début du texte jusqu'à la fin du texte qui est sur une ligne merci
Modifié en dernier par Gavriel le ven. 06 sept. 2019 15:22, modifié 1 fois.

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2092
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#2

Message par jchd » ven. 06 sept. 2019 10:28

Voir WinGetPos()
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1819
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#3

Message par TommyDDR » ven. 06 sept. 2019 11:02

WinGetPos() sert justement à ça oui, contrairement à WinGetClientSize qui vous donne la partie "exploitable" où vous pouvez afficher des controles, la où votre 0, 0 commence entre autre.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Gavriel
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#4

Message par Gavriel » dim. 08 sept. 2019 12:25

Merci de votre réponse mais cela ne répond pas à ma question ce que vous m'avez donné donne la position de la fenêtre Par rapport a l ecran moi je cherche à savoir l'intérieur de la fenêtre combien il y a de taille par exemple j'ai un très long texte sur une seul ligne dans un fichier texte donc forcément j'aurais besoin de déplacer la barre de défilement horizontal donc je voudrais savoir quelle est la taille de la fenêtre d'un bout à l'autre du début du texte jusqu'à la fin du texte qui est sur une ligne merci

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1819
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#5

Message par TommyDDR » dim. 08 sept. 2019 13:26

Lisez l'aide de WinGetPos(), vous verrez que ce que vous cherchez s'y trouve ;)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Gavriel
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#6

Message par Gavriel » mar. 10 sept. 2019 13:00

Bonjour voici mon code dis-moi s'il te plaît ce qui est faut j'ai essayé même si jagrandi le texte le resulra sera toujours le même grandeur marquer dans le msgbox ne change pas malgré que la barre de défilement s'est agrandi merci




#include <MsgBoxConstants.au3>
#include <WinAPI.au3>

#include <GUIScrollBars.au3>
#include <ScrollBarConstants.au3>
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    ; Run Notepad
   Run("Notepad.exe")
$WinHndl = WinWait("[CLASS:Notepad]")
If @error Then Exit

;Get Edit handle and put some text.
$EditHndl = ControlGetHandle($WinHndl, "", "Edit1")
ControlSetText($WinHndl, "", $EditHndl, "jguguguguhhyfiyfyifiyfyfyofoyfoyfoyfyofoygyfoyfoyfoyfoyfohfohgyfyfugugugugut7t7tfohfohfoyfoyfoyfoyfoyflhfohflhfoyhfhlhgyffoyfoyfoyfoyfoyggiyfhfhfugjgkhihkgihihi")

Sleep(000)

WinWaitActive('[CLASS:Notepad]')
 $aPos = WinGetPos("[ACTIVE]")
   MsgBox($MB_SYSTEMMODAL, "", "X-Pos: " & $aPos[0] & @CRLF & _
            "Y-Pos: " & $aPos[1] & @CRLF & _
            "Width: " & $aPos[2] & @CRLF & _
            "Height: " & $aPos[3])


Sleep(00)
     ; Close the Notepad window using the handle returned by WinWait.
    WinClose($WinHndl)
EndFunc   ;==>Example

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1819
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#7

Message par TommyDDR » mer. 11 sept. 2019 10:11

Ok, je viens de comprendre "ce qui se trouve après la barre de défilement", désolé pour ce mal entendu.
Pour le coup, je ne sait pas si c'est possible.
Si vous pouvez récupérer le texte du control, sa police, essayez de vous pencher du cote de _WinAPI_GetTextExtentPoint32() (regardez l'aide pour vous aider) cela vous donnera la taille du texte en pixel, il faudra ajouter vous même les potentielles bordures ou autre.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Gavriel
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#8

Message par Gavriel » mer. 11 sept. 2019 11:50

Merci de ta réponse mais que faire dans le cas où je n'ai pas un texte mais une image car en vérité ce que je veux faire c'est de pouvoir capturer une image entière même ce qui se trouve après le défilement je pensais que je pouvais connaître la taille de la fenêtre où se trouve l'image
de capturer la première partie et de faire un ‏send scroll vers la droite (que j'arrive à faire) et de capturer la deuxième partie mais seulement la partie qui me manque (car quand je vais aller vers la droite il y aura une partie que j'ai déjà capturer) puis je recole les images ensemble (que je fais déjà avec un autre programme) si tu as une idée merci de ton aide

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1819
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#9

Message par TommyDDR » mer. 11 sept. 2019 18:46

Le problème c'est que la taille de la fenêtre, vous l'avez déjà, ce n'est pas parce qu’il y a une barre de défilement que la fenêtre est plus grande réellement, ce n'est qu'un effet visuel.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2092
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#10

Message par jchd » jeu. 12 sept. 2019 06:27

En fait il ne s'agit pas du tout de la taille de la fenêtre mais de la "taille" de ce qu'on représente dedans et c'est une toute autre histoire.
E là, tout dépend du programme considéré. Par exemple, tel afficheur d'image va réduire une image à la taille client de sa fenêtre, tel autre va mettre en place des barres de défilement pour déplacer la partie visible dans l'image entière.
Tel éditeur de texte va respecter une longueur de ligne donnée et effectuer des retours ligne de continuation, d'autres proposent des barres de défilement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

Gavriel
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 07 déc. 2016 22:29
Status : Hors ligne

Re: Connaître la taille réelle d'une fenêtre

#11

Message par Gavriel » jeu. 12 sept. 2019 12:13

#10 par jchd » jeu. 12 sept. 2019 07:27
En fait il ne s'agit pas du tout de la taille de la fenêtre mais de la "taille" de ce qu'on représente dedans et c'est une toute autre histoire.
E là, tout dépend du programme considéré. Par exemple, tel afficheur d'image va réduire une image à la taille client de sa fenêtre, tel autre va mettre en place des barres de défilement pour déplacer la partie visible dans l'image entière.
Tel éditeur de texte va respecter une longueur de ligne donnée et effectuer des retours ligne de continuation, d'autres proposent des barres de défilement.
Tout à fait il y aurait-il alors une solution
merci

Répondre