画面のスケーリングを調べる [JavaScript]
またHTAですみません。
最近のブラウザは、ピクセル指定しても、dot by dotにはならず、文字の大きさに合わせてスケーリングしてくれているみたい。
でもHTAは古いので、画面のスケーリングに対応できておらず、ピクセル指定と、文字幅指定で差がでてしまいます。
でも、HTAにおけるウインドウサイズの変更はピクセル指定なので、スケーリングの倍率分をかけてあげないといけません。
エクセルのDLL呼び出しでやってみました。
以下を参考にしました。
ディスプレイの拡大率取得 -コントローパネルのディスプレイから、「デスクト- | OKWAVE
https://okwave.jp/qa/q8972028.html
DLLはよくわからず使っているので、間違っていたらごめんなさい。
解像度とかの意味合いや言葉の定義などもあいまいな理解のままで、とりあえず動けばいいという感じですみません。
最近のブラウザは、ピクセル指定しても、dot by dotにはならず、文字の大きさに合わせてスケーリングしてくれているみたい。
でもHTAは古いので、画面のスケーリングに対応できておらず、ピクセル指定と、文字幅指定で差がでてしまいます。
でも、HTAにおけるウインドウサイズの変更はピクセル指定なので、スケーリングの倍率分をかけてあげないといけません。
エクセルのDLL呼び出しでやってみました。
以下を参考にしました。
ディスプレイの拡大率取得 -コントローパネルのディスプレイから、「デスクト- | OKWAVE
https://okwave.jp/qa/q8972028.html
DLLはよくわからず使っているので、間違っていたらごめんなさい。
解像度とかの意味合いや言葉の定義などもあいまいな理解のままで、とりあえず動けばいいという感じですみません。
<thml>
<head>
<title>ディスプレイの拡大率</title>
<script>
function getDPI() { // 参考:https://okwave.jp/qa/q8972028.html
var excel = new ActiveXObject('Excel.Application'); // Excelオブジェクト生成
try {
var hWndDesk = excel.ExecuteExcel4Macro( 'CALL("user32", "GetDesktopWindow", "J")' );
var hDCDesk = excel.ExecuteExcel4Macro( 'CALL("user32", "GetDC", "JJ", ' + hWndDesk + ')' );
var logPix = excel.ExecuteExcel4Macro( 'CALL("gdi32", "GetDeviceCaps", "JJJ",' + hDCDesk + ',88)' );
excel.ExecuteExcel4Macro( 'CALL("usr32", "ReleaseDC", "JJJ",' + hWndDesk + ',' + hDCDesk + ')' );
excel.Quit();
excel = null;
return logPix;
} catch(e) {
excel.Quit();
excel = null;
return -1; // エラーの場合は、-1を返す
}
}
function main() {
var dpi = getDPI();
document.getElementById('DPI').innerHTML = ' 論理解像度は' + dpi + ' DPIです。';
window.resizeTo( 460 * dpi / 96, 320 * dpi / 96 );
}
</script>
</head>
<body>
<h1>getDPI</h1>
<p style="width:400px;background:skyblue;">width=400px</p>
<p style="width:25em; background:skyblue;">width=25em</p>
<p>通常ブラウザか96DPIなら同じ長さ(16px=1.00em)
<p><button onclick="main()">解像度に合わせウインドウサイズを変更<br>96 DPI換算で460x320</button>
<p id="DPI"></p>
</body>
</html>
タグ:HTA
2022-03-13 23:19
nice!(0)
コメント(0)
コメント 0