Bonjour,
Est-ce possible de changer la résolution de l'écran de l'utilisateur ?
J'aimerais le forcer à être sur telle résolution lorsqu'il se connecte à une de mes applications web s'il n'a pas la résolution que je souhaite.
Cordialement,
Bonjour,
Est-ce possible de changer la résolution de l'écran de l'utilisateur ?
J'aimerais le forcer à être sur telle résolution lorsqu'il se connecte à une de mes applications web s'il n'a pas la résolution que je souhaite.
Cordialement,
J'espère bien que non
En tout cas, le jour ou un site Web me fait ça, son webaster va m'entendre![]()
Ce sont pour des applications métier en interne dans une entreprise. Donc je pense pas que ça va déranger.
Mais si ce n'est pas réalisable. Je ferais un simple message d'information si la résolution n'est pas celle souhaité avec les options SysXRes et SysYRes pour me renseigner..
En interne évidemment, c'est une autre affaire
Mais je ne crois pas que ce soit possible, désolé.
Après une petite heure de recherche sur différents sites , j'ai trouvé 2 solutions qui permettent de changer la résolution de l'écran sur une application Webdev si vous ne voulez pas de la résolution de l'utilisateur...
EN COMMUN :
Récupérer la résolution de l'écran de l'utilisateur avec les fonction : SysXRes()
et SysYRes() -> en code navigateur
Faire une procédure locale navigateur sur la première page du projet qui vérifie si la résolution actuelle est bonne. Dans le cas contraire faire SOLUTION 1 ou SOLUTION 2:
SOLUTION 1 :
J'ai trouvé une petit .exe (aqr.exe) qui se lance depuis une fenêtre DOS et qui a besoin de deux paramètres (w et h).
Il suffit de créer un fichier .bat
De webdev faire un LanceAppli("Chemin_fichier.bat", ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4@echo off "c:\program files\aqr.exe" -w1024 -h768 cls
SOLUTION 2:
J'ai trouvé sur un site quelqu'un qui l'a fait depuis Windev (Fonctionne aussi sur WebDev, je viens de tester)
Procédure Principale :
Procédure servant à la première procédure :
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 PROCEDURE ModifieConfigurationEcran(eParamLargeur,eParamHauteur,eParamNbCouleur,bDefaut=Vrai,bRedmarrageWindow=Faux) //Modifie l'affiche de l'écran avec en ENTRE: //- <eParamLargeur> pixels de largeur //- <eParamHauteur> pixels de hauteur //- <eParamNbCouleur> bits de couleur //- Si bDefaut=VRAI alors le mode d'affichage est conservé pour l'affichage par défaut //EN SORTIE : //Si le mode d'affichage a pu être modifié la fonction renvoie Vrai, sinon Faux //- bRedmarrageWindow est à Vrai si la modification de résolution nécessite le redémmarrage du poste, sinon elle est à Faux DevMode est une structure dmDeviceName est une chaîne ASCIIZ sur 32 dmSpecVersion est un entier sur 2 octets sans signe dmDriverVersion est un entier sur 2 octets sans signe dmSize est un entier sur 2 octets sans signe dmDriverExtra est un entier sur 2 octets sans signe dmFields est un entier dmPosition est une chaîne ASCIIZ sur 8 dmScale est un entier sur 2 octets dmCopies est un entier sur 2 octets dmDefaultSource est un entier sur 2 octets dmPrintQuality est un entier sur 2 octets dmColor est un entier sur 2 octets dmDuplex est un entier sur 2 octets dmYResolution est un entier sur 2 octets dmTTOption est un entier sur 2 octets dmCollate est un entier sur 2 octets dmFormName est une chaîne ASCIIZ sur 32 dmLogPixels est un entier sur 2 octets sans signe dmBitsPerPel est un entier dmPelsWidth est un entier dmPelsHeight est un entier dmDisplayFlags est un entier dmDisplayFrequency est un entier dmICMMethod est un entier dmICMIntent est un entier dmMediaType est un entier dmDitherType est un entier dmReserved1 est un entier dmReserved2 est un entier dmPanningWidth est un entier dmPanningHeight est un entier FIN DeviceMode est un DevMode iModeNum est un entier = 0 iModeNumSel est un entier = 0 Resultat est un entier sListeModeEcran est une chaîne ePosRésolutionChoisie est un entier sListeModeEcran = ListeConfigurationEcran() //des mode ecran de dispo ? SI sListeModeEcran="" ALORS RENVOYER Faux FIN // On récupère le numéro du mode d'affichage selectionné par le client ePosRésolutionChoisie=Position(sListeModeEcran,eParamLargeur+TAB+eParamHauteur+TAB+eParamNbCouleur) //résolution non retrouvée SI ePosRésolutionChoisie<1 ALORS RENVOYER Faux FIN //Récupération de l'identifiant du mode de résolution iModeNumSel=Val(ExtraitChaîne(ExtraitChaîne(sListeModeEcran[[ePosRésolutionChoisie A]],1,RC),4,TAB)) iModeNum=iModeNumSel Resultat=AppelDLL32("USER32.DLL","EnumDisplaySettingsA",Null,iModeNum,&DeviceMode) // On teste le mode d'affichage SI bDefaut ALORS //Affichage par défaut iModeNum=0x00000001 SINON //Affichage temporaire iModeNum=0 FIN Resultat=AppelDLL32("USER32.DLL","ChangeDisplaySettingsA",&DeviceMode,iModeNum) // Suivant le resultat de la fonction SELON Resultat CAS 0 //Modif Ok est prise en compte directement bRedmarrageWindow=Faux CAS 1 //Modif uniquement après redémarrage bRedmarrageWindow=Vrai AUTRES CAS //Impossible d'utiliser la configuration spécifié. RENVOYER Faux FIN RENVOYER Vrai
Puis dans un code clique bouton par exemple
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 PROCEDURE ListeConfigurationEcran() //Renvoie une chaine de caractères avec la listes des configurations écran possible sur le poste //Format de la chaîne retournée : <Nb pixels largeur>+tab+<Nb pixels hauteur>+tab+<Nb bits de couleur>+<IdMode>+RC+... //<Nb pixels largeur>+tab+<Nb pixels hauteur>+tab+<Nb bits de couleur>+<IdMode>+RC+... DevMode est une structure dmDeviceName est une chaîne ASCIIZ sur 32 dmSpecVersion est un entier sur 2 octets sans signe dmDriverVersion est un entier sur 2 octets sans signe dmSize est un entier sur 2 octets sans signe dmDriverExtra est un entier sur 2 octets sans signe dmFields est un entier dmPosition est une chaîne ASCIIZ sur 8 dmScale est un entier sur 2 octets dmCopies est un entier sur 2 octets dmDefaultSource est un entier sur 2 octets dmPrintQuality est un entier sur 2 octets dmColor est un entier sur 2 octets dmDuplex est un entier sur 2 octets dmYResolution est un entier sur 2 octets dmTTOption est un entier sur 2 octets dmCollate est un entier sur 2 octets dmFormName est une chaîne ASCIIZ sur 32 dmLogPixels est un entier sur 2 octets sans signe dmBitsPerPel est un entier dmPelsWidth est un entier dmPelsHeight est un entier dmDisplayFlags est un entier dmDisplayFrequency est un entier dmICMMethod est un entier dmICMIntent est un entier dmMediaType est un entier dmDitherType est un entier dmReserved1 est un entier dmReserved2 est un entier dmPanningWidth est un entier dmPanningHeight est un entier FIN DeviceMode est un DevMode iModeNum est un entier Resultat est un entier sListeResolutions est une chaîne // Récupère les caractéristiques d'affichage du poste Resultat=AppelDLL32("USER32.DLL","EnumDisplaySettingsA",Null,iModeNum,&DeviceMode) iModeNum=0 // On liste toutes les possibilités TANTQUE Resultat<>0 //Déja dans les résolutions detectées ? SI Position(sListeResolutions,DeviceMode:dmPelsWidth+TAB+DeviceMode:dmPelsHeight+TAB+DeviceMode:dmBitsPerPel)<1 ALORS //ajout au résultat sListeResolutions+=RC+DeviceMode:dmPelsWidth+TAB+DeviceMode:dmPelsHeight+TAB+DeviceMode:dmBitsPerPel+TAB+iModeNum FIN iModeNum++ // Passe au mode suivant // Récupère la possibilité suivante Resultat=AppelDLL32("USER32.DLL","EnumDisplaySettingsA",Null,iModeNum,&DeviceMode) FIN //un résultat ? SI sListeResolutions<>"" ALORS //on supprime le RC en trop au début sListeResolutions=sListeResolutions[[3 A]] FIN RENVOYER sListeResolutions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ModifieConfigurationEcran(800,600,32)
Voilà, je ne sais pas si cela va intéresser beaucoup de personnes mais je pense que c'est toujours utile ^^
Merci d'avoir donné la solution à ton problème, cela aidera toujours quelqu'un... moi par exemple ^^
Partager