Bonjour,
En ce qui concerne la création de scripts avec jsl
Existe-t-il un moyen d'obtenir la résolution et l'échelle de l'écran de l'utilisateur (c'est-à-dire l'échelle de Windows dans les paramètres d'affichage du système) ?
Le problème est que lorsque certains ont leur échelle réglée à 150 % contre 100 %, les graphiques et les images changeront également. Ce qui rend la lecture difficile, sinon ils manqueront complètement un graphique car ils devront faire défiler pour le voir.
Si je connaissais la réponse à la première question, je serais capable de coder en dur la taille de tout. J'ai essayé d'utiliser les fonctionnalités de dimensionnement automatique et elles semblent être plus pénibles que de simplement définir la taille manuellement.
Vous pouvez utiliser Run Program() pour exécuter une ligne de commande ou PowerShell et obtenir très probablement les informations de cette façon.
Merci!
command = "Get-ItemProperty -path \!\\!"HKCU:\Control Panel\Desktop\PerMonitorSettings\*\!\\!" | fl DpiValue";
RP = Run Program(
Executable( "powershell.exe"),
Options( {"/c ", command} ),
ReadFunction( "text" )
);
show(RP);This returns DPI value which if display scaling is at 150% it will equal 0, at 175% it will be 1 and so on.
Il existe un moyen plus simple de redimensionner tous vos graphiques/fenêtres/boîtes, etc... de manière dynamique par utilisateur individuel qui exécute vos scripts
1. Créez une nouvelle fenêtre et maximisez-la
2. Saisissez la largeur de la fenêtre et elle renverra les pixels. (Si la largeur tangible est de 1920 et que la mise à l'échelle est définie sur 150 %, alors en théorie, elle devrait renvoyer 1280 pixels)
3. Ayez une fonction qui dimensionne toutes vos boîtes, etc. (je mettrais à l'échelle 2/3 si leur largeur est < 1600)
4. Chaque fois que vous définissez la taille d'un graphique/boîte/etc., appelez la fonction set_width
J'espère que cela aidera quelqu'un à l'avenir
temp_window = New Window( "Width Check",
H List Box(
Text Box( "A" ),
sb1 = Spacer Box(),
Text Box( "B" ),
sb2 = Spacer Box( size( 20, 10 ), color( "red" ) ),
Text Box( "C" )
)
);<BR />
temp_window << Maximize Window( 1 );
USER_WIDTH = temp_window << Get Width();
temp_window << Close Window;
set_width = Function({w},
{},
new_w = w;
if(USER_WIDTH < 1600,
new_w = w * (2/3);
);
Return(new_w);
);