![]() |
Re: Monitor X per ChangeDisplaySettingsEx (A) akivieren ?
Moin!
Ist \\.\DISPLAY2 auch der 2. Monitor/Grafikkartenausgang und nicht vielleicht der TV Out Ausgang? Schonmal die Bits zu den Einträgen angeschaut?
Delphi-Quellcode:
Mach mal ein Testprogramm und pack den Aufruf da mal mit rein und schau mal nach welche Flags danach in der lbMonitorList ListBox stehen. Das wäre so dies was mir denn dazu noch einfällt. Eine Fehlermeldung kommt auch nicht (so ala falsche Flags o.ä.)??
Procedure TForm1.FillMonitorList;
Var Cntr : Cardinal; Info : TDisplayDevice; AdapterName : PChar; OldPos : Integer; Const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = $00000001; DISPLAY_DEVICE_MULTI_DRIVER = $00000002; DISPLAY_DEVICE_PRIMARY_DEVICE = $00000004; DISPLAY_DEVICE_MIRRORING_DRIVER = $00000008; DISPLAY_DEVICE_VGA = $00000010; Begin lbMonitorList.Items.Add('------------------ Displays ----------------'); Cntr := 0; Info.cb := SizeOf(Info); While EnumDisplayDevices(Nil, Cntr, Info, 0) Do Begin lbMonitorList.Items.Add('* Device '+IntToStr(Cntr)+':'); lbMonitorList.Items.Add(' DeviceName : '+Info.DeviceName); lbMonitorList.Items.Add(' DeviceString: '+Info.DeviceString); OldPos := lbMonitorList.Items.Add(' StateFlags: '); If ( Info.StateFlags And DISPLAY_DEVICE_ATTACHED_TO_DESKTOP ) = DISPLAY_DEVICE_ATTACHED_TO_DESKTOP Then lbMonitorList.Items.Add(' + Display Device Attached To Desktop') Else lbMonitorList.Items.Add(' - Display Device Attached To Desktop'); If ( Info.StateFlags And DISPLAY_DEVICE_MULTI_DRIVER ) = DISPLAY_DEVICE_MULTI_DRIVER Then lbMonitorList.Items.Add(' + Display Device Multi Driver') Else lbMonitorList.Items.Add(' - Display Device Multi Driver'); If ( Info.StateFlags And DISPLAY_DEVICE_PRIMARY_DEVICE ) = DISPLAY_DEVICE_PRIMARY_DEVICE Then lbMonitorList.Items.Add(' + Display Device Primary Device') Else lbMonitorList.Items.Add(' - Display Device Primary Device'); If ( Info.StateFlags And DISPLAY_DEVICE_MIRRORING_DRIVER ) = DISPLAY_DEVICE_MIRRORING_DRIVER Then lbMonitorList.Items.Add(' + Display Device Mirroring Driver') Else lbMonitorList.Items.Add(' - Display Device Mirroring Driver'); If ( Info.StateFlags And DISPLAY_DEVICE_VGA ) = DISPLAY_DEVICE_VGA Then lbMonitorList.Items.Add(' + Display Device VGA') Else lbMonitorList.Items.Add(' - Display Device VGA'); AdapterName := StrAlloc(SizeOf(Info.DeviceName)); StrCopy(AdapterName, Info.DeviceName); EnumDisplayDevices(AdapterName, 0, Info, 0); lbMonitorList.Items.Insert(OldPos, ' Monitorname : ' + Info.DeviceString); StrDispose(AdapterName); Inc(Cntr); End; End; MfG Muetze1 |
Re: Monitor X per ChangeDisplaySettingsEx (A) akivieren ?
vielen dank für your code sample.
please note that while trying to set a negative position for my monitor lDevMode.dmPosition.x := -1280; I had to change the TPOINTL record to TPOINTL = Packed Record x : Integer; y : Integer; End; thanks again. |
Re: Monitor X per ChangeDisplaySettingsEx (A) akivieren ?
Zitat:
|
Re: Monitor X per ChangeDisplaySettingsEx (A) akivieren ?
Zitat:
Bei delphi 2009 bringt diese Zeile lRes := ChangeDisplaySettingsEx( PChar('\\.\DISPLAY2'), TDevMode(lDevMode), 0, CDS_UPDATEREGISTRY, 0); einen Typenumwandlungsfehler, wie muss es denn geändert werden das es auch mit delphi 2009 geht? Martin |
AW: Re: Monitor X per ChangeDisplaySettingsEx (A) akivieren ?
Zitat:
Das Record TPrinterMonitor ist ja nicht viel mehr als eine Erweiterung von Windows.TDevMode. Wenn man nun den ganzen Verweisen folgt, sieht man, dass TDevMode in älteren Delphi-Versionen letztendlich auf TDeviceModeA verweist. Durch die ganze Unicode-Umstellung ab Delphi 2009 verweist es nun aber auf TDeviceModeW. Man muss also folgende Zeilen ändern, um TDevModeA_new zuweisungskompatibel zu TDeviceModeW zu machen:
Delphi-Quellcode:
TDevModeW_new = packed record // Name wurde der Konsistenz halber geändert, ist aber nicht unbedingt nötig
dmDeviceName: array[0..CCHDEVICENAME - 1] of WideChar; ... dmFormName: array[0..CCHFORMNAME - 1] of WideChar; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz