AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Systemparameters(Info) versus SystemMetrics

Systemparameters(Info) versus SystemMetrics

Ein Thema von Mattze · begonnen am 24. Jun 2015 · letzter Beitrag vom 24. Jun 2015
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

Systemparameters(Info) versus SystemMetrics

  Alt 24. Jun 2015, 10:35
Hallo,

welche Betiehung besteht zwischen den SystemParameters (auszulesen mit Systemparametersinfo)
und den Systemmetricen (auszulesen mit Getsystemmetrics)
Z. Bsp.:
SPI_WORKAREA für SystemParametersInfo und SM_CXSCREEN und SM_CYSCREEN für GetSysteMetrics.
Das Ergebnis ist bei beiden gleich.
Nur: Der eine sagt "Arbeitsbereich", der andere sagt "virtueller Bildschirm" und bietet noch mehr Daten für den Bildschirm (nutzbarer Bereich usw.).

(Habe ich noch nie gebraucht. Deshalb ist es mir erst jetzt auufgefallen.)

Gruß
Mattze
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: Systemparameters(Info) versus SystemMetrics

  Alt 24. Jun 2015, 12:06
SPI_WORKAREA für SystemParametersInfo und SM_CXSCREEN und SM_CYSCREEN für GetSysteMetrics.
Das Ergebnis ist bei beiden gleich.
SPI_GETWORKAREA ausgelesen mit SystemParametersInfo() gibt Dir die Koordinaten des Arbeitsbereiches als Rect des primären Bildschirms zurück.

SM_CXSCREEN und SM_CYSCREEN ausgelesen mit GetSysteMetrics() gibt Dir die Höhe bzw. Breite als Integer des primären Bildschirms an.

Die Werte unterscheiden sich demnach, wie die Einstellungen Deiner Taskbar sind.

Nehmen wir als Beispiel eine XP-Rechner mit Standart-Taskleiste, welche unten fixiert ist an.

Wenn Du nun einen Bildschirm mit einer Auflösung von 1024x768 besitzt, dann gibt Dir SM_CYSCREEN = 768 zurück wärend bei Rect.Bottom (738) - Rect.Top (0) = 738 herauskommt.

Hast Du die Taskleiste oben fixiert, dann sieht das anderst aus:

CYSCREEN ist immer noch 768
Rect.Top ist nun nicht mehr 0, sondern 30 und Rect.Bottom wäre 768.

SPI_GETWORKAREA gibt Dir also Informationen über den verfügbaren Arbeitsbereich in Koordinaten und CYSCREEN und CXSCREEN jeweils nur Informationen über den Bildschirm.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Systemparameters(Info) versus SystemMetrics

  Alt 24. Jun 2015, 12:27
Hallo

1. Bei mir sind beide Werte gleich. Erst SM_CXFULLSCREEN und SM_CYFULLSCREEN sind anders. Das heißt dann auch "nutzbarer Bildschirm". Evtl. wird da die Taskbar berücksichtigt. (SM_CYFULLSCREEN ist kleiner als SM_CYSCREEN.).
2. Das ist keine Antwort. Es geht nicht um dieses eine BEISPIEL, sondern wo bei Systemparameters und Systemmetrics prinzipiell der Unterschied ist.

Gruß
Mattze
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#4

AW: Systemparameters(Info) versus SystemMetrics

  Alt 24. Jun 2015, 14:31
1. Bei mir sind beide Werte gleich.
Das hängt mit Deinen Systemeinstellungen zusammen.

Aus Deiner Antwort kann ich zum Beispiel herauslesen, dass Deine Taskleiste so eingestellt ist, dass das Häckchen bei "Taskleiste immer im Vordergrund halten" NICHT gesetzt ist.

Setze einmal dort Dein Häckchen und Du wirst sehen, dass es plötzlich andere Werte sind, welche Du von SystemParametersInfo(SPI_GETWORKAREA,0,@lRect,0); bekommst.


2. Das ist keine Antwort. Es geht nicht um dieses eine BEISPIEL, sondern wo bei Systemparameters und Systemmetrics prinzipiell der Unterschied ist.
Hättest Du richtig gelesen, dann hättest Du auch die Antwort gefunden.

Es sind zwei vollkommen verschiedene Funktionen, welche verschiedene Rückgabe-Typen und Werte je nach verwendeten Parameter zurückliefern.

So gibt GetSystemMetrics() IMMER direkt einen Integer zurück, welcher den Wert der Abfrage darstellt.
SystemParametersInfo() gibt lediglich einen Boolean-Wert zurück. Die abgefragten Werte hingegen in den verwendeten Parameterstrukturen.

Ausserdem lässt sich mit SystemParametersInfo() das System konfigurieren.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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