Deklaration: Declare Function ChangeDisplaySettings Lib "user32.dll" _ Alias "ChangeDisplaySettingsA" ( _ lpDevMode As Any, _ ByVal dwFlags As Long) As Long Beschreibung: Parameter:
dwFlags Konstanten: Const CDS_UPDATEREGISTRY = &H1 ' Die Einstellungen werden in der Registry gespeichert Const CDS_TEST = &H2 ' Testet die Auflösung ohne die Auflösung zu ändern, die Rückgabe ist eine der Rückgabe-Konstanten Const CDS_FULLSCREEN = &H4 ' Der Grafikmodus soll im Vollbild angezeigt werden, diese Einstellung kann nicht gespeichert werden Const CDS_GLOBAL = &H8 ' Speichert die Einstellungen für alle Benutzer (in Verbindung mit CDS_UPDATEREGISTRY) Const CDS_SET_PRIMARY = &H10 ' Die angegebene Grafikkarte soll die Standardgrafikkarte werden Const CDS_RESET = &H40000000 ' Ändert die Auflösung auch wenn sie die selbe ist, die momentan angezeigt wird Const CDS_NORESET = &H10000000 ' Speichert die Einstellungen in der Registry, die Änderungen werden erst ' nach dem Neustart wirksam (in Verbindung mit CDS_UPDATEREGISTRY) Rückgabewert: Rückgabekonstanten: Const DISP_CHANGE_SUCCESSFUL = 0 ' Das Ändern oder Testen der Auflösung war erfolgreich Const DISP_CHANGE_RESTART = 1 ' Das Ändern der Auflösung erfordert einen Neustart Const DISP_CHANGE_FAILED = -1 Const DISP_CHANGE_BADMODE = -2 ' Die angegebene Auflösung wird nicht unterstützt Const DISP_CHANGE_NOTUPDATED = -3 ' (Win NT/2000) Die Einstellungen wurden nicht gespeichert Const DISP_CHANGE_BADFLAGS = -4 ' Es wurden falsche Flags angegeben Const DISP_CHANGE_BADPARAM = -5 ' Es wurden falsche Parameter angegeben Beispiel: Private Declare Function EnumDisplaySettings Lib "user32.dll" _ Alias "EnumDisplaySettingsA" ( _ ByVal lpszDeviceName As String, _ ByVal iModeNum As Long, _ lpDevMode As DEVMODE) As Long Private Declare Function EnumDisplayDevices Lib "user32" _ Alias "EnumDisplayDevicesA" ( _ DeviceName As Any, _ ByVal iDevNum As Long, _ lpDisplayDevice As DISPLAY_DEVICE, _ ByVal dwFlags As Long) As Long Private Declare Function ChangeDisplaySettings Lib "user32.dll" _ Alias "ChangeDisplaySettingsA" ( _ lpDevMode As Any, _ ByVal dwFlags As Long) As Long Private Type DEVMODE dmDeviceName As String * 32 dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * 32 dmUnusedPadding As Integer dmBitsPerPixel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long dmICMMethod As Long dmICMIntent As Long dmMediaType As Long dmDitherType As Long dmReserved1 As Long dmReserved2 As Long dmPanningWidth As Long ' (Win 2000) dmPanningHeight As Long ' (Win 2000) End Type Private Type DISPLAY_DEVICE cb As Long DeviceName As String * 32 DeviceString As String * 128 StateFlags As Long DeviceID As String * 128 DeviceKey As String * 128 End Type ' die benötigten DEVMODE dmFields-Konstanten Private Const DM_BITSPERPEL = &H40000 ' Die Struktur soll mit der Farbtiefe gefüllt werden Private Const DM_PELSWIDTH = &H80000 ' die Struktur soll mit der ' Bildschrimbreite in Pixeln gefüllt werden Private Const DM_PELSHEIGHT = &H100000 ' die Struktur soll mit der ' Bildschrimhöhe in Pixeln gefüllt werden Private Const DM_DISPLAYFREQUENCY = &H400000 ' die Struktur soll mit ' Wiederholrate in Herz gefüllt werden Private Const DM_DISPLAYFLAGS = &H200000 ' Die Struktur soll mit den ' Eigenschaften der Grafikkarte gefüllt werden ' DEVMODE DisplayFlags-Konstanten Private Const DM_GRAYSCALE = 1 ' Gerät unterstützt keine Farben, Grautöne ' werden unterstützt Private Const DM_INTERLACED = 2 ' Gerät unterstützt Farben ' DISPLAY_DEVICE StateFlags-Konstanten Private Const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = &H1 ' Das gerät ist Teil des Desktops Private Const DISPLAY_DEVICE_MIRRORING_DRIVER = &H8 ' Dieses Gerät ist ein ' unsichtbarer Pseudo Monitor Private Const DISPLAY_DEVICE_MODESPRUNED = &H8000000 ' Dieses Gerät hat mehr ' Grafikmodes als das Ausgabegerät unterstützt Private Const DISPLAY_DEVICE_PRIMARY_DEVICE = &H4 ' Das Gerät ist die Standardgrafikkarte Private Const DISPLAY_DEVICE_VGA_COMPATIBLE = &H10 ' Das Gerät ist VGA-kompatibel ' EnumDisplaySettings iModeNum-Konstanten Private Const ENUM_CURRENT_SETTINGS = -1 ' Die Funktion soll die Struktur ' mit den aktuellen Einstellungen füllen Private Const ENUM_REGISTRY_SETTINGS = -2 ' Die Funktion soll die Struktur ' mit den Registry Einstellungen füllen ' ChangeDisplaySettings dwFlags-Konstanten Private Const CDS_UPDATEREGISTRY = &H1 ' Die Einstellungen werden in der ' Registry gespeichert Private Const CDS_TEST = &H2 ' Testet die Auflösung ohne die Auflösung zu ' ändern, die Rückgabe ist eine der Rückgabe-Konstanten Private Const CDS_FULLSCREEN = &H4 ' Der Grafikmodus soll im Vollbild ' angezeigt werden, diese Einstellung kann nicht gespeichert werden Private Const CDS_GLOBAL = &H8 ' Speichert die Einstellungen für alle ' Benutzer (in Verbindung mit CDS_UPDATEREGISTRY) Private Const CDS_SET_PRIMARY = &H10 ' Die angegebene Grafikkarte soll die ' Standardgrafikkarte werden Private Const CDS_RESET = &H40000000 ' Ändert die Auflösung, auch wenn sie die ' selbe ist, die momentan angezeigt wird Private Const CDS_NORESET = &H10000000 ' Speichert die Einstellungen in der ' Registry, die Änderungen werden erst nach dem Neustart wirksam (in ' Verbindung mit CDS_UPDATEREGISTRY) ' ChangeDisplaySettings Rückgabe-Konstanten Private Const DISP_CHANGE_SUCCESSFUL = 0 ' Das Ändern oder Testen der ' Auflösung war erfolgreich Private Const DISP_CHANGE_RESTART = 1 ' Das Ändern der Auflösung erfordert ' einen Neustart Private Const DISP_CHANGE_FAILED = -1 ' ' Das Ändern oder Testen der ' Auflösung ist gescheitert Private Const DISP_CHANGE_BADMODE = -2 ' Die angegebene Auflösung wird nicht unterstützt Private Const DISP_CHANGE_NOTUPDATED = -3 ' (Win NT/2000) Die Einstellungen ' wurden nicht gespeichert Private Const DISP_CHANGE_BADFLAGS = -4 ' Es wurden falsche Flags angegeben Private Const DISP_CHANGE_BADPARAM = -5 ' Es wurden falsche Parameter angegeben ' Alle möglichen Auflösungen für die Standardgrafikkarte ermitteln ' und Bildschirmauflösung in 800x600x16 ändern (Windows 9x, ME, NT, 2000) Private Sub Command1_Click() Dim Retval As Long, Dev As DEVMODE, i As Long Dim TmpH As Long, TmpW As Long ' DEVMODE-Struktur vorinitialisieren Dev.dmSize = Len(Dev) Dev.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT Or _ DM_DISPLAYFREQUENCY Or DM_DISPLAYFLAGS ' Alle möglichen Auflösungen für die Standardgrafikkarte ermitteln Do While EnumDisplaySettings(vbNullString, i, Dev) << 0 Debug.Print "Bildschrimauflösung (" & CStr(i) & "): " & _ Dev.dmPelsWidth & "x" & Dev.dmPelsHeight & "x" & _ Dev.dmBitsPerPixel & " Freq: " & Dev.dmDisplayFrequency DoEvents i = i + 1 Loop ' Aktuelle Bildschirmauflösung zwischenspeichern TmpW = Screen.Width / Screen.TwipsPerPixelX TmpH = Screen.Height / Screen.TwipsPerPixelY ' Auflösung der DEVMODE-Struktur ändern. ACHTUNG! Die Struktur ist _ ' schon gefüllt, wir ändern nur die Auflösung With Dev .dmPelsWidth = 800 .dmPelsHeight = 600 End With ' Bildschirmauflösung testen Retval = ChangeDisplaySettings(Dev, CDS_TEST) If Retval <= 0 Then Debug.Print "Testen der Auflösung 800x600x16 war erfolgreich." ' Bildschirmauflösung ändern Retval = ChangeDisplaySettings(Dev, CDS_UPDATEREGISTRY) ' Ergebnis auswerten Select Case Retval Case DISP_CHANGE_SUCCESSFUL ' Ändern der Bildschirmauflösung war erfolgreich ' wiederherstellen der vorherigen Auflösung MsgBox "Klicken sie auf OK um die Orginal Auflösung wiederherzustellen." With Dev .dmPelsWidth = TmpW .dmPelsHeight = TmpH End With Retval = ChangeDisplaySettings(Dev, CDS_UPDATEREGISTRY) Case DISP_CHANGE_RESTART MsgBox "Damit die änderungen wirksam werden muß der PC neu _ gestartet werden." Case Else MsgBox "Die Bildschrimauflösung konnte nicht geändert werden." End Select Else Debug.Print "Die Bildschirmauflöung kann nicht geändert werden" End If End Sub ' Alle möglichen Auflösungen aller Grafikkarten ermitteln (Windows 98, ME, NT, 2000) Private Sub Command2_Click() Dim Retval As Long, Dev As DEVMODE, i As Long, j As Long, Disp As DISPLAY_DEVICE Dim TmpDevName As String ' Dient dazu, den DeviceNamen ohne ' VBNullChar-Zeichen zwischenzuspeichern Dim TmpDevString As String ' Dient dazu, den DeviceString ohne ' VBNullChar-Zeichen zwischenzuspeichern ' Falls Windows 95 läuft On Error GoTo ErrWin95 ' DEVMODE-Struktur vorinitialisieren Dev.dmSize = Len(Dev) Dev.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT Or _ DM_DISPLAYFREQUENCY Or DM_DISPLAYFLAGS ' DISPLAY_DEVICE-Struktur vorinitialisieren Disp.cb = Len(Disp) ' Alle Grafikkarten ermitteln Do While EnumDisplayDevices(ByVal 0&, i, Disp, 0&) << 0 ' VBNullChar-Zeichen abtrennen TmpDevName = Left$(Disp.DeviceName, InStr(1, Disp.DeviceName, _ vbNullChar) - 1) TmpDevString = Left$(Disp.DeviceString, InStr(1, _ Disp.DeviceString, vbNullChar) - 1) ' Informationen zu der gefundenen Grafikkarte ausgeben If CBool(DISPLAY_DEVICE_PRIMARY_DEVICE And Disp.StateFlags) Then Debug.Print "Grafikkarte (Standard): " & TmpDevString ElseIf CBool(DISPLAY_DEVICE_ATTACHED_TO_DESKTOP And _ Disp.StateFlags) Then Debug.Print "Grafikkarte (Desktop): " & TmpDevString Else Debug.Print "Grafikkarte: " & TmpDevString End If i = i + 1 ' Für jede gefundene Grafikkarte die Bildschirmauflösungen ermitteln Do While EnumDisplaySettings(TmpDevName, j, Dev) << 0 Debug.Print "Bildschrimauflösung (" & CStr(j) & "): " & _ Dev.dmPelsWidth & "x" & Dev.dmPelsHeight & "x" & _ Dev.dmBitsPerPixel & " Freq: " & Dev.dmDisplayFrequency DoEvents j = j + 1 Loop Debug.Print vbCrLf & "--------------------------------------" Loop Exit Sub If Err.Number = 453 Then MsgBox "Dieses Beispiel läuft nur ab Windows 98" End If End Sub Diese Seite wurde bereits 11.492 mal aufgerufen. |
Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Buchempfehlung Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||
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. |