vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Desktop/Bildschirm/Display   |   VB-Versionen: VB202227.07.25
Eine Extension zum Ermitteln der Zollgröße aller Monitore im System

Diese Lösung berechnet die Zollgrößen aus Millimeter-Größen von Breite und Höhe der Monitore

Autor:   Dietrich HerrmannBewertung:  Views:  259 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Der betreffende Code wurde von mir in Zusammenarbeit mit "VB-Paradise 2.0 - Die große Visual-Basic- und .NET-Community" erstellt:

Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices
 
Module dhmodScreenExtensions
  Private Const HORZSIZE As Integer = 4
  Private Const VERTSIZE As Integer = 6
 
  <DllImport("Gdi32.dll", EntryPoint:="CreateDCW")>
  Private Function CreateDC(<[In], MarshalAs(UnmanagedType.LPWStr)> pwszDriver As String,
                            <[In], MarshalAs(UnmanagedType.LPWStr)> pwszDevice As String,
                            <[In], MarshalAs(UnmanagedType.LPWStr)> pszPort As String,
                            <[In]> pdm As IntPtr) As IntPtr
  End Function
 
  <DllImport("Gdi32.dll", EntryPoint:="DeleteDC")>
  Private Function DeleteDC(<[In]> hDC As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
  End Function
 
  <DllImport("Gdi32.dll", EntryPoint:="GetDeviceCaps")>
  Private Function GetDeviceCaps(<[In]> hDC As IntPtr, <[In]> index As Integer) As Integer
  End Function
 
  <Extension>
  Public Function HorizontalSizeInMillimeter(scr As Screen) As Integer
    Dim Ret As Integer
    Dim hDC As IntPtr = CreateDC(scr.DeviceName, Nothing, Nothing, Nothing)
    If Not Equals(hDC, IntPtr.Zero) Then
      Ret = GetDeviceCaps(hDC, HORZSIZE)
      DeleteDC(hDC)
    End If
    Return Ret
  End Function
 
  <Extension>
  Public Function VerticalSizeInMillimeter(scr As Screen) As Integer
    Dim Ret As Integer
    Dim hDC As IntPtr = CreateDC(scr.DeviceName, Nothing, Nothing, Nothing)
    If Not Equals(hDC, IntPtr.Zero) Then
      Ret = GetDeviceCaps(hDC, VERTSIZE)
      DeleteDC(hDC)
    End If
    Return Ret
  End Function
 
  <Extension>
  Public Function DiagonalSizeInZoll(scr As Screen) As Integer
    Return Math.Sqrt(HorizontalSizeInMillimeter(scr) ^ 2 + VerticalSizeInMillimeter(scr) ^ 2) / 25.4
  End Function
End Module

und wird so angewendet bspw. in einem Form_Load:

' Zollmaße der Monitore
Dim v(Screen.AllScreens.Length) As Short
v = {Screen.AllScreens(0).DiagonalSizeInZoll, Screen.AllScreens(1).DiagonalSizeInZoll}

v enthält in dem Fall die Zollmaße von 2 Monitoren im System



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2025 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.