[R] Affichage GUI sur écrans partagés
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Affichage GUI sur écrans partagés
Bonjour,
Je ne sais pas si le titre est clair, mais voilà ce que je voudrais réaliser ^^.
J'ai un PC avec 2 écrans (en mode étendu). La taille de ces écrans peut-être différente.
Je voudrais afficher sur chaque écran, le même GUI mais avec des valeurs inputs différentes.
Je pense partir sur un fichier *.ini pour gérer les valeurs à afficher
[SCREEN1]
Valeur1=toto
Valeur2=tata
[SCREEN2]
Valeur1=blabla
Valeur2=blublu
, et pour le GUI, écran 1 -> Func _GUIScreen1() et écran 2 -> Func _GUIScreen2().
Déjà avant de commencer, suis-je dans la bonne direction?
Merci par avance.
Je ne sais pas si le titre est clair, mais voilà ce que je voudrais réaliser ^^.
J'ai un PC avec 2 écrans (en mode étendu). La taille de ces écrans peut-être différente.
Je voudrais afficher sur chaque écran, le même GUI mais avec des valeurs inputs différentes.
Je pense partir sur un fichier *.ini pour gérer les valeurs à afficher
[SCREEN1]
Valeur1=toto
Valeur2=tata
[SCREEN2]
Valeur1=blabla
Valeur2=blublu
, et pour le GUI, écran 1 -> Func _GUIScreen1() et écran 2 -> Func _GUIScreen2().
Déjà avant de commencer, suis-je dans la bonne direction?
Merci par avance.
Modifié en dernier par Hugues le mar. 15 sept. 2015 09:51, modifié 1 fois.
- TT22
- Membre émérite

- Messages : 1566
- Enregistré le : lun. 18 avr. 2011 15:21
- Localisation : La Quatrième Dimension
- Status : Hors ligne
Re: [..]Affichage GUI sur écrans partagés
Ça dépend, si tes deux GUIs peuvent fonctionner de manière indépendante le plus simple serait de faire deux scripts
Par contre si elles doivent interagir le mieux serait de les traiter tour à tour en faisant des GUISwitch().
Par contre si elles doivent interagir le mieux serait de les traiter tour à tour en faisant des GUISwitch().
Cordialement,
TT22
TT22
Re: [..]Affichage GUI sur écrans partagés
Les 2 gui seraient indépendantes, mais ayant un design identique ^^.
- TT22
- Membre émérite

- Messages : 1566
- Enregistré le : lun. 18 avr. 2011 15:21
- Localisation : La Quatrième Dimension
- Status : Hors ligne
Re: [..]Affichage GUI sur écrans partagés
Alors je pense que le plus simple serait de faire deux scripts, un par GUI 
Cordialement,
TT22
TT22
Re: [..]Affichage GUI sur écrans partagés
Ok, je vais me diriger vers cette solution.
Par contre, il faut que je fasse un script principal qui:
-Détermine si j'ai 1 ou 2 écran(s), avec _WinAPI_GetSystemMetrics(80)
Si 1 -> GUI1 (script1) sur écran 1
Si 2 -> GUI1 (script1) sur écran 1 & GUI2 (script2) sur écran 2.
Par contre, il faut que je fasse un script principal qui:
-Détermine si j'ai 1 ou 2 écran(s), avec _WinAPI_GetSystemMetrics(80)
Si 1 -> GUI1 (script1) sur écran 1
Si 2 -> GUI1 (script1) sur écran 1 & GUI2 (script2) sur écran 2.
Re: [..] Affichage GUI sur écrans partagés
Bon, un problème se pose déjà...
J'arrive à compter le nombre d'écran, mais je ne trouve pas de fonction pour faire,
Tu affiches mon GUI 1 sur l'écran 1 et/ou mon GUI 2 sur l'écran 2...
J'ai trouvé plein de fonction pour récupérer les tailles et les identifications...
Merci par avance.
J'arrive à compter le nombre d'écran, mais je ne trouve pas de fonction pour faire,
Tu affiches mon GUI 1 sur l'écran 1 et/ou mon GUI 2 sur l'écran 2...
J'ai trouvé plein de fonction pour récupérer les tailles et les identifications...
Merci par avance.
- TT22
- Membre émérite

- Messages : 1566
- Enregistré le : lun. 18 avr. 2011 15:21
- Localisation : La Quatrième Dimension
- Status : Hors ligne
Re: [..] Affichage GUI sur écrans partagés
Désolé mais n'ayant qu'un écran à disposition je ne pourrais pas t'aider sur ce problème 
Cordialement,
TT22
TT22
Re: [..] Affichage GUI sur écrans partagés
Bon j'ai un peu avancé ^^,
Mon problème est comment "forcé" un GUI à s'afficher sur l'ecran 1 ou 2...
Mon problème est comment "forcé" un GUI à s'afficher sur l'ecran 1 ou 2...
► Afficher le texte
Re: [..] Affichage GUI sur écrans partagés
Bin faut simplement déplacer la fenêtre aux coordonnées x et y qui correspondent au coin supérieur gauche du deuxième écran
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Affichage GUI sur écrans partagés
Oui, mais comment fait-on car le coin haut gauche de mon deuxième écran devrait avoir 0 pour coordonnée?
Re: [..] Affichage GUI sur écrans partagés
Dans mon programme j'utilise cette fonction (qui doit-être de toi de mémoire ^^)
Elle me permet d'ajuster mon GUI à la fenêtre. Je pense qu'il faut agir au niveau du WinMove(), mais le problème c'est que ça ne "reformate" par le GUI à l'écran étendu...
Code : Tout sélectionner
[spoiler=]
Func _ScreenAdaptation()
$WorkAera = _GetWorkArea()
Local $aGuiPos = WinGetPos($MainGUI)
If $aGuiPos[0] <> $WorkAera[0] Or $aGuiPos[1] <> $WorkAera[1] Or $aGuiPos[2] <> $WorkAera[4] Or $aGuiPos[3] <> $WorkAera[5] Then WinMove($MainGUI, "", $WorkAera[0], $WorkAera[1], $WorkAera[4], $WorkAera[5])
Return $WorkAera
EndFunc ;==>_ScreenAdaptation
Func _GetWorkArea()
Global $Area[6]
Local $StartRect = DllStructCreate("int[4]")
Local $PStartRect = DllStructGetPtr($StartRect)
DllCall("user32.dll", "int", "SystemParametersInfo", "int", 48, "int", 0, "ptr", $PStartRect, "int", 0)
$Area[0] = DllStructGetData($StartRect, 1, 1)
$Area[1] = DllStructGetData($StartRect, 1, 2)
$Area[2] = DllStructGetData($StartRect, 1, 3)
$Area[3] = DllStructGetData($StartRect, 1, 4)
$Area[4] = $Area[2] - $Area[0]
$Area[5] = $Area[3] - $Area[1]
Return $Area
EndFunc ;==>_GetWorkArea
[/spoiler]Re: [..] Affichage GUI sur écrans partagés
Les coordonnées de l'écran principal sont x=0 et y=0.
Les coordonnées des autres écrans dépendent de la résolution utilisée et de la disposition de ceux-ci.
Si tu as deux écrans en 1280x1024, que l'écran de gauche est l'écran principal et qu'ils sont alignés, les coordonnées de l'écran secondaire seront x=1280:y=0.
Si l'écran principal est celui de droite, tu auras x=-1280.
Regarde avec ça si ça te va :
Les coordonnées des autres écrans dépendent de la résolution utilisée et de la disposition de ceux-ci.
Si tu as deux écrans en 1280x1024, que l'écran de gauche est l'écran principal et qu'ils sont alignés, les coordonnées de l'écran secondaire seront x=1280:y=0.
Si l'écran principal est celui de droite, tu auras x=-1280.
Regarde avec ça si ça te va :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Affichage GUI sur écrans partagés
Ça me retourne 0, 0 comme coordonnées. Et non mes écrans peuvent être de tailles différentes justement... Je peux avoir en écran principal un écran PC classique de n'importe quelle résolution et en secondaire un écran LCD 42"...
Re: [..] Affichage GUI sur écrans partagés
désolé, je suis parti sur la mauvais fonction.
Essaye plutôt _WinAPI_EnumDisplayMonitors (voir l'exemple)
Essaye plutôt _WinAPI_EnumDisplayMonitors (voir l'exemple)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- TommyDDR
- Modérateur

- Messages : 2128
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Affichage GUI sur écrans partagés
Code : Tout sélectionner
Func _MonitorsGetPosAndSize($mode = 0)
Local $monitors = _WinAPI_EnumDisplayMonitors()
Local $ret[$monitors[0][0]][4]
For $i = 0 To $monitors[0][0]-1
Local $monInfo = _WinAPI_GetMonitorInfo($monitors[$i+1][0])
$ret[$i][0] = DllStructGetData($monInfo[$mode], "left")
$ret[$i][1] = DllStructGetData($monInfo[$mode], "top")
$ret[$i][2] = DllStructGetData($monInfo[$mode], "right")-DllStructGetData($monInfo[0], "left")
$ret[$i][3] = DllStructGetData($monInfo[$mode], "bottom")-DllStructGetData($monInfo[0], "top")
Next
Return $ret
EndFunc3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: [..] Affichage GUI sur écrans partagés
Sujet résolu,
Un GRAND MERCI à vous tous!!!
Un GRAND MERCI à vous tous!!!

