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?? |