Private/PrivateFunctions.ps1
function Get-PShotDpiScaling { [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 } function Get-PShotPrimaryScreen { [CmdletBinding()] Param () Add-Type -Assembly System.Windows.Forms Return [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize } function Get-PShotVirtualScreen { [CmdletBinding()] Param () Add-Type -Assembly System.Windows.Forms Return [System.Windows.Forms.SystemInformation]::VirtualScreen } function New-PShotBitmap { [CmdletBinding()] Param () Return New-Object System.Drawing.Bitmap $PShotScreenWidth, $PShotScreenHeight } |