Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auflösung des Bildschirms (aktives Form) (https://www.delphipraxis.net/123809-aufloesung-des-bildschirms-aktives-form.html)

ringli 9. Nov 2008 10:16


Auflösung des Bildschirms (aktives Form)
 
Mit folgendem Code kann ich die Auflösung des Monitors ermitteln auf dem sich eine Form grade befindet:
Delphi-Quellcode:
var
  TM : TMonitor;
begin
  TM := Screen.MonitorFromWindow(MainWindow.HWnd);
  MonWidth := TM.Width;
  MonHeight := TM.Height;
end;
Nun meine Frage: Wie kann ich das gleiche Ergebnis ohne zuhilfenahme der Unit "Forms" erreichen?

Hintergrund der Frage ist, das ich den Code in einer DLL benötige und sich die DLL dann mal eben von 136kB auf 439kB vergrößert sobald ich die Unit "Forms" einbinde. Habe auch schon versucht mir die benötigeten Teile aus der Unit "Forms" herauszukopieren, aber leider ist in dieser Unit alles so miteinander verwoben das ich es nicht hinbekommen habe. Natürlich habe ich auch schon hier im Forum und bei Google gesucht aber alles was ich bisher gefunden habe nutzt die "Forms"-Unit. :(

[EDIT]
So hatte ich es auch schon versucht, aber leider wird mir dann immer nur die Auflösung des primären Bildschirms zurückgegeben:
Delphi-Quellcode:
DC := GetDC(MainWindow.HWnd);
MonWidth := GetDeviceCaps(DC, HORZRES);
MonHeight := GetDeviceCaps(DC, VERTRES);
ReleaseDC(MainWindow.HWnd, DC);
[EDIT2]
Sehe grade das ich vergessen habe zu erwähnen das das Ganze für den Multimonitorbetrieb gedacht ist. Nur als Hinweis falls es aus meiner Beschreibung nicht klar hervorgeht.

Hawkeye219 9. Nov 2008 11:17

Re: Auflösung des Bildschirms (aktives Form)
 
Hallo ringli,

wenn du die Unit MultiMon in dein Projekt einbindest, kannst du über die Funktionen MonitorFromWindow und GetMonitorInfo die gewünschten Informationen abrufen.

Gruß Hawkeye

ringli 9. Nov 2008 15:31

Re: Auflösung des Bildschirms (aktives Form)
 
Danke für deine Antwort, Hawkeye. :)

Habe es jetzt so gelöst:
Delphi-Quellcode:
uses
  MultiMon, ...

var
  HM : HMONITOR;
  MI : TMonitorInfoW;
begin
  MI.cbSize := SizeOf(TMonitorInfoW);
  HM := MultiMon.MonitorFromWindow(MainWnd.HWnd, MONITOR_DEFAULTTONEAREST);
  MultiMon.GetMonitorInfoW(HM, @MI);
  .
  .
  .
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz