vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Display Position des Zweit-Monitors ändern 
Autor: tswimmer
Datum: 13.04.06 13:56

Hallo Gemeinde,

ich arbeite an zwei Standorten - einmal steht das zweite Display links und einmal rechts vom Notebook. Ein schönes Programm benachrichtigt bereits einen Kollegn über E-Mail an welchem Standort ich bin und stellt mir den Standart-Drucker je nach Standort ein. Was nicht klappt ist die Sache mit dem Display. Nach einiger Lektüre und einigen Versuchen wende ich mich jetzt verzweifelt an euch. Mit dem angefügten Code kann ich zwar bei bedarf die Auflösung des zweiten Displays ändern, nicht aber die Position - kann jemand helfen - es handelt sich um ein FSC Notebook Lifebook E8020 mit ATI Graka

___________________________
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
 
'Konstanten für dmfileds
Const DM_POSITION = &H20 'dmPosition
Const DM_BITSPERPEL = &H40000 'dmBitsPerPel
Const DM_PELSWIDTH = &H80000 'dmPelsWidth
Const DM_PELSHEIGHT = &H100000 'dmDisplayFlags
Const DM_DISPLAYFREQUENCY = &H400000 'dmDisplayFrequency
 
'const für ChangeDisplaySettingsEx
Const CDS_UPDATEREGISTRY = &H1 'Die Einstellungen werden in der Registry 
' gespeichert
Const CDS_TEST = &H2 'Testet die Auflösung ohne die Äuflösung zu ändern, die 
' Rückgabe ist eine des 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öung 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)
Const CDS_FORCE As Long = &H80000000 
 
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
 
Private Type PointL
x As Long
y As Long
End Type
 
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
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 * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
dmICMMethod As Long 'NT 4.0
dmICMIntent As Long 'NT 4.0
dmMediaType As Long 'NT 4.0
dmDitherType As Long 'NT 4.0
dmReserved1 As Long 'NT 4.0
dmReserved2 As Long 'NT 4.0
dmPanningWidth As Long 'Win2000
dmPanningHeight As Long 'Win2000
dmPosition As PointL 'wr
 
End Type
 
 
Private Declare Function ChangeDisplaySettingsEx Lib "user32" Alias _
  "ChangeDisplaySettingsExA" _
(ByVal lpszDeviceName As Any, lpDevMode As Any, ByVal hWnd As Long, _
ByVal dwFlags As Long, lParam As Any) As Long
 
Private Sub Form_Load()
Dim DD As DISPLAY_DEVICE
Dim DevMo As DEVMODE
DD.cb = Len(DD)
 
 
DevMo.dmSize = Len(DevMo)
DevMo.dmFields = DM_POSITION
DevMo.dmPosition.x = 1400
DevMo.dmPosition.y = 0
result = ChangeDisplaySettingsEx("\\.\Display2", DevMo, 0, CDS_RESET, 0)
MsgBox "Ergebnis: " & result
 
 
End Sub
Zur Ergänzung:

Der folgende Code liefert als Ergebnis (result) Code 0 und ändert die Auflösung des Displays:
DevMo.dmSize = Len(DevMo)
DevMo.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevMo.dmPelsWidth = 1024
DevMo.dmPelsHeight = 768
result = ChangeDisplaySettingsEx("\\.\Display2", DevMo, 0, CDS_RESET, 0)
MsgBox "Ergebnis: " & result
der folgende Code liefert als result -2 (BADMODE - Auflösung nicht unterstützt) und nix passiert:
DevMo.dmSize = Len(DevMo)
DevMo.dmFields = DM_POSITION
DevMo.dmPosition.x = 1400
DevMo.dmPosition.y = 0
result = ChangeDisplaySettingsEx("\\.\Display2", DevMo, 0, CDS_RESET, 0)
MsgBox "Ergebnis: " & result
wo liegt der Fehler??
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Display Position des Zweit-Monitors ändern1.456tswimmer13.04.06 13:56
Re: Display Position des Zweit-Monitors ändern862ModeratorMartoeng13.04.06 19:05
Re: Display Position des Zweit-Monitors ändern694tswimmer19.04.06 22:13
Re: Display Position des Zweit-Monitors ändern760ModeratorMartoeng20.04.06 00:02

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel