[..] Mouvements simultanés de fenêtres VNC

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

[..] Mouvements simultanés de fenêtres VNC

#1

Message par cluster49 »

Bonjour,

Je souhaite créer une GUI qui lorsqu'elle est ouverte puisse se déplacer en emmenant avec elle d'autres fenêtres ouvertes.
Pour cela j'ai trouvé une petite fonction qui fonctionne bien pour le déplacement simultané de ma GUI plus une fenêtre. Mais lorsque je veux rajouter une nouvelle fenêtre (pour déplacer ma GUI plus 2 fenêtres) je suis perdu.

Mon explication est très confuse, aussi je joins le code :
► Afficher le texte
Comme vous le voyez j'ai essayé d'ajouter une deuxième fonction mais ça ne donne rien. Je ne maitrise plus grand chose.

Si quelqu'un a solution je suis preneur.

Merci.
Modifié en dernier par jguinch le mer. 25 févr. 2015 17:22, modifié 2 fois.
Raison : Ajout de la balise Spoiler
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres

#2

Message par ZDS »

Bonjour,

Voici une éventuelle amélioration rapide de ton code que tu pourrais apprécier.
► Afficher le texteGestion de multiples fenêtres
A bientôt !

PS: La structure de code que tu utilises n'est sans doute pas des plus souples, je vais essayer de te poster une alternative demain. Mais pourquoi tu utilises des _WinAPI_SetWindowLong avec autant de contraintes? Autant utiliser des composants type _GUICtrlRichEdit_**** à ce train là; sauf si les fichiers texte n'étaient là que pour l'exemple (que veux-tu utiliser comme fenêtres au final?)
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres

#3

Message par cluster49 »

Bonjour et merci pour ta réponse et ton code qui fonctionne bien.

Je ne suis pas très expérimenté avec AutoIt (mon code l'illustre bien :?). J'ai effectivement mis des fichiers txt pour l'exemple mais en réalité j'utilise des fichiers vnc pour réaliser une interface qui me permet d'obtenir un tableau de contrôle composé de plusieurs retours d'écrans (je peux en avoir jusqu'à 20). L'idéal pour moi aurait été de lancer ces fichiers via une boucle et que chaque retour d'écran se positionne sur ma GUI.

Je suis preneur de toutes les suggestions et alternatives qui me permettent d'arriver à mes fins.

Encore merci pour ton code qui m'ouvre déjà des perspectives.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres

#4

Message par ZDS »

Ok, donc si c'est pour VNC, tu pourras peut être trouver une excellente alternative sur ce post : http://www.autoitscript.fr/forum/viewtopic.php?f=4&t=4693
Il y est question d'intégrer une fenêtre VNC comme si c'était un composant graphique. Plus besoin de te faire c**er avec les déplacements, car la partie dont tu te sers (la fenêtre VNC) aurait les même propriétés qu'un Label, une CheckBox, ou tout autre élément graphique.

PJ: Code prêt à l'emploi, issu à quasi 100% du travail fait par Tatane. Il suffit de lancer mon script 'Register.au3' juste avant de pouvoir utiliser 'UltraVncAx.au3'.
Le problème actuel est que je ne sais pas comment réduire l'échelle de l'affichage de chaque fenêtre. Mais voici quand même ce dont je te parlais :
UltraVncAx.zip
(253.36 Kio) Téléchargé 59 fois
PS: Je te posterai plus tard une version avec plusieurs écrans. D'ici là, je te conseille de éditer le titre de ton premier message en "[..] Mouvements simultanés de fenêtres VNC", ça sera plus parlant et ça aidera à retrouver des gens dans le besoin comme toi :)
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#5

Message par cluster49 »

Merci pour toutes ces infos, c'est une mine bien que compliqué à maitriser pour moi et donc à modifier.

Le problème que rencontre Tatane est en effet celui du mot de passe vnc et le fait de pouvoir afficher le retour d'écran en miniature.
Dans mon cas j'arrive à faire tout ça puisque je lance des fichiers ".vnc" en utilisant le viewer de RealVnc (v5.1.1)

Je suis impatient de voir ta version avec plusieurs écrans. Grâce à ton code je peux en afficher plusieurs sur une ligne. Maintenant je m'arrache les cheveux pour les afficher sur plusieurs lignes :oops: .
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#6

Message par ZDS »

Si tu as un nombre fixe de fenêtres (genre 20), c'est envisageable de les agencer en 5 par 4. Ma seconde version n'étant pour le moment pas prête pour mettre les VNC à l'échelle, je vais me baser sur ton code. Tu as une taille max de prévue pour la fenêtre globale? (genre fullHD 1920x1080, ou prévoir plus petit peut-être?)
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#7

Message par cluster49 »

Pour l'instant je n'ai rien de vraiment défini au niveau de la taille de l'interface mais je pense ne pas dépasser 1200 x 900.

Je génère mes fichiers vnc en utilisant les informations contenu dans un fichier ini (adresse IP notamment).
Dans l'idéal il y a aussi dans ce fichier ini, la position que doivent prendre les vignettes sur la fenêtre, ce qui permet de disposer ces vignettes selon un plan défini.
Grâce à ce fichier ini je connais le nombre de vignettes à afficher.

Ensuite je fait une boucle qui génère et qui lance les fichiers vnc.

J'ai réussi à modifier ton code pour pouvoir afficher plusieurs colonnes mais de la à pouvoir afficher mes vignettes en fonction des positions X et Y liées à mes IP contenues dans le fichier ini c'est une autre histoire.

Mon fichier ini ressemble à ça :

[1]
NOM=NOM_POSTE1
IP=xxx.xxx.xxx.xxx
PX=412
PY=143
[2]
NOM=NOM_POSTE2
IP=xxx.xxx.xxx.xxx
PX=598
PY=143


Grâce à toi j'ai déjà avancé.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#8

Message par ZDS »

Il ne reste plus grand chose à faire (sans doute pas le plus compliqué, lancer les connexions avec les paramètres fournis). Perso je n'ai pas l'environnement qu'il faut pour lancer je ne sais combien de VNC (même un seul, je ne sais pas exactement quelle version de Real tu utilises coté serveur -la 5.1.x client est pas toujours compatible avec d'autres serveurs comme UVNC sous XP-, et je ne veux pas en installer un pour tester en risquant de casser mon archi actuelle ^^), mais je pense que le plus dur dans l'interface est fait.

A bientôt !
► Afficher le texteFichiers à mettre dans le même répertoire
PS: J'ai préféré remplacer tes valeurs en pixels pour X et Y par des positions dans une grille qui commence en (1,1). C'est plus simple à utiliser, plutot que de refaire les calculs à chaque nouvel ajout, le script en déduit les valeurs en pixels lui même. Et je pense, pour tes propres ressources, qu'il vaut mieux désactiver les VNCs avant et les réactiver après, lors d'un déplacement de ta GUI principale; le titre de la fenêtre permet de faire cela. Si tu ne le souhaites pas, j'essayerai de trouver une alternative propre.

PS2: Si tu peux, envoye moi ta fonction qui génère les appels à VNC, que je puisse tester ici avec une ou deux VM XP peut-être ^^ Et utilise plutot cette version de la fonction WM_SHELLHOOK, qui évitera un lag entre chaque changement de fenêtres VNC :

Code : Tout sélectionner

; Fonction hook pour la gestion des focus
Func WM_SHELLHOOK($hWnd, $iMsg, $wParam, $lParam)
    Switch $hWnd
        Case $GUI
            Switch $wParam
                Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED
                    Local $focus = focus()
                    If Not IsDeclared("_focus") Then Global $_focus = Not $focus
                    If $_focus <> 0 And $focus = 0 Then ; Perte de focus
                        For $i = 1 To $DATA[0][0]
                            WinSetState($DATA[$i][1], "", @SW_HIDE)
                        Next
                    ElseIf $_focus = 0 And $focus <> 0 Then ; Récupération de focus
                        For $i = 1 To $DATA[0][0]
                            WinSetState($DATA[$i][1], "", @SW_SHOW)
                        Next
                    EndIf
                    $_focus = $focus
            EndSwitch
    EndSwitch
EndFunc   ;==>WM_SHELLHOOK
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#9

Message par cluster49 »

Ouaouh, tu as sacrément bossé, c'est extra.

Je n'arrive pour l'instant pas à dégager beaucoup de temps pour adapter tout ça. D'autant qu'avec mon niveau j'en ai besoin pour tout disséquer et essayer de comprendre.
Pour l'instant j'ai tenté de remplacé ta "fenêtre bidon" par les fenêtres VNC mais sans y arriver :( .

J'ai vu que tu avais renseigné le mot de passe vnc dans le fichier ini. Dans mon cas il est directement dans le fichier vnc ( "Password=xxxxxxxxxx"). Voici d'ailleurs comment je lance mes fenêtres vnc (j'ai réutilisé les données de ton tableau):
► Afficher le texte
Le paramètre "Scaling=x106" permet d'obtenir des fenêtres VNC de petites tailles, parfaites pour créer les vignettes de retour d'écran.

Encore merci pour ton aide et le temps que tu as passé.
Modifié en dernier par jguinch le mer. 25 févr. 2015 17:20, modifié 1 fois.
Raison : Ajout de la balise Spoiler
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Mouvements simultanés de fenêtres VNC

#10

Message par jguinch »

@cluster49 : pour un lecture plus facile, merci d'utiliser la balise Spoiler autour du code (là je l'ai fait pour toi) :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre