PowerShell – Detect Autoscaling

email me

 

Code.ps1

 

# MrNetTek
# eddiejackson.net
# 7/15/2022
# free for public use
# free to claim as your own
 
#DETECT CURRENT AUTOSCALING
function Get-DisplayPrimaryScaling {
    [CmdletBinding()]
    param ()
   
    #Add-Type -Assembly System.Drawing
      # Get DPI Scaling
      #[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
   
    Add-Type @'
    using System;
    using System.Runtime.InteropServices;
    using System.Drawing;
  
public class DPI {
    [DllImport("gdi32.dll")]
    static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
  
public enum DeviceCap {
    VERTRES = 10,
    DESKTOPVERTRES = 117
}
  
public static float scaling() {
    Graphics g = Graphics.FromHwnd(IntPtr.Zero);
    IntPtr desktop = g.GetHdc();
    int LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
    int PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
  
    return (float)PhysicalScreenHeight / (float)LogicalScreenHeight;
}
}
'@ -ReferencedAssemblies 'System.Drawing.dll' -ErrorAction Stop
    Return [DPI]::scaling() * 100
}
$ScreenScale = Get-DisplayPrimaryScaling
if ($ScreenScale -eq '100') {$ScreenScale='0'}
if ($ScreenScale -eq '125') {$ScreenScale='1'}
if ($ScreenScale -eq '150') {$ScreenScale='2'}
if ($ScreenScale -eq '175') {$ScreenScale='3'}
[System.Windows.MessageBox]::Show($ScreenScale)