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
Die Antwort kommt wohl etwas spät, aber vielleicht hilft es ja doch noch jemandem:
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;