Hola,
Con respecto a hacer scripts con jsl
¿Hay alguna manera de obtener la resolución y escala de la pantalla del usuario (es decir, la escala de Windows en la configuración de visualización del sistema)?
El problema es que cuando algunos tienen su escala configurada en 150% frente a 100%, los gráficos y las imágenes también cambiarán. Haciendo que sea difícil de leer o se perderán por completo un gráfico porque necesitan desplazarse para verlo.
Si supiera la respuesta a la primera pregunta, podría codificar el tamaño de todo. Intenté usar funciones de tamaño automático y parecen ser más complicadas que simplemente configurar el tamaño manualmente.
Puede usar Run Program() para ejecutar la línea de comando o powershell y muy probablemente obtener la información de esa manera.
¡Gracias!
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.
Hay una forma más sencilla de cambiar el tamaño de todos sus gráficos/ventanas/cuadros, etc... de forma dinámica por cada usuario individual que ejecute sus scripts.
1. Crea una nueva ventana y maximízala.
2. Tome el ancho de la ventana y devolverá los píxeles. (Si el ancho tangible es 1920 y la escala está configurada en 150 %, en teoría debería devolver 1280 píxeles)
3. Tenga una función que ajuste el tamaño de todos sus cuadros, etc. (Yo escalaría 2/3 si su ancho es < 1600)
4. Cada vez que configure el tamaño de cualquier gráfico/cuadro/etc., llame a la función set_width
Espero que esto ayude a alguien en el futuro.
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);
);