![]() |
Definition von MONITORINFOEX falsch?
Beim Versuch, eine erweiterte Monitorinfo inklusive dem Devicenamen zu erhalten war ich lange erfolglos. Wie man sieht, hat die erweiterte Struktur genau ein Feld mit 32 Byte mehr als die "Kurzversion":
Delphi-Quellcode:
Beim Füllen von cbSize vor dem Aufruf von GetMonitorInfo habe ich SizeOf verwendet. Dabei ergibt tagMONITORINFOA = record cbSize: DWORD; rcMonitor: TRect; rcWork: TRect; dwFlags: DWORD; end; CCHDEVICENAME = 32; tagMONITORINFOEXA = record cbSize: DWORD; rcMonitor: TRect; rcWork: TRect; dwFlags: DWORD; szDevice: array[0..CCHDEVICENAME] of AnsiChar; end;
Delphi-Quellcode:
Da die Struktur aber maximal 72 Byte groß sein darf, lehnt GetMonitorInfo die Ausführung mit GetLastError 87 (Falscher Parameter) ab. Jetzt kann man natürlich einfach 4 abziehen um cbSize zu füllen, aber schön ist das nicht. Sollte die Record-Definition evtl. eher ein packed record sein?
SizeOf(TMonitorInfo) -> 40
SizeOf(TMonitorInfoEx) -> 76 |
Re: Definition von MONITORINFOEX falsch?
Ich würde eher vermuten, daß ein Array[0..32] of AnsiChar nicht 32 sondern 33 Byte groß ist und somit den Record wegen des Align auf 76 Byte bringt.
Bei meinem Delphi 2007 ist die Deklaration auch entsprechend:
Delphi-Quellcode:
tagMONITORINFOEXA = record cbSize: DWORD; rcMonitor: TRect; rcWork: TRect; dwFlags: DWORD; szDevice: array[0..CCHDEVICENAME - 1] of AnsiChar; end; |
Re: Definition von MONITORINFOEX falsch?
Das könnte es sein. Aber es MUSS 72 übergeben werden als cbSize, bei 73 gibt es den gleichen Fehler.
|
Re: Definition von MONITORINFOEX falsch?
Hi,
Zitat:
Zitat:
Welche Delphi Version nutzt Du? Das ganze ist im QC gemeldet für D5-D7, gefixt für D10 also Delphi 2006 (Link: ![]() Gruß Assertor |
Re: Definition von MONITORINFOEX falsch?
Ach, mein alter QC Eintrag. Ein schönes Beispiel wie lange QC für eine Fehlerbehebung braucht - obwohl man komplett korrigierten QC meldet. Copy & Paste dauert halt locker mal ein paar Jahre...
|
Re: Definition von MONITORINFOEX falsch?
Hi Muetze,
Zitat:
Außerdem fehlen mehrere Eskalationsstufen etc. pp. Aber da wird ja bei CG vieles bereits umstruktuiert. Mal sehen was irgendwann mal draus wird. Das es aber häufig keinen Zweck hat darauf zu hoffen, sieht man an jbg's notwendigen Werken. Gruß Assertor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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 by Thomas Breitkreuz