こんにちは、
jslでスクリプトを作ることに関して
ユーザーの画面解像度とスケール (つまり、システム ディスプレイ設定の Windows スケール) を取得する方法はありますか?
問題は、スケールを 100% ではなく 150% に設定すると、グラフや画像も変わってしまうことです。読みにくくなったり、スクロールしないとグラフが見れなくなるため、グラフを完全に見逃してしまうことになります。
最初の質問の答えがわかれば、すべてのサイズをハードコードできるでしょう。自動サイズ設定機能を使ってみましたが、手動でサイズを設定するよりも面倒なようです。
Run Program() を使用してコマンド ラインまたは PowerShell を実行すると、その方法で情報を取得できる可能性が高くなります。
ありがとう!
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.
スクリプトを実行する個々のユーザーごとに、すべてのグラフ/ウィンドウ/ボックスなどのサイズを動的に変更するより簡単な方法があります。
1. 新しいウィンドウを作成して最大化する
2. ウィンドウの幅を取得すると、ピクセルが返されます。(実体幅が 1920 で、スケーリングが 150% に設定されている場合、理論上は 1280 ピクセルが返されるはずです)
3. すべてのボックスのサイズを変更する関数を用意します。(幅が 1600 未満の場合は 2/3 に拡大します)
4. グラフやボックスなどのサイズを設定するときはいつでもset_width関数を呼び出します。
これが将来誰かの役に立つことを願います
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);
);